Seamless.AI · Authentication Profile

Seamless Ai Authentication

Authentication

Seamless.AI secures its APIs with apiKey and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

B2BContact DataSales IntelligenceProspectingLead GenerationCRM EnrichmentData EnrichmentMCPAgentsSales Automation
Methods: apiKey, oauth2 Schemes: 3 OAuth flows: authorizationCode API key in: header

Security Schemes

OAuth2 oauth2
· flows: authorizationCode
ApiKeyAuth apiKey
· in: header (Token)
webhookSecret apiKey
· in: header (x-seamless-webhook-secret)

Source

Authentication Profile

Raw ↑
generated: '2026-08-14'
method: searched
source: openapi/seamless-ai-company-research-api-openapi.yml, openapi/seamless-ai-company-search-api-openapi.yml,
  openapi/seamless-ai-contact-research-api-openapi.yml, openapi/seamless-ai-contact-search-api-openapi.yml,
  openapi/seamless-ai-oauth-api-openapi.yml, openapi/seamless-ai-org-companies-api-openapi.yml, openapi/seamless-ai-org-contacts-api-openapi.yml
summary:
  types:
  - apiKey
  - oauth2
  api_key_in:
  - header
  oauth2_flows:
  - authorizationCode
  oauth2_scopes:
  - publicAPI.v1.all
  - mcp.all
  surfaces:
  - rest
  - mcp
schemes:
- name: OAuth2
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: https://login.seamless.ai/oauth/authorize
    tokenUrl: https://api.seamless.ai/api/client/v1/oauth/accessToken
    scopes: 0
  sources:
  - openapi/seamless-ai-company-research-api-openapi.yml
  - openapi/seamless-ai-company-search-api-openapi.yml
  - openapi/seamless-ai-contact-research-api-openapi.yml
  - openapi/seamless-ai-contact-search-api-openapi.yml
  - openapi/seamless-ai-oauth-api-openapi.yml
  - openapi/seamless-ai-org-companies-api-openapi.yml
  - openapi/seamless-ai-org-contacts-api-openapi.yml
  docs: https://docs.seamless.ai/authentication/oauth
  scopes_in_spec: 0
  real_scope: publicAPI.v1.all
  scope_note: 'The spec declares scopes: {} . The real scope, publicAPI.v1.all, is published only in prose.
    See scopes/seamless-ai-scopes.yml.'
  client_authentication: client_secret
  pkce: false
  token_response_fields:
  - access_token
  - refresh_token
  - expires_at
- name: ApiKeyAuth
  type: apiKey
  in: header
  parameter: Token
  description: API key passed via the Token header.
  sources:
  - openapi/seamless-ai-company-research-api-openapi.yml
  - openapi/seamless-ai-company-search-api-openapi.yml
  - openapi/seamless-ai-contact-research-api-openapi.yml
  - openapi/seamless-ai-contact-search-api-openapi.yml
  - openapi/seamless-ai-oauth-api-openapi.yml
  - openapi/seamless-ai-org-companies-api-openapi.yml
  - openapi/seamless-ai-org-contacts-api-openapi.yml
  header_value: the raw API key, with no scheme prefix
  created_at: https://login.seamless.ai/settings/public-api
  docs: https://docs.seamless.ai/authentication/api-keys
  also_valid_on_mcp: true
- name: webhookSecret
  type: apiKey
  in: header
  parameter: x-seamless-webhook-secret
  description: Webhook secret that you can use to validate the request is originated by Seamless
  sources:
  - openapi/seamless-ai-company-research-api-openapi.yml
  - openapi/seamless-ai-company-search-api-openapi.yml
  - openapi/seamless-ai-contact-research-api-openapi.yml
  - openapi/seamless-ai-contact-search-api-openapi.yml
  - openapi/seamless-ai-oauth-api-openapi.yml
  - openapi/seamless-ai-org-companies-api-openapi.yml
  - openapi/seamless-ai-org-contacts-api-openapi.yml
  direction: inbound
  role: Shared secret Seamless.AI sends on webhook deliveries so the receiver can verify origin.
  hmac: false
  see_also: asyncapi/seamless-ai-webhooks.yml
docs: https://docs.seamless.ai/authentication/api-keys
sources:
- https://docs.seamless.ai/authentication/api-keys
- https://docs.seamless.ai/authentication/oauth
- https://docs.seamless.ai/mcp/authentication
- https://mcp.seamless.ai/.well-known/oauth-authorization-server
- openapi/_original/seamless-ai-public-api-openapi-original.json
note: 'Upgraded from derived to searched against the provider''s own authentication pages. Seamless.AI
  runs TWO independent auth surfaces: the REST Public API v1 (API key in a `Token` header, or OAuth 2.0
  authorization-code with a client_secret against login.seamless.ai) and the MCP server (OAuth 2.1 with
  PKCE S256, dynamic client registration, no client_secret, against mcp.seamless.ai). The same API key
  also works on MCP. The docs warn explicitly that the API key header (`Token`) and the OAuth header (`Authorization:
  Bearer`) must not be mixed on one request. `webhookSecret` is not a caller credential -- it is the inbound
  shared secret Seamless sends to YOUR endpoint on a webhook delivery.'
mcp_authentication:
  surface: https://mcp.seamless.ai/mcp
  protocol: OAuth 2.1
  authorization_endpoint: https://mcp.seamless.ai/mcp/authorize
  token_endpoint: https://mcp.seamless.ai/mcp/token
  registration_endpoint: https://mcp.seamless.ai/mcp/register
  revocation_endpoint: https://mcp.seamless.ai/mcp/revoke
  grant_types:
  - authorization_code
  - refresh_token
  code_challenge_methods:
  - S256
  token_endpoint_auth_methods:
  - none
  dynamic_client_registration: true
  scopes:
  - mcp.all
  discovery:
  - /.well-known/oauth-authorization-server
  - /.well-known/oauth-protected-resource
  alternate: API key via the Token header
  verified: Anonymous POST to https://mcp.seamless.ai/mcp returned HTTP 401 with a WWW-Authenticate Bearer
    challenge carrying resource_metadata and scope="mcp.all" (2026-08-14).
entitlement_gate:
  rest: HTTP 422 code=missingLicense when the org has no active Public API license.
  mcp: '"MCP Server access is not enabled for your account"; per-domain tool visibility further filtered
    by the Connect license.'
  note: Authentication succeeding does not mean authorization succeeds. Both surfaces gate on a license
    separate from the credential.