Veritus · AsyncAPI Specification

Veritus Agent Webhooks

Version 1.0.0

Outbound webhooks Veritus Agent POSTs to a subscriber-supplied URL when calls complete or drip-campaign events occur. Payloads are signed with HMAC SHA-256. Register a webhook by supplying `webhook.url` (and optional `webhook.secretId`) when creating a call or enrolling a drip campaign.

View Spec View on GitHub CompanyFintechConsumer LendingCollectionAI AgentsVoice AICommunicationsComplianceAsyncAPIEventsWebhooks

Channels

calls
Fired when a directly-created (one-off) call is created or completed.
dripCampaigns
Fired for each outreach event within an omnichannel drip campaign.

Messages

CallCreated
Call Created
CallEnded
Call Ended
DripCampaignCallCreated
Drip Campaign - Call Created
DripCampaignCallEnded
Drip Campaign - Call Ended
DripCampaignSms
Drip Campaign - SMS

Servers

https
subscriber
Subscriber-hosted HTTPS endpoint that receives webhook POSTs.

AsyncAPI Specification

Raw ↑
generated: '2026-07-21'
method: generated
source: openapi/veritus-openapi.json (webhooks) + https://docs.veritus.com/guides/webhook-security
asyncapi: 3.0.0
info:
  title: Veritus Agent Webhooks
  version: 1.0.0
  description: >-
    Outbound webhooks Veritus Agent POSTs to a subscriber-supplied URL when calls
    complete or drip-campaign events occur. Payloads are signed with HMAC SHA-256.
    Register a webhook by supplying `webhook.url` (and optional `webhook.secretId`)
    when creating a call or enrolling a drip campaign.
defaultContentType: application/json
servers:
  subscriber:
    host: your-application.example.com
    protocol: https
    description: Subscriber-hosted HTTPS endpoint that receives webhook POSTs.
channels:
  calls:
    address: /calls/webhook
    description: Fired when a directly-created (one-off) call is created or completed.
    messages:
      callCreated:
        $ref: '#/components/messages/CallCreated'
      callEnded:
        $ref: '#/components/messages/CallEnded'
  dripCampaigns:
    address: /drip-campaigns/webhook
    description: Fired for each outreach event within an omnichannel drip campaign.
    messages:
      dripCallCreated:
        $ref: '#/components/messages/DripCampaignCallCreated'
      dripCallEnded:
        $ref: '#/components/messages/DripCampaignCallEnded'
      dripSms:
        $ref: '#/components/messages/DripCampaignSms'
operations:
  receiveCallWebhook:
    action: receive
    channel:
      $ref: '#/channels/calls'
  receiveDripCampaignWebhook:
    action: receive
    channel:
      $ref: '#/channels/dripCampaigns'
components:
  messages:
    CallCreated:
      name: call-created
      title: Call Created
      contentType: application/json
      headers:
        $ref: '#/components/schemas/SignatureHeaders'
      payload:
        type: object
        properties:
          type:
            const: call-created
          id:
            type: string
            format: uuid
          customerId:
            type: string
            format: uuid
          status:
            type: string
            enum: [in-progress, completed, canceled]
          createdAt:
            type: string
            format: date-time
          callCreated:
            type: object
            description: id, threadId, toPhoneNumber, fromPhoneNumber, createdAt.
    CallEnded:
      name: call-ended
      title: Call Ended
      contentType: application/json
      headers:
        $ref: '#/components/schemas/SignatureHeaders'
      payload:
        type: object
        properties:
          type:
            const: call-ended
          id:
            type: string
            format: uuid
          customerId:
            type: string
            format: uuid
          status:
            type: string
            enum: [in-progress, completed, canceled]
          createdAt:
            type: string
            format: date-time
          callEnded:
            type: object
            description: >-
              endedReason (customer-did-not-answer|voicemail|customer-ended-call|
              agent-ended-call|silence-timed-out|unknown), recordingUrl (signed,
              30-min TTL), durationMs, messages[] transcript turns, inputVariables,
              outputVariables.
    DripCampaignCallCreated:
      name: drip-campaign.call-created
      title: Drip Campaign - Call Created
      contentType: application/json
      headers:
        $ref: '#/components/schemas/SignatureHeaders'
      payload:
        type: object
        properties:
          type:
            const: drip-campaign.call-created
          id:
            type: string
            format: uuid
          name:
            type: string
          customerId:
            type: string
            format: uuid
          status:
            type: string
            enum: [in-progress, completed, canceled]
          createdAt:
            type: string
            format: date-time
    DripCampaignCallEnded:
      name: drip-campaign.call-ended
      title: Drip Campaign - Call Ended
      contentType: application/json
      headers:
        $ref: '#/components/schemas/SignatureHeaders'
      payload:
        type: object
        properties:
          type:
            const: drip-campaign.call-ended
          id:
            type: string
            format: uuid
          name:
            type: string
          customerId:
            type: string
            format: uuid
          status:
            type: string
            enum: [in-progress, completed, canceled]
          createdAt:
            type: string
            format: date-time
    DripCampaignSms:
      name: drip-campaign.sms
      title: Drip Campaign - SMS
      contentType: application/json
      headers:
        $ref: '#/components/schemas/SignatureHeaders'
      payload:
        type: object
        properties:
          type:
            const: drip-campaign.sms
          id:
            type: string
            format: uuid
          threadId:
            type: string
            format: uuid
          direction:
            type: string
            enum: [inbound, outbound]
          name:
            type: string
          customerId:
            type: string
            format: uuid
          status:
            type: string
            enum: [in-progress, completed, canceled]
          createdAt:
            type: string
            format: date-time
          sms:
            type: object
            description: id, message, toPhoneNumber, fromPhoneNumber, createdAt.
  schemas:
    SignatureHeaders:
      type: object
      description: >-
        Present when the webhook is registered with a secretId. Verify with a
        constant-time compare of sha256={hmac} over `{timestamp}.{raw_json_body}`,
        and reject timestamps older than 300 seconds.
      properties:
        X-Webhook-Signature:
          type: string
          description: HMAC SHA-256 signature, format sha256={hex}.
        X-Webhook-Timestamp:
          type: string
          description: Unix timestamp (seconds) when the webhook was sent.

# --- API Evangelist provenance -------------------------------------------
x-superseded-by:
  reason: >-
    Provider publishes this event surface themselves in as-published OpenAPI; this document was authored by API Evangelist before that source was harvested.
  published_spec: all/veritus/openapi/_original/veritus-openapi.json
  published_event_object: webhooks
  published_events: 2
  status: superseded
  reviewed: '2026-07-31'

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/veritus-webhooks-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.