Syllable · AsyncAPI Specification

Syllable Outbound Webhooks

Version

View Spec View on GitHub CompanyArtificial IntelligenceAI AgentsVoiceConversational AIContact CenterHealthcareTelephonySMSCustomer ExperienceAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-05'
method: derived
source: openapi/syllable-sdk-openapi-original.yml
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Syllable publishes no AsyncAPI document. Probes of /asyncapi.yaml and /asyncapi.json on
  syllable.ai, docs.syllable.ai and api.syllable.cloud missed, and no event-catalog page
  exists in the documentation. The event surface below is derived from the webhook schemas
  declared in the provider's own OpenAPI, not fabricated.
summary: >-
  The only event/callback surface Syllable exposes is per-outbound-campaign webhooks.
  A campaign carries a webhooks[] array; each entry registers an HTTPS URL, an HTTP method,
  a set of trigger statuses, and an optional HMAC secret. There is no account-wide event
  bus, no webhook subscription resource of its own, and no session/agent lifecycle webhook —
  webhooks fire only on outbound communication status transitions.
surface:
  scope: outbound campaigns
  configured_via: the webhooks[] field on an outbound campaign
  input_schema: OutboundCampaignWebhookInput
  response_schema: OutboundCampaignWebhookResponse
  managing_operations_tag: outbound.campaigns
delivery:
  transport: HTTPS
  methods:
  - POST
  - PUT
  - PATCH
  url_field: url
  url_requirement: HTTPS URL to which to send the webhook payload
  trigger_field: trigger_statuses
  trigger_semantics: >-
    Condition expression evaluated when the trigger fires; the spec's own example is
    "campaign_id == 1 && channel_manager_status == 'COMPLETED'".
security:
  signing: HMAC
  secret_field: auth_values.hmac_secret
  secret_encoding: standard Base64 (RFC 4648)
  secret_key_material: 32-512 bytes
  read_back: >-
    Responses return auth_value_keys (key names only); secret values are never echoed back.
  update_semantics: >-
    On update, leaving a key's value null keeps the stored value; omitting the key entirely
    removes it.
events:
  enum: ChannelManagerStatus
  description: Status of an outbound communication request (voice, SMS, or email).
  values:
  - PENDING
  - DUPLICATE
  - INVALID
  - UNEXPECTED_ERROR
  - FILTERED_LINE_TYPE
  - PROCESSED
  - DROPPED
  - DEFERRED
  - BOUNCED
  - DELIVERED
  - OPENED
  - CLICKED
  - SPAM_REPORT
  - UNSUBSCRIBED
  - PRIOR_UNSUBSCRIBED
  - PRIOR_SPAM_REPORT
  - PRIOR_DROPPED
  - PRIOR_BOUNCED
  - SENT
  - ACCEPTED
  - QUEUED
  - SENDING
  - UNDELIVERED
  - DELIVERY_UNKNOWN
  - DELIVERY_FAILED
  - IN-PROGRESS
  - BUSY
  - CANCELED
  - COMPLETED
  - DECLINED
  - NO-ANSWER
  - MACHINE
  - HUMAN
  - UNKNOWN
  - FAILED
  - SIP_NOT_FOUND
  - SIP_TEMPORARILY_UNAVAILABLE
  - SIP_LOOP_DETECTED
  - SIP_DOES_NOT_EXIST_ANYWHERE
  count: 39
polling_alternative:
  operation_id: events_list
  path: /api/v1/events/
  method: GET
  note: >-
    For in-session events (tool calls and LLM prompts) there is no push surface at all —
    the Events list endpoint is poll-only, keyed on session_id and conversation_id.