Seamless.AI · AsyncAPI Specification
Seamless Ai Webhooks
Version
View Spec
View on GitHub
B2BContact DataSales IntelligenceProspectingLead GenerationCRM EnrichmentData EnrichmentMCPAgentsSales AutomationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-14'
method: searched
source: https://docs.seamless.ai/receive-research-results-with-webhooks
spec_type: none
asyncapi_published: false
asyncapi_note: >-
Seamless.AI publishes no AsyncAPI document. Probed /asyncapi.yaml and /asyncapi.json on
docs.seamless.ai and api.seamless.ai and checked the SeamlessAI GitHub org (2 public repos,
neither an event spec). The provider does document a real webhook surface, captured below as a
Webhooks catalog. No AsyncAPI is fabricated.
description: >-
Seamless.AI delivers completed enrichment results by webhook as the push alternative to polling
the research endpoints. Subscriptions are configured in the app, not by API.
transport: https
delivery: at-least-once
delivery_note: >-
A non-2xx response is treated as a delivery failure and "may" be retried. The provider does not
publish a retry schedule, a maximum attempt count, or a dead-letter behaviour.
subscription:
managed_by: dashboard
url: https://login.seamless.ai/settings/webhooks
api_manageable: false
note: >-
There is no REST or MCP operation to create, list or delete a webhook. Endpoints and the
shared secret are configured by a human in Settings -> Webhooks.
requirements:
- Endpoint must be publicly reachable over HTTPS. Localhost and private IPs cannot receive deliveries.
- Endpoint must accept POST with a JSON body.
- Endpoint must return a 2xx status after processing.
security:
scheme: shared-secret-header
header: x-seamless-webhook-secret
signature: false
hmac: false
timestamp: false
replay_protection: false
declared_in_openapi: true
openapi_scheme_name: webhookSecret
note: >-
Verification is a plain equality check against a secret configured in the dashboard. There is
no HMAC over the payload and no timestamp, so a receiver cannot detect replay and the secret
is exposed to anyone who can read the request. Compare in constant time and treat the secret
as a bearer credential.
event_count: 2
events:
- name: company-researched
fires_when: Company research completes.
payload: Company object, matching the Company Research response in the public API reference.
correlation_field: apiResearchId
correlation_note: >-
apiResearchId on the payload equals the requestId returned by POST /companies/research.
Use it to match a delivery to an in-flight job.
example_fields: [name, domain, apiResearchId, phones, staffCountRange, revenueRange, linkedInProfileUrl]
triggered_by: researchCompanies
schema: json-schema/seamless-ai-company-schema.json
- name: contact-researched
fires_when: Contact research completes.
payload: Contact object, matching the Contact Research response in the public API reference.
correlation_field: apiResearchId
example_fields: [fullName, title, company, email, apiResearchId, phones, linkedInProfileUrl]
triggered_by: researchContacts
schema: json-schema/seamless-ai-contact-schema.json
receiver_examples:
languages: [javascript, python]
source: https://docs.seamless.ai/receive-research-results-with-webhooks
related:
- https://docs.seamless.ai/use-cases/real-time-enrichment-with-webhooks
- conventions/seamless-ai-conventions.yml
- errors/seamless-ai-problem-types.yml
x-evidence:
- url: https://docs.seamless.ai/receive-research-results-with-webhooks.md
http_status: 200
fetched: '2026-08-14'
- url: https://docs.seamless.ai/asyncapi.yaml
http_status: 404
fetched: '2026-08-14'