Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.seamless.ai/llms.txt

Use this file to discover all available pages before exploring further.

Seamless supports two main integration patterns. In the search-and-research workflow, you search for a company or contact, submit it for enrichment, and receive the completed result — either pushed to your endpoint via webhooks or retrieved on demand by polling. If you already have records in your org, you can skip research and pull existing data directly using the org data endpoints. Choosing the right path depends on whether you need real-time enrichment, asynchronous processing, or bulk retrieval of existing data.
1

Authenticate

Create an API key under Settings → Public API, or complete OAuth. Use Token for API keys and Authorization: Bearer for OAuth access tokens.
2

Search for a company

Call Search companies with filters such as companyName, domain, or industry. The response includes a searchResultId for each match.
POST https://api.seamless.ai/api/client/v1/search/companies
3

Request research

Pass one or more searchResultIds to Research companies. The API queues each record for enrichment and returns a requestId per record.
POST https://api.seamless.ai/api/client/v1/companies/research
4

Receive results

Choose how you want to get completed results:
GET https://api.seamless.ai/api/client/v1/companies/research/poll?requestIds=YOUR_REQUEST_ID

Retrieve existing org records

If you have already researched companies or contacts and want to retrieve them without starting a new research request, use the org data endpoints directly:
  • Get companies — retrieve enriched company records already in your org.
  • Get contacts — retrieve enriched contact records already in your org.
Use the org data endpoints for bulk exports or when syncing Seamless data into a CRM or data warehouse. They return records you’ve already paid credits to research, so no additional credits are consumed.If you already have company domains or contact names from another system, you can skip search and call Research without search to enrich directly.

Webhooks vs. polling

Both delivery methods give you the same enriched data. The right choice depends on your infrastructure:
WebhooksPolling
How it worksSeamless pushes results to your HTTPS endpointYou call the poll endpoint repeatedly
Best forEvent-driven architectures, real-time pipelinesScripts, notebooks, simple integrations
RequiresA publicly reachable HTTPS endpointNothing additional
LatencyNear-instant on completionDepends on your poll interval
You can use both methods in the same integration. Webhooks handle the happy path; polling acts as a fallback for records your webhook missed.

Troubleshooting

If you’re integrating for the first time, follow the First Request guide. It walks through authentication, a company search, a research submission, and polling for results — end to end — with code samples in curl, Python, and Node.js.If you already have searchResultIds from a previous search, you can skip to the research step. If you already have requestIds from a previous research submission, you can skip directly to polling or check your webhook logs.
Start with polling. It requires no additional infrastructure — just call the poll endpoint in a loop until status is done. Once your integration is working, migrate to webhooks if you need lower latency or want to avoid polling overhead.To set up webhooks, see Receive research results with webhooks. You’ll need a publicly reachable HTTPS endpoint that can accept POST requests from Seamless.
An error poll status means Seamless could not process the record. The most common causes are:
  • Insufficient credits — check your credit balance in Settings → Billing.
  • License restrictions — your API key may not have permission to research this record type. Contact support to review your license.
  • Invalid searchResultId — confirm the ID came from a successful search response and hasn’t expired.
If you’re using webhooks, verify that your endpoint is publicly reachable and returns a 2xx status on receipt. Check your webhook delivery logs for failed attempts.If you’re polling, confirm you’re using the correct requestId and that you’re polling the right endpoint (companies vs. contacts). A researching status means the request is still in progress — continue polling.