Rotate a signing secret
⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/webhooks/{webhook_id}/rotate_secretIssue a new signing secret. For the next 24 hours every delivery carries two v1 signatures, one per secret, so you can deploy the new secret without dropping events. After 24 hours only the new secret signs.
For how this fits into a full workflow, see Webhooks.
Headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer <key>: a private inference key (sk_live_...). See Authentication. |
syntic-beta | Yes, while in preview | webhooks-2026-11-01. Without it the call fails with 400 beta_required. See Versioning. |
Path parameters
| Parameter | Type | Description |
|---|---|---|
webhook_id | string | The webhook id, starting with whk_. |
Response
200 OK, Content-Type: application/json
{
"id": "whk_01JCA4C6E8G0J2L4N6Q8",
"object": "webhook",
"signing_secret": "whsec_P1x8Rr...redacted",
"previous_secret_expires_at": "2026-11-09T12:00:00Z"
}| Field | Type | Description |
|---|---|---|
signing_secret | string | The new secret. Shown only in this response. |
previous_secret_expires_at | string | When the old secret stops signing. |
Examples
curl -sS -X POST https://app.syntic.ai/v1/webhooks/whk_01JCA4C6E8G0J2L4N6Q8/rotate_secret \
-H "Authorization: Bearer $SYNTIC_API_KEY" \
-H "syntic-beta: webhooks-2026-11-01"Errors
Errors use the error envelope and carry a request_id. Codes specific to this operation:
| Status | type | code | When |
|---|---|---|---|
| 400 | invalid_request_error | beta_required | The syntic-beta header is missing. |
| 404 | not_found_error | webhook_not_found | No webhook with that id in this workspace. |
| 401 | authentication_error | invalid_api_key | The key is missing, unknown, revoked or expired. |
| 429 | rate_limit_error | rate_limited | Too many requests; wait for Retry-After. See Rate-limit headers. |
Related
Was this page helpful?