Webhook REST API¶
All paths are under /api/v1. Authentication requires a Bearer JWT obtained by exchanging an API key — see Quick Start.
Try it interactively
These endpoints are available in the interactive API reference. Expand any operation and click Try it out to make live requests against production.
Public endpoints¶
| Method | Path | Description |
|---|---|---|
GET |
/webhooks/{campaign_id}/events |
List all subscribable event type strings |
GET |
/webhooks/{campaign_id}/endpoints |
List configured endpoints for a campaign |
GET |
/webhooks/{campaign_id}/endpoints/{eid}/health |
Delivery health snapshot for an endpoint |
List event types¶
Returns the full set of event type strings you can subscribe to when configuring an endpoint in the dashboard.
Response
[
"lead.created",
"leads.bulk_created",
"lead.status_changed",
"lead.converted",
"call.started",
"call.completed",
"form.submitted"
]
List endpoints¶
Returns all webhook endpoints configured on a campaign. Signing secrets are never included.
Response schema
| Field | Type | Description |
|---|---|---|
id |
integer | Endpoint ID |
campaign_id |
integer | |
url |
string | Destination URL |
description |
string | null | Optional label |
subscribed_events |
string[] | Event types subscribed |
is_enabled |
boolean | Whether deliveries are active |
created_at |
datetime | |
last_delivery_is_successful |
boolean | null | Outcome of most recent delivery |
Get endpoint health¶
Returns a delivery health snapshot for a single endpoint. Use this in monitoring or alerting pipelines to detect degraded integrations.
Example response
{
"endpoint_id": 12,
"url": "https://hooks.example.com/agora",
"is_enabled": true,
"total_deliveries": 843,
"successful_deliveries": 841,
"failed_deliveries": 2,
"success_rate": 0.9976,
"last_delivery_at": "2026-06-17T14:22:01Z",
"last_delivery_is_successful": true,
"avg_duration_ms": 142.3
}
Response schema
| Field | Type | Description |
|---|---|---|
total_deliveries |
integer | All delivery attempts ever recorded |
successful_deliveries |
integer | Attempts that received 2xx within 10 s |
failed_deliveries |
integer | Timeouts and non-2xx responses |
success_rate |
float | null | successful / total (0–1). Null if no deliveries yet |
last_delivery_at |
datetime | null | Timestamp of most recent attempt |
last_delivery_is_successful |
boolean | null | Outcome of most recent attempt |
avg_duration_ms |
float | null | Mean round-trip time across all deliveries |
Alerting guidance
Alert on success_rate < 0.95 or on last_delivery_at being stale relative to your expected event volume. A healthy endpoint at typical load should stay above 99%.
Dashboard-only actions¶
The following actions are only available through the Agora dashboard and are not exposed in the public API:
| Action | Where |
|---|---|
| Create / delete an endpoint | Campaign → Webhooks tab → + Add Endpoint |
| Update URL, events, or enabled state | Endpoint row → Edit |
| Send a test ping | Endpoint row → Test |
| View individual delivery logs | Expand endpoint row → Deliveries sub-table |
| Redeliver a failed delivery | Delivery row → ↻ button |
| Rotate signing secret | Edit modal → Regenerate Secret |