Coresignal · AsyncAPI Specification

Coresignal Webhooks

Version

View Spec View on GitHub Agentic SearchB2B DataCompaniesCompany DataData as a ServiceElasticsearchEmployee DataEmployeesEnrichmentFirmographicsJob PostingsJobLead GenerationPeople DataSales IntelligenceTalent IntelligenceWeb DataAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://docs.coresignal.com/api-introduction/webhooks,
  https://docs.coresignal.com/api-introduction/webhooks/employee-webhooks,
  https://docs.coresignal.com/api-introduction/webhooks/experience-webhooks,
  https://docs.coresignal.com/api-introduction/webhooks/subscription-management,
  https://docs.coresignal.com/api-introduction/webhooks/subscription-simulation
spec_type: none
asyncapi_published: false
note: >-
  Coresignal publishes NO AsyncAPI document — /asyncapi.yaml and /asyncapi.json are absent from every
  host and neither the docs nor the GitHub org carry an event spec. It DOES operate a real,
  well-documented webhook surface, captured here as a webhook catalog. The surface is unusual and
  worth stating plainly: these are CHANGE NOTIFICATIONS, not data deliveries. A notification carries
  an id and a status only; the changed record must be retrieved with a separate, credit-charged
  Collect or Bulk Collect call. Notifications themselves cost no credits.
delivery:
  transport: HTTPS POST to a subscriber-supplied callback URL
  batching: >-
    Payloads are JSON ARRAYS — one delivery carries many changed profiles, not one event per request.
  cadence:
    - source: Base Employee API
      frequency: daily
    - source: Clean Employee API
      frequency: weekly
    - source: Multi-source Employee API
      frequency: weekly
  signing: undocumented
  retries: undocumented
  ordering: undocumented
  note: >-
    No payload signature, no retry policy and no delivery-ordering guarantee is documented. A
    subscriber cannot verify that a callback came from Coresignal.
subscription_model:
  entity: employee profiles only
  population_selectors: [id list, search filter query, Elasticsearch DSL query]
  field_filter:
    parameter: tracked_fields
    description: >-
      Optional array narrowing the subscription to changes on named fields only. Without it, any
      change to a tracked profile fires.
    example: '{"tracked_fields": ["skills"]}'
  lifetime_days: 91
  max_renewal: up to 1 year from creation
  max_subscriptions_per_account: 500
  max_ids_per_subscription: 300000
  limits_effective: '2026-08'
  cost: >-
    Subscription search/ES-DSL creation deducts credits; notification delivery itself does not.
  incompatible_filters: >-
    Date filters (from search filters or the Elasticsearch DSL schema) cannot be used in a
    subscription query — attempting it returns 422.
channels:
  - id: employee-webhooks
    name: Employee Webhooks
    description: >-
      Fires when tracked fields on a subscribed employee profile change, or when a profile enters or
      leaves the subscription's query population.
    docs: https://docs.coresignal.com/api-introduction/webhooks/employee-webhooks
    payload_fields:
      - {name: member_id, type: integer, description: ID of the employee profile that was updated.}
      - {name: status, type: string, description: The type of change detected.}
      - {name: changed_fields, type: array|null, description: The specific fields modified on the profile.}
    messages:
      - status: started_matching_query
        description: >-
          A profile that previously did not match the subscription filters now does. Example given by
          the provider — a job title updated to "Project Manager".
        changed_fields: null
      - status: stopped_matching_query
        description: >-
          A profile that matched the subscription filters no longer does. Example — a job title changed
          from "Project Manager" to "Scrum Master".
        changed_fields: null
      - status: changed
        description: >-
          One or more tracked fields were updated; changed_fields names them. Retrieve new values with
          Collect or Bulk Collect.
    example_payload: |
      [
        {"member_id": 123, "status": "started_matching_query", "changed_fields": null},
        {"member_id": 124, "status": "stopped_matching_query", "changed_fields": null},
        {"member_id": 125, "status": "changed", "changed_fields": ["skills", "headline", "certifications"]}
      ]
  - id: experience-webhooks
    name: Experience Webhooks
    description: >-
      Weekly notifications when employees start a new position, are promoted, or close an existing
      position — career-movement signal without polling.
    docs: https://docs.coresignal.com/api-introduction/webhooks/experience-webhooks
    payload_fields:
      - {name: member_id, type: integer, description: ID of the employee profile that was updated.}
      - {name: status, type: string, description: Notifies a changed state.}
    messages:
      - status: changed
        description: >-
          Non-specified change in the experience section. The exact change must be resolved with Bulk
          Collect GET or the collection endpoints.
    triggers:
      - Employee starts a new experience position
      - Employee closes a previously open experience position
    example_payload: |
      [
        {"member_id": 125, "status": "changed"}
      ]
management_operations:
  - {method: GET, path: /cdapi/v2/subscriptions, description: 'List subscriptions with status, created_at and expiring_at. Query params expired (bool) and page; ~1,000 per page.'}
  - {method: GET, path: '/cdapi/v2/subscriptions/{subscription_id}', description: Details of an active subscription.}
  - {method: POST, path: '/cdapi/v2/subscriptions/{subscription_id}/renew', description: Renew a subscription, up to 1 year total from creation.}
  - {method: DELETE, path: '/cdapi/v2/subscriptions/{subscription_id}', description: Delete a subscription.}
  - {method: POST, path: /cdapi/v2/subscriptions/simulate, description: 'Deliver one example webhook to a callback URL immediately. Body {"webhook_url": "..."}, 1 req/s.'}
subscription_object_example: |
  [
    {"id": "c8e295c0-2f85-473d-8bef-350526e6b30a", "status": "active", "created_at": "2024-09-18", "expiring_at": "2024-12-18"}
  ]
gaps:
  - No AsyncAPI or other machine-readable event contract.
  - No payload signing or verification mechanism documented.
  - No retry, dead-letter or delivery-guarantee documentation.
  - Company and Jobs datasets have no webhook surface — employee profiles only.