API Changelog

API Changelog

April 2026

Breaking: /v1/companies renamed to /v1/accounts

The companies endpoints have been renamed to accounts across the entire REST surface. The resource model is unchanged — only the terminology is updated to match the new product language.

URL changes:

  • GET /v1/companiesGET /v1/accounts

  • GET /v1/companies/:idGET /v1/accounts/:id

Response payload changes:

  • List response wrapper renamed: data.companies[]data.accounts[]

  • List item fields renamed: companyNamename, companyIndustryindustry, companyWebsitewebsite, companyStatusstatus, prospectCountopportunityCount

  • Detail response wrapper renamed: data.companydata.account

Query parameter changes (GET /v1/accounts):

  • companyName filter renamed to name

  • New optional industry filter

  • status filter accepts ACTIVE | INACTIVE | ARCHIVED (defaults to ACTIVE)

  • sortBy options are name or createdAt (default name, ascending)

Migration: Rewrite URLs from /v1/companies to /v1/accounts, rename company* response fields to their account equivalents, and update any sortBy=companyName sort values to sortBy=name.

Breaking: /v1/prospects endpoints removed

The prospects endpoints (GET /v1/prospects, GET /v1/prospects/:id) have been removed. Prospect-level data is now served through the account and opportunity resources.

Migration:

  • To list accounts with activity → use GET /v1/accounts (includes opportunityCount) and drill into GET /v1/accounts/:id.

  • To list buying opportunities → use GET /v1/opportunities with filters such as accountId, solutionId, status, country, minConvictionScore.

  • To retrieve signal intelligence → use GET /v1/opportunities/:id, which returns the related signal matches.

Breaking: prospectId removed from opportunity filters

GET /v1/opportunities no longer accepts prospectId, companyId, or domainId filters. Use accountId and solutionId instead.

New: accountId filter on /v1/opportunities

GET /v1/opportunities now accepts an accountId (UUID) filter to list all opportunities for a single account.

February 2026

Breaking: Prospect endpoints restructured

The prospect endpoints have been completely restructured for consistency and simplicity.

Removed endpoints:

  • GET /v1/prospects/{name} (lookup by company name) — removed entirely

  • GET /v1/prospects/by-id/{id}URL changed (see below)

New endpoint URL:

  • GET /v1/prospects/:id replaces both /v1/prospects/{name} and /v1/prospects/by-id/{id}

Migration:

  • If you used GET /v1/prospects/{name} to get prospect details by company name: first call GET /v1/prospects?companyName=... to find matching prospects and their IDs, then call GET /v1/prospects/:id to get the full detail (including signal intelligence).

  • If you used GET /v1/prospects/by-id/{id}, change the URL to GET /v1/prospects/:id (same ID format, accepts both prospect-{uuid} and plain {uuid}).

  • Signal filters (signalContent, evidenceKeywords, signalCategories, signalSourceTypes) are now available directly on GET /v1/prospects as optional parameters.

Breaking: Prospect detail response shape changed

The prospect detail endpoint (GET /v1/prospects/:id) now returns a single prospect object instead of a prospects array.

Before:

JSON
{
  "success": true,
  "data": {
    "prospects": [{ "prospectId": "...", ... }],
    "totalCount": 1
  }
}

After:

JSON
{
  "success": true,
  "data": {
    "prospect": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "companyName": "Acme Corp",
      "signalIntelligence": [...]
    }
  },
  "timestamp": "2026-02-19T10:30:00.000Z"
}

Migration: Change response.data.prospects[0] to response.data.prospect.

Breaking: prospectId renamed to id in prospect responses

The prospectId field has been renamed to id. The value is now a plain UUID (without the prospect- prefix).

Affected endpoints:

  • GET /v1/prospects

  • GET /v1/prospects/:id

Migration: Replace prospectId with id in your code. The GET /v1/prospects/:id endpoint accepts both plain UUID and prospect-{uuid} format.

Breaking: Removed legacy fields from prospect responses

The following fields have been removed from all prospect responses:

  • urgencyScore, maturityScore, intentScore, intentFrequency

  • buyingJourneyPhase

  • whyThisMattersNow, whatWeveSeenSoFar, momentumSnapshot

  • averageUrgencyScore (from list response)

The companyId and buyingJourneyPhase query filters and urgencyScore sortBy option have also been removed. Default sort is now lastActivity.

Breaking: Removed fields from domains list response

  • context field removed from the response envelope

  • description field removed from domain objects

New: Companies, Solutions, and Opportunities endpoints

Six new endpoints:

  • GET /v1/companies — list and filter companies

  • GET /v1/companies/:id — company details with associated prospects

  • GET /v1/solutions — list and filter solutions (detection patterns)

  • GET /v1/solutions/:id — solution details

  • GET /v1/opportunities — list and filter opportunities

  • GET /v1/opportunities/:id — opportunity details with signal matches

New: Pagination in all list responses

All list endpoints now include a pagination object:

JSON
{
  "data": {
    "prospects": [...],
    "totalCount": 150,
    "pagination": {
      "offset": 0,
      "limit": 20,
      "totalCount": 150,
      "hasMore": true
    }
  }
}

New: opportunities in prospect responses

Prospect responses now include an opportunities array with open opportunities per solution (highest conviction score each).

Fix: GET /v1/domains now accepts query parameters

The domains list endpoint now accepts includeArchived, limit, and offset query parameters.

Fix: GET /v1/prospects/:id returns proper 404

Previously returned 500 for non-existent prospect IDs. Now correctly returns 404.