Sinch · Schema

Webhook

Represents a destination for receiving callbacks from the Conversation API.

CommunicationsMessagingSMSVoiceVerificationCPaaSTelecommunicationsWhatsApp

Properties

Name Type Description
app_id string The app that this webhook belongs to.
client_credentials object
id string The ID of the webhook.
secret string Optional secret be used to sign contents of webhooks sent by the Conversation API. You can then use the secret to verify the signature.
target string The target url where events should be sent to. Maximum URL length is 742. The conversation-api.*.sinch.com subdomains are forbidden.
target_type object
triggers array An array of triggers that should trigger the webhook and result in an event being sent to the target url. Refer to the list of [Webhook Triggers](https://developers.sinch.com/docs/conversation/callbac
View JSON Schema on GitHub

JSON Schema

sinch-webhook-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/sinch/main/json-schema/sinch-webhook-schema.json",
  "title": "Webhook",
  "description": "Represents a destination for receiving callbacks from the Conversation API.",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sinch-conversation-api-openapi.yml#/components/schemas/Webhook",
  "type": "object",
  "required": [
    "target"
  ],
  "properties": {
    "app_id": {
      "description": "The app that this webhook belongs to.",
      "type": "string"
    },
    "client_credentials": {
      "$ref": "#/$defs/ClientCredentials"
    },
    "id": {
      "description": "The ID of the webhook.",
      "type": "string",
      "readOnly": true
    },
    "secret": {
      "description": "Optional secret be used to sign contents of webhooks sent by the Conversation API.\nYou can then use the secret to verify the signature.",
      "type": "string",
      "format": "password"
    },
    "target": {
      "description": "The target url where events should be sent to.\nMaximum URL length is 742.\nThe conversation-api.*.sinch.com subdomains are forbidden.",
      "type": "string"
    },
    "target_type": {
      "$ref": "#/$defs/WebhookTargetType"
    },
    "triggers": {
      "description": "An array of triggers that should trigger the webhook and result in an\nevent being sent to the target url.\nRefer to the list of [Webhook Triggers](https://developers.sinch.com/docs/conversation/callbacks/#webhook-triggers)\nfor a complete list.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/WebhookTrigger"
      }
    }
  },
  "$defs": {
    "ClientCredentials": {
      "type": "object",
      "description": "Optional. Used for OAuth2 authentication.",
      "required": [
        "client_id",
        "client_secret",
        "endpoint"
      ],
      "properties": {
        "client_id": {
          "description": "The Client ID that will be used in the OAuth2 Client Credentials flow.",
          "type": "string"
        },
        "client_secret": {
          "description": "The Client Secret that will be used in the OAuth2 Client Credentials flow.",
          "type": "string",
          "format": "password"
        },
        "endpoint": {
          "description": "The endpoint that will be used in the OAuth2 Client Credentials flow. Expected to return a JSON with an access token and `expires_in` value (in seconds). The `expires_in` value, which must be a minimum of 30 seconds and a maximum of 3600 seconds, is how long Sinch will save the access token before asking for a new one.",
          "type": "string"
        },
        "scope": {
          "description": "Optional. Space-separated string per RFC 6749. Used to limit the access granted by the token.\nMax length: 1024 characters.\nIf blank or omitted, this is not included in the token request.\n",
          "type": "string",
          "maxLength": 1024
        },
        "response_type": {
          "description": "Optional. When granting `client_credentials`, this is generally omitted. If you do provide a value, it will be forwarded to your OAuth provider as-is.\nMax length: 64 characters.\n",
          "type": "string",
          "maxLength": 64
        },
        "token_request_type": {
          "description": "Optional. Controls how `client_id` and `client_secret` are sent to the token endpoint. Either `BASIC` or `FORM`. If not set or unrecognized, `BASIC` is used by default.\n",
          "type": "string",
          "x-enumDescriptions": {
            "BASIC": "Sent using the HTTP Authorization header (Basic auth). In this case, `client_id` and `client_secret` are NOT included in the form body.",
            "FORM": "Sent in the form body as `client_id` and `client_secret`. No Authorization header is added."
          },
          "enum": [
            "BASIC",
            "FORM"
          ],
          "default": "BASIC"
        }
      }
    },
    "WebhookTargetType": {
      "type": "string",
      "default": "DISMISS",
      "x-enumDescriptions": {
        "DISMISS": "Events won't be sent.",
        "HTTP": "Events will be sent to an HTTP target."
      },
      "enum": [
        "DISMISS",
        "HTTP"
      ]
    },
    "WebhookTrigger": {
      "description": "Each webhook can subscribe to one or more of the following triggers",
      "type": "string",
      "x-enumDescriptions": {
        "UNSPECIFIED_TRIGGER": "Using this value will cause errors.",
        "MESSAGE_DELIVERY": "Subscribe to delivery receipts for a message sent.",
        "EVENT_DELIVERY": "Subscribe to delivery receipts for a event sent.",
        "MESSAGE_INBOUND": "Subscribe to inbound messages from end users on the underlying channels.",
        "EVENT_INBOUND": "Subscribe to inbound events from end users on the underlying channels.",
        "CONVERSATION_START": "Subscribe to an event that is triggered when a new conversation has been started.",
        "CONVERSATION_STOP": "Subscribe to an event that is triggered when a active conversation has been stopped.",
        "CONTACT_CREATE": "Subscribe to an event that is triggered when a new contact has been created.",
        "CONTACT_DELETE": "Subscribe to an event that is triggered when a contact has been deleted.",
        "CONTACT_MERGE": "Subscribe to an event that is triggered when a two contacts are merged.",
        "CONTACT_UPDATE": "Subscribe to an event that is triggered when a contact is updated.",
        "UNSUPPORTED": "Subscribe to callbacks that are not natively supported by the Conversation API.",
        "OPT_IN": "Subscribe to opt_ins.",
        "OPT_OUT": "Subscribe to opt_outs.",
        "CAPABILITY": "Subscribe to see get capability results.",
        "CONVERSATION_DELETE": "Subscribe to get an event when a conversation is deleted.",
        "CONTACT_IDENTITIES_DUPLICATION": "Subscribe to get an event when contact identity duplications are found during message or event processing.",
        "CHANNEL_EVENT": "Subscribe to direct channel event.",
        "SMART_CONVERSATION": "Subscribe to [Smart conversation analysis](https://developers.sinch.com/docs/smart-conversations).",
        "MESSAGE_INBOUND_SMART_CONVERSATION_REDACTION": "Subscribe to [analysis](https://developers.sinch.com/docs/smart-conversations) for messages from end-users.",
        "RECORD_NOTIFICATION": "Subscribe to Record Notifications.",
        "MESSAGE_SUBMIT": "Subscribe to message submit Notifications."
      },
      "enum": [
        "UNSPECIFIED_TRIGGER",
        "MESSAGE_DELIVERY",
        "EVENT_DELIVERY",
        "MESSAGE_INBOUND",
        "EVENT_INBOUND",
        "CONVERSATION_START",
        "CONVERSATION_STOP",
        "CONTACT_CREATE",
        "CONTACT_DELETE",
        "CONTACT_MERGE",
        "CONTACT_UPDATE",
        "UNSUPPORTED",
        "OPT_IN",
        "OPT_OUT",
        "CAPABILITY",
        "CONVERSATION_DELETE",
        "CONTACT_IDENTITIES_DUPLICATION",
        "CHANNEL_EVENT",
        "SMART_CONVERSATION",
        "MESSAGE_INBOUND_SMART_CONVERSATION_REDACTION",
        "RECORD_NOTIFICATION",
        "MESSAGE_SUBMIT"
      ]
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/sinch-webhook"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.