Rotate webhook signing secret
Issue a new signing secret and return it. The previous secret keeps signing alongside it for 24 hours, so deliveries stay verifiable while you roll the new value out; during that window webhook-signature carries both values, space delimited, and a receiver accepts whichever matches. Rotate immediately if a secret leaks.
https://api.omnifence.ai/api/v1/me/webhook-secrets/rotateIssues a new signing secret and returns it. The previous secret keeps signing alongside it for 24 hours, so deliveries stay verifiable while you roll the new value out.
During that window webhook-signature carries both values, space delimited, and a Standard Webhooks
library accepts whichever one matches. Split the header on spaces — the comma belongs inside each
v1,<base64> value.
Rotate immediately if a secret leaks. See rotating the secret.
These endpoints need the webhook:manage scope. Your dashboard session carries it, so Account →
Webhooks always works. An API key does not carry it by default — a key that only moderates
content must not be able to read the credential that proves a callback came from us. Contact
support if you need it on a key.
Request#
Headers#
| Name | Type | Required | Description |
|---|---|---|---|
Authorization |
string | Yes | Your API key as a Bearer token: Bearer YOUR_API_KEY. |
Responses#
200 OK#
| Field | Type | Always present | Description |
|---|---|---|---|
secret |
string | Yes | |
secrets |
array of object | Yes | |
secrets[].id |
string | Yes | |
secrets[].created_at |
string (date-time) | Yes | |
secrets[].expires_at |
null or string (date-time) | Yes | |
secrets[].status |
string | Yes | One of active, expiring. |
{
"secret": "string",
"secrets": [
{
"id": "string",
"created_at": "2026-05-19T12:00:00.000Z",
"expires_at": "2026-05-19T12:00:00.000Z",
"status": "active"
}
]
}