Create a webhook
/webhooksSubscribes an HTTPS endpoint to events. Returns the signing secret once, on creation.
Headers
AuthorizationRequiredstringYour API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.
Body parameters
JSONurlRequiredstringHTTPS endpoint.
event_typesoptionalstring[]Retired. Every webhook receives every event; filter by type in your handler. Omit this field, or send ["*"]. Any narrower value is rejected with 422 event_types_retired. Subscriptions created before the retirement keep the list they were registered with.
api_keyoptionalstringScope the subscription to the lines this API key owns. Omit api_key and integration_id for an organization-wide subscription that receives events from every line. Must belong to your organization; sending both is rejected with 422 ambiguous_scope.
integration_idoptionalstringScope the subscription to the lines this integration owns. Mutually exclusive with api_key.
channel_idoptionalstringchannel_typeoptionalstring"blooio""twilio""whatsapp""whatsapp_business""rcs_business""amb""sms""voice"api_versionoptionalWebhookApiVersionIdThe payload version to deliver. Defaults to the latest. Anything not listed by GET /webhooks/versions is rejected with 422 invalid_api_version, whose details.supported_versions lists the accepted values.
api_versionoptionalWebhookApiVersionIdThe payload version to deliver. Defaults to the latest. Anything not listed by GET /webhooks/versions is rejected with 422 invalid_api_version, whose details.supported_versions lists the accepted values.
WebhookApiVersionId
Returns
dataoptionalWebhookWithSecret
dataoptionalWebhookWithSecretidoptionalstringWebhook id (wh_...).
urloptionalstringevent_typesoptionalstring[]The events this webhook receives. ["*"] for every webhook created since event filtering was retired; subscriptions registered before that keep their original list, which is frozen and cannot be changed.
statusoptionalstring"active""disabled"scopeoptionalstringWhich lines this subscription receives events for. organization covers every line; the other two are limited to the lines that owner holds.
"organization""api_key""integration"api_keyoptionalstring | nullThe owning API key when scope is api_key, otherwise null.
integration_idoptionalstring | nullThe owning integration when scope is integration, otherwise null.
channel_idoptionalstring | nullchannel_typeoptionalstring | nullapi_versionoptionalWebhookApiVersionIdThe payload version this subscription receives, also sent as api_version in every event envelope; see GET /webhooks/versions.
api_versionoptionalWebhookApiVersionIdThe payload version this subscription receives, also sent as api_version in every event envelope; see GET /webhooks/versions.
WebhookApiVersionId
created_atoptionalintegersigning_secretoptionalstringReturned once, on creation. Store it to verify signatures.
Response codes
Sends a live request with your values and shows the real response below. Your key is stored only in this browser.
curl -X POST https://api.blooio.com/v4/webhooks \{ "data": { "id": "wh_a1b2c3d4", "url": "https://example.com", "event_types": [ "string" ], "status": "active", "scope": "organization", "api_key": "sk_live_a1b2c3d4", "integration_id": "wh_a1b2c3d4", "channel_id": "ch_a1b2c3d4", "channel_type": "string", "api_version": {}, "created_at": 0, "signing_secret": "sk_live_a1b2c3d4" }}