Webhooks

webhook.test

Sent by POST /api/v1/webhooks/{id}/test. Carries no message.

Signed with Standard Webhooks. At-least-once and unordered. Payloads are at most 64 KB. Answer any 2xx within 10 seconds; anything else is retried on the published curve.

Header Parameters

webhook-id*string

The delivery id. Identical across retries — dedupe on it.

webhook-timestamp*string

Unix seconds. Reject anything more than 5 minutes from now (replay protection).

webhook-signature*string

Space-separated v1,<base64 HMAC-SHA256> signatures of {webhook-id}.{webhook-timestamp}.{raw body}, keyed with the base64 part of your whsec_ secret. Two appear during a secret rotation's grace window; accept either. Verify against the RAW body, before parsing.

Request Body

application/json
  1. body

Sent by POST /api/v1/webhooks/{id}/test. Carries no message.

id*string

The delivery id — also sent as webhook-id. Dedupe on it.

type*"webhook.test"
Value in"webhook.test"
version*"1"
Value in"1"
created_at*string

When we queued it.

Formatdate-time
occurred_at*string

When it happened. Order on this, never on arrival.

Formatdate-time
data*

Response Body

Accepted. Any 2xx stops retries.

Example Requests
POST/webhook.test

Sent by POST /api/v1/webhooks/{id}/test. Carries no message.

Request Body
application/json
{  "id": "string",  "type": "webhook.test",  "version": "1",  "created_at": "2019-08-24T14:15:22Z",  "occurred_at": "2019-08-24T14:15:22Z",  "data": {    "event_id": "string",    "message": null,    "detail": {}  }}
Header Parameters
{  "webhook-id": "string",  "webhook-timestamp": "string",  "webhook-signature": "string"}