Webhooks
Stage signing key
Create a secondary key and return its secret once. Events are signed with both keys (v1 and v1s) until you promote or retire it. The body is optional.
POST
https://api.sndr.sh/api/cranl/v1/webhooks/{id}/signing-keys/stageStage signing key
curl -X POST 'https://api.sndr.sh/api/cranl/v1/webhooks/wh_2a7d4e9c-6b1/signing-keys/stage' \
-H 'Authorization: Bearer sndr_your_access_token' \
-H 'Content-Type: application/json' \
-d '{"reason": "scheduled rotation"}'201Created
{
"id": "whk_61d0a9c7-5e4",
"webhook_id": "wh_2a7d4e9c-6b1",
"status": "secondary",
"created_at": "2026-06-01T13:00:00Z",
"created_by": "usr_5b2f8c1e-9a3",
"rotation_reason": "scheduled rotation",
"secret": "Qm3vT8xZ1cR6yH0nB5wL9kD2fJ7sA4gP"
}Authorization
AuthorizationstringheaderrequiredBearer followed by an access token. Needs the send scope.
Path parameters
idstringrequiredWebhook ID (wh_...).
Body
application/jsonreasonstringShort label stored with the key. Defaults to customer.
notesstringOptional free-form note.
Errors
401
unauthenticatedMissing or invalid Bearer token.401
token_expiredAccess token expired — exchange the refresh token for a new pair.401
token_revokedToken was explicitly revoked.400
invalid_requestBody is missing or not valid JSON (send {} for the defaults).403
insufficient_scopeToken is missing the send scope.404
not_foundResource does not exist or belongs to a different account.