Attach Webhook
Attach a webhook to one or more senders (phone numbers or RCS agent IDs) to receive real-time event notifications.
You can attach an existing webhook by providing its ID, or create a new webhook by specifying a name and URL. Supports bulk operations with up to 50 senders per request.
Subscriptions are additive — attaching new senders does not remove existing ones. Re-attaching the same sender updates the event type filter without creating duplicates.
Custom headers may be provided in either case via the optional headers field. When attaching a new webhook, the headers are stored on the webhook and sent on every delivery. When attaching an existing webhookId, supplying headers overwrites the stored headers on that webhook — omit the field to leave them unchanged, or pass an empty object {} to clear them. The reserved PINNACLE-SIGNING-SECRET header is always set by Pinnacle and cannot be overridden.
Authentication
Request
Existing webhook ID (starts with wh_). Provide this OR name + url to create a new webhook. The webhook must be in ENABLED status. Disabled webhooks can be re-enabled from the dashboard.
Supplying headers alongside webhookId overwrites the stored headers on the webhook. Omit headers to leave them unchanged.
Name for a new webhook (required if no webhookId).
HTTPS endpoint URL for a new webhook (required if no webhookId).
Event type filter for the subscription. Set to null to receive all events.
USER.TYPING and CAMPAIGN.STATUS are only supported for RCS agent senders, not phone numbers — attempting to attach either of these events to a phone number returns 400 Bad Request.
Optional custom HTTP headers (key-value map) to include when dispatching webhook events to the endpoint.
Header names must start with a letter or digit and contain only letters, digits, -, or _ (matching the pattern ^[A-Za-z0-9][A-Za-z0-9_-]*$). Names are case-insensitive per RFC 9110 and are normalized to uppercase before storage and sending.
When provided with an existing webhookId, these headers overwrite any headers currently stored on that webhook. Omit to leave existing headers unchanged.
The reserved PINNACLE-SIGNING-SECRET header is silently ignored and cannot be overridden.
Response
Successfully attached webhook to the specified senders.
Senders that could not be found are returned in the failed array with error details.
Senders that were successfully attached (phone numbers in E.164 format or RCS agent IDs).

