Destinations#
A destination is a configured delivery target — where should matching events go, and how. Destinations are managed independently of the systems producing events.
Authenticated with a management token.
List destinations#
GET /v0/destinationsPaginated.
Response 200
{
"limit": 25,
"previous": null,
"next": null,
"data": [
{
"id": "...",
"name": "billing-webhook",
"description": null,
"destination_type": { "id": "...", "name": "http" },
"events": [ { "id": "...", "name": "order.placed" } ],
"config": { "url": "https://example.com/webhook" },
"status": "active",
"created_at": "2026-06-19T00:32:58.000+00:00",
"updated_at": "2026-06-19T00:32:58.000+00:00"
}
]
}Create a destination#
POST /v0/destinations| Field | Rules |
|---|---|
name |
required, string |
description |
nullable, string |
destination_type_id |
required, string — must reference an existing destination type |
status |
required, string — active or disabled |
events |
required, array of { "name": "<event type>" } |
config |
required, object — validated against the destination type’s config_schema |
Event types are resolved-or-created by name — pass names, not IDs.
Request
{
"name": "billing-webhook",
"destination_type_id": "...",
"status": "active",
"events": [ { "name": "order.placed" } ],
"config": { "url": "https://example.com/webhook" }
}Response 201 — same shape as an item in the list response above.
Errors: 404 if destination_type_id doesn’t reference an existing destination type, 422 if validation fails (including config failing the destination type’s config_schema).
Get a destination#
GET /v0/destinations/{id}Response 200 — same shape as an item in the list response. The event subscription set is always embedded — it’s a bounded, config-time concern, not paginated separately.
Errors: 404 if the destination doesn’t exist.
Update a destination#
PATCH /v0/destinations/{id}Same field rules as create, all fields optional on update except where noted by the destination type’s config_schema.
Response 200 — same shape as GET /v0/destinations/{id}.
Errors: 404, 422.
Delete a destination#
DELETE /v0/destinations/{id}Response 204 — no body.
Errors: 404.
Replace event subscriptions#
PUT /v0/destinations/{id}/eventsReplaces the destination’s full event subscription set.
| Field | Rules |
|---|---|
events |
required, array of { "name": "<event type>" } |
Request
{ "events": [ { "name": "order.placed" }, { "name": "order.cancelled" } ] }Response 200 — the updated destination, same shape as GET /v0/destinations/{id}.
Errors: 404, 422.
Delivery history#
GET /v0/destinations/{id}/event-logsPaginated delivery history for this destination — every delivery attempt across every inbound event that matched it. See Event Logs .