Companies

POST
/v1/companies/resolve-domain

Researches a company name with optional country and article context. No domain is required. This does not create or enrich a company identity. Exact repeats of a normalized request in the same organization can reuse a resolved result for seven days. The cache is not shared across organizations. Changes to the company name, country, context or resolver version cause a cache miss. Other outcomes are not cached. Raw input context is not stored in the cache, and cache entries do not create a canonical company identity.

Resolves the company behind the supplied name. For a brand or product, returns its operating company and that company's primary domain, which may also host its main product. About, investor-relations and regional sites are evidence, not automatic replacements for the primary domain. A named company or subsidiary is not replaced by its parent group. Candidate companyName identifies the resolved company; matchReason explains any brand or product relationship. Parent-company details are not returned. Optional companyInfoUrl is an official About or company-overview page fetched during the run, possibly on a different domain. It is null when unavailable; research is not extended solely to populate it. Optional companyDescription summarizes each candidate's business from captured sources. The agent is guided to use at most five concrete sentences, without an enforced length limit. It is null when unsupported. Input context alone is not verified fact, and research is not extended solely to write a description.

Branch on status:

  • resolved: one supported candidate, with its hostname in domain.
  • ambiguous: two or three plausible candidates; domain is null. Supply more context rather than selecting the first candidate.
  • not_found: completed research found no supported domain. This does not mean that the company has no website.
  • incomplete: research could not establish a result within the available tools or budget. domain is null and candidates is empty.

Evidence URLs come from sources captured during the original research. They support the agent's match assessment, not a guarantee of website availability. Evidence can be empty if no citation survives source validation. Citation loss alone does not fail a resolution; unavailable citations are omitted. Parent, sponsor and similarly named companies are not interchangeable. Provide country and article context for short or ambiguous company names.

The synchronous request has a 240-second deadline. The workflow has a 215-second execution limit, leaving time for admission, billing, workflow startup and result delivery. A timeout returns 408, not not_found. Reaching a wall-clock deadline does not automatically produce incomplete. Provider or execution failures return 500. Each page fetch has a 60-second total limit so a slow website does not consume the entire request. The agent can use another source or return incomplete when research cannot finish.

Cache hits are free and do not start research. On a cache miss, completed resolved, ambiguous and not_found results cost 0.1 credits per request. incomplete results and errors are free. Insufficient credits return 402 before research starts on a miss.

By default, each organization can run up to 10 resolutions concurrently, shared across all its API keys and MCP calls. This limit is configurable per deployment. Requests above this limit return 429 with Retry-After before research starts or credits are charged.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

companyName*string

Company, brand or product name to resolve to its operating company. Include the legal suffix when known.

Length1 <= length <= 200
countryCode?string

Optional ISO 3166-1 alpha-2 country hint, normalized to uppercase.

Match^[A-Za-z]{2}$
context?string

Optional article excerpt or identity details used to distinguish namesakes.

Lengthlength <= 10000

Response Body

application/json

curl -X POST "https://example.com/v1/companies/resolve-domain" \  -H "Content-Type: application/json" \  -d '{    "companyName": "NT1 Pty Ltd",    "countryCode": "AU",    "context": "Australian mineral exploration company in the Plutonian II transaction."  }'
{  "status": "resolved",  "domain": "string",  "reason": "string",  "candidates": [    {      "companyName": "string",      "companyDescription": "string",      "legalName": "string",      "domain": "string",      "companyInfoUrl": "http://example.com",      "countryCode": "string",      "matchReason": "string",      "evidence": [        {          "url": "http://example.com",          "title": "string"        }      ]    }  ]}
POST
/v1/companies/search

Returns up to 50 companies that match the given filter criteria.

Results are cached for 5 minutes per unique filter. Identical filters will return cached data during this window.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

filter*

Criteria for filtering companies

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/companies/search" \  -H "Content-Type: application/json" \  -d '{    "filter": {      "industries": [        "software development"      ],      "sizes": [        "51-200",        "201-500"      ],      "location": {        "countryCodes": [          "US"        ]      }    }  }'
{  "companies": [    {      "id": "string",      "domain": "string",      "name": "string",      "handle": "string",      "website": "string",      "industry": "string",      "size": "string",      "type": "string",      "founded": 0,      "city": "string",      "state": "string",      "countryCode": "string",      "enrichedData": {        "liId": 0,        "liFollowers": 0,        "liFoundEmployees": 0      }    }  ],  "total": 0}

On this page