ZoomInfo · AsyncAPI Specification
Zoominfo Webhooks
Version
View Spec
View on GitHub
B2BB2B DataCompany DataContact DatabaseContactsDataLead GenerationMarketing IntelligenceSales IntelligenceIntent DataGo-To-MarketData EnrichmentAI AgentsMCPAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: >-
https://docs.zoominfo.com/docs/webhook-and-events.md,
https://api-docs.zoominfo.com (Monitoring API/Webhooks),
openapi/zoominfo-monitoring-api-webhooks-api-openapi.yml,
openapi/zoominfo-gtm-agent-v1-openapi.json
provider: ZoomInfo
providerId: zoominfo
description: >-
ZoomInfo's event and webhook surface. An event surface exists on both the legacy and the current API,
but NO AsyncAPI document is published — this file captures the webhook catalog instead.
asyncapi_published: false
asyncapi_note: >-
ZoomInfo publishes six OpenAPI specifications and no AsyncAPI document. The event surface is described
in prose and in the REST operations that manage subscriptions. Nothing was fabricated to fill the gap.
surfaces:
- id: legacy-monitoring-api
name: Monitoring API / Webhooks
status: legacy
base_url: https://api.zoominfo.com
spec: openapi/zoominfo-monitoring-api-webhooks-api-openapi.yml
docs: https://api-docs.zoominfo.com
model: subscribe-and-push
description: >-
Configure webhook subscriptions so ZoomInfo pushes record changes to your endpoint instead of you
polling. Part of the Scaling APIs bundle.
operations:
- {operationId: CreateWebhook, method: POST, path: /webhooks, description: Create a webhook subscription.}
- {operationId: GetWebhooks, method: GET, path: /webhooks, description: List webhook subscriptions.}
- {operationId: UpdateWebhook, method: PUT, path: '/webhooks/{webhookId}', description: Update a subscription.}
- {operationId: DeleteWebhook, method: DELETE, path: '/webhooks/{webhookId}', description: Delete a subscription.}
- {operationId: ValidateTargetURL, method: POST, path: /webhooks/validate, description: Validate that the target URL is reachable before subscribing.}
- {operationId: GenerateVerificationToken, method: POST, path: '/webhooks/{webhookId}/token', description: Mint a verification token used to authenticate the delivery to your endpoint.}
- {operationId: GetSubscriptionTypes, method: GET, path: /webhooks/subscriptiontypes, description: Enumerate the event types available to subscribe to. The event catalog is discovered at runtime, not declared in the spec.}
event_catalog:
declared_in_spec: false
discovery_endpoint: GET /webhooks/subscriptiontypes
note: >-
ZoomInfo does not publish the list of subscribable event types as documentation or as a schema
enum; a client must call the subscription-types endpoint with valid credentials to learn them. No
event names are asserted here because none are published.
payload:
entities: [Contact, Company]
changed_attributes:
supported: true
since: '2023-06-19'
description: >-
Webhook payloads carry a changedAttributes field indicating which fields changed on the contact
or company — e.g. "email and Job title changed for Joe Smith".
source: https://api-docs.zoominfo.com
- id: gtm-agent-events
name: Agent Teams (current API)
status: current
base_url: https://api.zoominfo.com/gtm
spec: openapi/zoominfo-gtm-agent-v1-openapi.json
docs: https://docs.zoominfo.com/docs/webhook-and-events.md
model: trigger-and-poll
description: >-
On the current API, ZoomInfo routes eventing through Agent Teams. The published Webhook and Events
page describes triggering an Agent Team run and then POLLING for results — it does not document a
push subscription, a callback URL, a signature scheme or a payload schema.
operations:
- {operationId: AgentTeamsController_runAgentTeam, method: POST, path: '/agent/v1/agent-teams/{agentTeamId}/runs', description: 'Trigger an Agent Team run. Asynchronous — returns the run id and initial status.'}
- {operationId: AgentTeamsController_getAgentTeamRun, method: GET, path: '/agent/v1/agent-teams/{agentTeamId}/runs/{runId}', description: Poll for run status and available output.}
- {operationId: AgentTeamsController_listAgentTeamRuns, method: GET, path: '/agent/v1/agent-teams/{agentTeamId}/runs', description: List runs for an Agent Team.}
- {operationId: AgentTeamsController_getAgentTeamDetails, method: GET, path: '/agent/v1/agent-teams/{agentTeamId}', description: Fetch Agent Team configuration, including the input parameters a run requires.}
- {operationId: PulsesController_listPulses, method: GET, path: /agent/v1/pulses, description: List the authenticated user's pulses.}
documented_use_cases:
- Start a downstream workflow when a bulk enrichment job completes.
- Notify RevOps when an account enters a high-intent segment.
- Alert when credit usage crosses an admin-defined threshold.
- Refresh CRM records when enriched data changes.
- Trigger a campaign when a new scoop or funding event is detected.
retry_behavior:
configurable: true
where: Agent Team details, by event type, object type and run.
detail_published: false
note: The docs state retries, frequencies and throttling are configurable but publish no defaults, no backoff schedule and no delivery guarantees.
gaps:
- The current API's Webhook and Events page describes polling, not webhooks, despite its title — no callback registration, no signature verification, no payload schema.
- No event type catalog is published for either surface; the legacy list is only reachable through an authenticated call.
- No AsyncAPI document, so the event surface is not machine-readable at all.