Apollo.io · AsyncAPI Specification

Apollo Io Webhooks

Version

View Spec View on GitHub Sales IntelligenceProspectingEngagementB2B DataEnrichmentCRMSales EngagementConversation IntelligenceMCPSoftware-as-a-ServiceAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://docs.apollo.io/reference/poll-webhook-result
derived_from: openapi/_original/apollo-io-apollo-rest-api-openapi.json
spec_type: Webhooks
asyncapi_published: false
note: >-
  Apollo publishes no AsyncAPI document and no general event-subscription surface — there is no
  endpoint to register a persistent webhook for record or engagement events. What Apollo does ship
  is a per-request asynchronous callback on the two people-enrichment operations: pass a
  webhook_url on the request and Apollo POSTs the completed result to it, returning a request_id
  that can also be polled. Retries are at Apollo's discretion, so receivers must be idempotent.
  This is the whole documented event surface; nothing here is inferred.
surface:
  style: per-request-callback
  registration: inline (webhook_url parameter on the enrichment request)
  delivery: HTTP POST from Apollo to the caller-supplied HTTPS URL
  retries: >-
    Apollo may retry a callback. Apollo's own guidance is that the receiving endpoint must be
    idempotent so duplicate payloads are safe.
  security: >-
    The receiver must be publicly reachable over HTTPS. Apollo documents no signing secret, no
    signature header and no mTLS option for callback verification.
  polling_fallback:
    operation: poll-webhook-result
    path: GET /webhook_result/{request_id}
    retention_days: 30
    pending: 404 with error_code result_pending and a retry_after_seconds value — wait, then poll again
    terminal:
      - {error_code: request_id_unknown, status: 404, meaning: request_id was never issued or is mistyped}
      - {error_code: request_id_expired, status: 410, meaning: result aged out of the 30-day window}
      - {error_code: invalid_request_id, status: 400, meaning: request_id is not a valid signed 64-bit integer}
events:
  - name: people-enrichment.completed
    trigger: POST /people/match with webhook_url set
    operation: people-enrichment
    file: openapi/apollo-io-enrichment-api-openapi.yml
    payload: The enriched person record, identical in shape to the synchronous 200 response.
  - name: bulk-people-enrichment.completed
    trigger: POST /people/bulk_match with webhook_url set
    operation: bulk-people-enrichment
    file: openapi/apollo-io-enrichment-api-openapi.yml
    payload: The enriched person records for the batch (up to 10 per request).
event_count: 2
not_found:
  - {path: 'https://docs.apollo.io/reference/webhooks', status: 404, note: 'A webhooks reference page no longer exists on the docs host.'}
  - {path: 'https://docs.apollo.io/asyncapi.yaml', status: 404}