The Webhook endpoint object
A URL we deliver signed events to.
Returned by POST /v1/webhooks, GET /v1/webhooks and GET /v1/webhooks/{id}.
Fields
Every field is always present. A field is null only where its type says | null, and a list with nothing in it is [], never null.
| Field | Type | Description |
|---|---|---|
| id | string | UUID. |
| url | string | Where deliveries are POSTed. |
| events | string[] | The event types subscribed to: set.published, card.created, card.updated, card.legality.changed, price.threshold.crossed. |
| games | string[] | Games the endpoint hears about. Empty means every game. |
| description | string | null | Your label, up to 200 characters. |
| status | string | disabled after repeated failures; see disabledReason.One of: |
| disabledAt | string | null | When deliveries were stopped. ISO 8601 timestamp, UTC. |
| disabledReason | string | null | Why deliveries were stopped. |
| failures | integer | Consecutive failed deliveries. |
| lastDeliveryAt | string | null | The last delivery attempt. ISO 8601 timestamp, UTC. |
| lastStatusCode | integer | null | The HTTP status your server answered the last attempt with. |
| createdAt | string | ISO 8601 timestamp, UTC. |
A real one
From the production API, unedited.
{
"id": "c3290649-ffc6-467c-9470-c5307925ca78",
"url": "https://example.com/tcggraph-docs",
"events": [
"set.published",
"card.legality.changed"
],
"games": [
"pokemon"
],
"description": "docs example",
"status": "active",
"disabledAt": null,
"disabledReason": null,
"failures": 0,
"lastDeliveryAt": null,
"lastStatusCode": null,
"createdAt": "2026-09-24T07:47:43.874Z"
}