List Webhooks
Retrieve a list of all webhooks in your workspace. Requires full permission.
/webhooksQuery Parameters
pageintegerPage number for pagination (minimum: 1, default: 1).
limitintegerNumber of webhooks to return (minimum: 1, maximum: 100, default: 10).
{
"data": [
{
"object": "webhook",
"id": "wh_2BxFg7KNqr5M...",
"name": "My Webhook",
"url": "https://example.com/webhook",
"all_events": false,
"enabled": true,
"events": ["email.accepted", "email.delivered"],
"last_used_at": "2026-02-11T14:30:00.000000+00:00",
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-10T10:00:00.000000+00:00"
}
],
"next_page_url": "/v2/webhooks?page=2&limit=10",
"previous_page_url": null
} {
"error": {
"code": 401,
"message": "Unauthorized"
}
} Get Webhook
Retrieve information about a specific webhook. Requires full permission.
/webhooks/{id}Path Parameters
idstringRequiredThe webhook ID (wh_xxx).
{
"object": "webhook",
"id": "wh_2BxFg7KNqr5M...",
"name": "My Webhook",
"url": "https://example.com/webhook",
"all_events": false,
"enabled": true,
"events": ["email.accepted", "email.delivered"],
"last_used_at": "2026-02-11T14:30:00.000000+00:00",
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-10T10:00:00.000000+00:00"
} {
"error": "Webhook not found"
} Create Webhook
Create a new webhook in your workspace. Requires full permission. URL validation includes SSRF protection — private IPs, localhost, and metadata endpoints are blocked.
/webhooksRequest Body
namestringRequiredUnique name within the workspace.
urlstringRequiredHTTPS endpoint URL (SSRF-validated).
all_eventsbooleanSubscribe to all event types (default: false).
enabledbooleanWhether the webhook is active (default: true).
eventsstring[]Array of event type names to subscribe to (default: []). Ignored if all_events is true.
{
"object": "webhook",
"id": "wh_2BxFg7KNqr5M...",
"name": "Production Webhook",
"url": "https://example.com/webhook",
"all_events": false,
"enabled": true,
"events": ["email.accepted", "email.delivered", "email.bounced"],
"last_used_at": null,
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-10T10:00:00.000000+00:00"
} {
"error": "Missing required field: name"
} {
"error": "Webhook with this name already exists",
"existing": {
"object": "webhook",
"id": "wh_...",
"name": "..."
}
} Available Event Types
These are all the event types that can be used in the events array:
Email events: email.accepted, email.scheduled, email.delivered, email.bounced, email.attempted, email.failed, email.rejected, email.clicked, email.loaded, email.complained, email.received, email.suppressed
Domain events: domain.created, domain.updated, domain.deleted
Audience events: audience.created, audience.updated, audience.deleted
Subscriber events: subscriber.created, subscriber.updated, subscriber.deleted
Contact events: contact.created, contact.updated, contact.deleted
Template events: template.created, template.updated, template.deleted
Suppression events: suppression.created, suppression.updated, suppression.deleted
Email verification events: email_verification.created, email_verification.updated
Email verification list events: email_verification_list.created, email_verification_list.updated
Update Webhook
Update an existing webhook in your workspace. Requires full permission. All fields are optional, but at least one must be provided. Webhooks can be identified by ID (wh_xxx) or name.
/webhooks/{id}Path Parameters
idstringRequiredThe webhook ID (wh_xxx) or name.
Request Body
namestringNew name for the webhook.
urlstringNew URL (SSRF-validated).
all_eventsbooleanSubscribe to all events. Setting to true clears any specific events.
enabledbooleanEnable or disable the webhook.
eventsstring[]Replace subscribed event types. Ignored when all_events is true.
{
"object": "webhook",
"id": "wh_2BxFg7KNqr5M...",
"name": "Updated Webhook",
"url": "https://example.com/webhook",
"all_events": false,
"enabled": false,
"events": ["email.accepted", "email.bounced"],
"last_used_at": "2026-02-11T14:30:00.000000+00:00",
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-12T09:00:00.000000+00:00"
} {
"error": "Invalid URL"
} {
"error": "Webhook not found"
} {
"error": "Webhook with this name already exists",
"existing": {
"object": "webhook",
"id": "wh_...",
"name": "..."
}
} Delete Webhook
Delete a webhook from your workspace. Requires full permission. Webhooks can be identified by ID (wh_xxx) or name.
/webhooks/{id}Path Parameters
idstringRequiredThe webhook ID (wh_xxx) or name.
{
"object": "webhook",
"id": "wh_2BxFg7KNqr5M...",
"name": "My Webhook",
"deleted": true
} {
"error": "Webhook not found"
}