Sinch · AsyncAPI Specification

Sinch Conversation API Webhooks

Version 1.0

Event-driven webhooks for the Sinch Conversation API. The Conversation API delivers contact messages, delivery receipts, and various notifications through HTTP POST callbacks. Up to 5 webhooks can be configured per app, each subscribing to specific event triggers including inbound messages, delivery reports, contact changes, and conversation lifecycle events.

View Spec View on GitHub CommunicationsMessagingSMSVoiceVerificationCPaaSTelecommunicationsAsyncAPIEventsWebhooks

Channels

/conversation/message-inbound
publish receiveInboundMessage
Receive an inbound message
Receives inbound message events from end users across all connected messaging channels.
/conversation/message-delivery
publish receiveMessageDelivery
Receive a message delivery receipt
Receives delivery receipt events for messages sent to contacts.
/conversation/event-inbound
publish receiveInboundEvent
Receive an inbound event
Receives inbound events from end users such as composing indicators and read receipts.
/conversation/contact-create
publish receiveContactCreate
Receive a contact creation event
Receives notifications when a new contact is created.
/conversation/contact-update
publish receiveContactUpdate
Receive a contact update event
Receives notifications when a contact is updated.
/conversation/contact-delete
publish receiveContactDelete
Receive a contact deletion event
Receives notifications when a contact is deleted.
/conversation/contact-merge
publish receiveContactMerge
Receive a contact merge event
Receives notifications when two contacts are merged.
/conversation/conversation-start
publish receiveConversationStart
Receive a conversation start event
Receives notifications when a new conversation is started.
/conversation/conversation-stop
publish receiveConversationStop
Receive a conversation stop event
Receives notifications when a conversation is stopped.
/conversation/channel-event
publish receiveChannelEvent
Receive a channel event
Receives channel-specific events that do not map to the standard Conversation API event model.
/conversation/capability
publish receiveCapabilityResult
Receive a capability lookup result
Receives capability lookup results for contacts.
/conversation/opt-in
publish receiveOptIn
Receive an opt-in event
Receives opt-in events when contacts opt in to messaging.
/conversation/opt-out
publish receiveOptOut
Receive an opt-out event
Receives opt-out events when contacts opt out of messaging.
/conversation/smart-conversations
publish receiveSmartConversationResult
Receive a smart conversation result
Receives smart conversation analysis results including sentiment analysis and intent classification.

Messages

✉
MessageInbound
Inbound Message
An inbound message from an end user
✉
MessageDelivery
Message Delivery Receipt
Delivery status update for a sent message
✉
EventInbound
Inbound Event
An inbound event from an end user
✉
ContactEvent
Contact Event
A contact lifecycle event
✉
ContactMergeEvent
Contact Merge Event
Two contacts were merged
✉
ConversationEvent
Conversation Event
A conversation lifecycle event
✉
ChannelEvent
Channel Event
A channel-specific event
✉
CapabilityEvent
Capability Event
Capability lookup result
✉
OptEvent
Opt Event
An opt-in or opt-out event
✉
SmartConversationEvent
Smart Conversation Event
Smart conversation analysis result

Servers

https
customerServer {webhookTarget}
Your server endpoint configured as a webhook target for the Conversation API app. Webhooks are configured via the API or Sinch Dashboard.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Sinch Conversation API Webhooks
  description: >-
    Event-driven webhooks for the Sinch Conversation API. The Conversation API
    delivers contact messages, delivery receipts, and various notifications
    through HTTP POST callbacks. Up to 5 webhooks can be configured per app,
    each subscribing to specific event triggers including inbound messages,
    delivery reports, contact changes, and conversation lifecycle events.
  version: '1.0'
  contact:
    name: Sinch Support
    url: https://www.sinch.com/contact-us/
servers:
  customerServer:
    url: '{webhookTarget}'
    protocol: https
    description: >-
      Your server endpoint configured as a webhook target for the Conversation
      API app. Webhooks are configured via the API or Sinch Dashboard.
    variables:
      webhookTarget:
        description: Your webhook target URL
    security:
      - hmacAuth: []
channels:
  /conversation/message-inbound:
    description: >-
      Receives inbound message events from end users across all connected
      messaging channels.
    publish:
      operationId: receiveInboundMessage
      summary: Receive an inbound message
      description: >-
        Triggered when an end user sends a message on any connected channel.
        The message is normalized to the Conversation API format.
      message:
        $ref: '#/components/messages/MessageInbound'
  /conversation/message-delivery:
    description: >-
      Receives delivery receipt events for messages sent to contacts.
    publish:
      operationId: receiveMessageDelivery
      summary: Receive a message delivery receipt
      description: >-
        Triggered when the delivery status of a sent message changes,
        indicating delivery success or failure on the channel.
      message:
        $ref: '#/components/messages/MessageDelivery'
  /conversation/event-inbound:
    description: >-
      Receives inbound events from end users such as composing indicators
      and read receipts.
    publish:
      operationId: receiveInboundEvent
      summary: Receive an inbound event
      description: >-
        Triggered when an end user generates an event on a channel, such as
        starting to type or reading a message.
      message:
        $ref: '#/components/messages/EventInbound'
  /conversation/contact-create:
    description: >-
      Receives notifications when a new contact is created.
    publish:
      operationId: receiveContactCreate
      summary: Receive a contact creation event
      message:
        $ref: '#/components/messages/ContactEvent'
  /conversation/contact-update:
    description: >-
      Receives notifications when a contact is updated.
    publish:
      operationId: receiveContactUpdate
      summary: Receive a contact update event
      message:
        $ref: '#/components/messages/ContactEvent'
  /conversation/contact-delete:
    description: >-
      Receives notifications when a contact is deleted.
    publish:
      operationId: receiveContactDelete
      summary: Receive a contact deletion event
      message:
        $ref: '#/components/messages/ContactEvent'
  /conversation/contact-merge:
    description: >-
      Receives notifications when two contacts are merged.
    publish:
      operationId: receiveContactMerge
      summary: Receive a contact merge event
      message:
        $ref: '#/components/messages/ContactMergeEvent'
  /conversation/conversation-start:
    description: >-
      Receives notifications when a new conversation is started.
    publish:
      operationId: receiveConversationStart
      summary: Receive a conversation start event
      message:
        $ref: '#/components/messages/ConversationEvent'
  /conversation/conversation-stop:
    description: >-
      Receives notifications when a conversation is stopped.
    publish:
      operationId: receiveConversationStop
      summary: Receive a conversation stop event
      message:
        $ref: '#/components/messages/ConversationEvent'
  /conversation/channel-event:
    description: >-
      Receives channel-specific events that do not map to the standard
      Conversation API event model.
    publish:
      operationId: receiveChannelEvent
      summary: Receive a channel event
      message:
        $ref: '#/components/messages/ChannelEvent'
  /conversation/capability:
    description: >-
      Receives capability lookup results for contacts.
    publish:
      operationId: receiveCapabilityResult
      summary: Receive a capability lookup result
      message:
        $ref: '#/components/messages/CapabilityEvent'
  /conversation/opt-in:
    description: >-
      Receives opt-in events when contacts opt in to messaging.
    publish:
      operationId: receiveOptIn
      summary: Receive an opt-in event
      message:
        $ref: '#/components/messages/OptEvent'
  /conversation/opt-out:
    description: >-
      Receives opt-out events when contacts opt out of messaging.
    publish:
      operationId: receiveOptOut
      summary: Receive an opt-out event
      message:
        $ref: '#/components/messages/OptEvent'
  /conversation/smart-conversations:
    description: >-
      Receives smart conversation analysis results including sentiment
      analysis and intent classification.
    publish:
      operationId: receiveSmartConversationResult
      summary: Receive a smart conversation result
      message:
        $ref: '#/components/messages/SmartConversationEvent'
components:
  securitySchemes:
    hmacAuth:
      type: httpApiKey
      in: header
      name: x-sinch-webhook-signature
      description: >-
        HMAC signature for webhook payload verification using the secret
        configured on the webhook.
  messages:
    MessageInbound:
      name: MESSAGE_INBOUND
      title: Inbound Message
      summary: An inbound message from an end user
      contentType: application/json
      payload:
        $ref: '#/components/schemas/MessageInboundPayload'
    MessageDelivery:
      name: MESSAGE_DELIVERY
      title: Message Delivery Receipt
      summary: Delivery status update for a sent message
      contentType: application/json
      payload:
        $ref: '#/components/schemas/MessageDeliveryPayload'
    EventInbound:
      name: EVENT_INBOUND
      title: Inbound Event
      summary: An inbound event from an end user
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EventInboundPayload'
    ContactEvent:
      name: CONTACT_EVENT
      title: Contact Event
      summary: A contact lifecycle event
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ContactEventPayload'
    ContactMergeEvent:
      name: CONTACT_MERGE
      title: Contact Merge Event
      summary: Two contacts were merged
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ContactMergeEventPayload'
    ConversationEvent:
      name: CONVERSATION_EVENT
      title: Conversation Event
      summary: A conversation lifecycle event
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ConversationEventPayload'
    ChannelEvent:
      name: CHANNEL_EVENT
      title: Channel Event
      summary: A channel-specific event
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ChannelEventPayload'
    CapabilityEvent:
      name: CAPABILITY
      title: Capability Event
      summary: Capability lookup result
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CapabilityEventPayload'
    OptEvent:
      name: OPT_EVENT
      title: Opt Event
      summary: An opt-in or opt-out event
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OptEventPayload'
    SmartConversationEvent:
      name: SMART_CONVERSATIONS
      title: Smart Conversation Event
      summary: Smart conversation analysis result
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SmartConversationPayload'
  schemas:
    MessageInboundPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        accepted_time:
          type: string
          format: date-time
          description: When the event was accepted
        event_time:
          type: string
          format: date-time
          description: When the event occurred
        project_id:
          type: string
          description: The project identifier
        message:
          type: object
          description: The inbound message
          properties:
            id:
              type: string
              description: The message identifier
            direction:
              type: string
              description: The message direction
            contact_message:
              type: object
              description: The contact message content
              properties:
                text_message:
                  type: object
                  properties:
                    text:
                      type: string
                      description: The message text
                media_message:
                  type: object
                  properties:
                    url:
                      type: string
                      description: Media URL
            channel_identity:
              type: object
              description: The channel identity
              properties:
                channel:
                  type: string
                  description: The channel type
                identity:
                  type: string
                  description: The channel-specific identity
                app_id:
                  type: string
                  description: The app ID
            conversation_id:
              type: string
              description: The conversation identifier
            contact_id:
              type: string
              description: The contact identifier
            metadata:
              type: string
              description: Message metadata
            accept_time:
              type: string
              format: date-time
              description: When the message was accepted
        message_metadata:
          type: string
          description: Additional message metadata
    MessageDeliveryPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        accepted_time:
          type: string
          format: date-time
          description: When the event was accepted
        event_time:
          type: string
          format: date-time
          description: When the event occurred
        project_id:
          type: string
          description: The project identifier
        message_delivery_report:
          type: object
          description: The delivery report
          properties:
            message_id:
              type: string
              description: The message identifier
            conversation_id:
              type: string
              description: The conversation identifier
            status:
              type: string
              enum:
                - QUEUED_ON_CHANNEL
                - DELIVERED
                - READ
                - FAILED
                - SWITCHING_CHANNEL
              description: The delivery status
            channel_identity:
              type: object
              description: The channel identity
              properties:
                channel:
                  type: string
                  description: The channel type
                identity:
                  type: string
                  description: The channel identity
            contact_id:
              type: string
              description: The contact identifier
            reason:
              type: string
              description: Reason for failure if applicable
            metadata:
              type: string
              description: Delivery metadata
    EventInboundPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        accepted_time:
          type: string
          format: date-time
          description: When the event was accepted
        project_id:
          type: string
          description: The project identifier
        event:
          type: object
          description: The inbound event
          properties:
            composing_event:
              type: object
              description: Composing indicator event
            contact_id:
              type: string
              description: The contact identifier
            channel_identity:
              type: object
              description: The channel identity
              properties:
                channel:
                  type: string
                  description: The channel type
                identity:
                  type: string
                  description: The channel identity
    ContactEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        accepted_time:
          type: string
          format: date-time
          description: When the event was accepted
        project_id:
          type: string
          description: The project identifier
        contact:
          type: object
          description: The contact object
          properties:
            id:
              type: string
              description: The contact identifier
            display_name:
              type: string
              description: The contact display name
            channel_identities:
              type: array
              description: Channel identities
              items:
                type: object
                properties:
                  channel:
                    type: string
                  identity:
                    type: string
    ContactMergeEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        preserved_contact:
          type: object
          description: The surviving contact after merge
          properties:
            id:
              type: string
              description: The contact identifier
        deleted_contact:
          type: object
          description: The contact that was merged and deleted
          properties:
            id:
              type: string
              description: The contact identifier
    ConversationEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        conversation:
          type: object
          description: The conversation
          properties:
            id:
              type: string
              description: The conversation identifier
            app_id:
              type: string
              description: The app identifier
            contact_id:
              type: string
              description: The contact identifier
            active:
              type: boolean
              description: Whether the conversation is active
    ChannelEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        channel:
          type: string
          description: The channel type
        event_type:
          type: string
          description: The channel-specific event type
        additional_data:
          type: object
          description: Channel-specific event data
    CapabilityEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        request_id:
          type: string
          description: The capability query request ID
        contact_id:
          type: string
          description: The contact identifier
        channel:
          type: string
          description: The channel queried
        capability_status:
          type: string
          description: The capability status result
        reason:
          type: string
          description: Reason if capability is unavailable
    OptEventPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        contact_id:
          type: string
          description: The contact identifier
        channel:
          type: string
          description: The channel
        identity:
          type: string
          description: The channel identity
        status:
          type: string
          enum:
            - OPT_IN_SUCCEEDED
            - OPT_IN_FAILED
            - OPT_OUT_SUCCEEDED
            - OPT_OUT_FAILED
          description: The opt event status
        request_id:
          type: string
          description: The request identifier
    SmartConversationPayload:
      type: object
      properties:
        app_id:
          type: string
          description: The app identifier
        project_id:
          type: string
          description: The project identifier
        message_id:
          type: string
          description: The analyzed message identifier
        contact_id:
          type: string
          description: The contact identifier
        conversation_id:
          type: string
          description: The conversation identifier
        analysis_results:
          type: object
          description: Smart conversation analysis results
          properties:
            sentiment_analysis:
              type: object
              description: Sentiment analysis result
              properties:
                sentiment:
                  type: string
                  description: The detected sentiment
                score:
                  type: number
                  description: The confidence score
            intent_analysis:
              type: object
              description: Intent classification result
              properties:
                intent:
                  type: string
                  description: The detected intent
                score:
                  type: number
                  description: The confidence score

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/sinch-conversation-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.