Skip to content

Webhooks

POST /v1/webhooks · scope account:write · reversible · idempotent

The response includes secret once. Verify every delivery with it: Truo-Signature: t=<unix>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>, and reject timestamps older than 5 minutes. The URL must be https and publicly reachable. Up to 10 webhooks per account.

Terminal window
curl https://api.truo.cloud/v1/webhooks \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.create

DELETE /v1/webhooks/{id} · scope account:write · destructive — cannot be undone · idempotent

Pending deliveries to it are dropped.

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12 \
-X DELETE \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.delete

GET /v1/webhooks/{id}/deliveries/{delivery_id} · scope account:read

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12/deliveries/dlv_01JQ8X… \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.deliveries.get

GET /v1/webhooks/{id}/deliveries · scope account:read

Newest first, with the exact signed body of each. This is where to look when a receiver disagrees.

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12/deliveries \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.deliveries.list

POST /v1/webhooks/{id}/deliveries/{delivery_id}/redeliver · scope account:write · reversible

Re-queues a delivered or failed delivery with the same body (and a fresh signature).

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12/deliveries/dlv_01JQ8X…/redeliver \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.deliveries.redeliver

GET /v1/webhooks/{id} · scope account:read

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12 \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.get

GET /v1/webhooks · scope account:read

Terminal window
curl https://api.truo.cloud/v1/webhooks \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.list

POST /v1/webhooks/{id}/ping · scope account:write · reversible

Queues a webhook.ping delivery to this webhook only, regardless of its subscriptions. Follow it in GET /v1/webhooks/{id}/deliveries.

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12/ping \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.ping

POST /v1/webhooks/{id}/rotate-secret · scope account:write · reversible

The old secret stops working immediately. Deliveries already in flight were signed with it.

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12/rotate-secret \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.rotate_secret

PATCH /v1/webhooks/{id} · scope account:write · reversible · idempotent

Terminal window
curl https://api.truo.cloud/v1/webhooks/whk_12 \
-X PATCH \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: webhooks.update