Rotate a project's webhook signing secret
curl --request POST \
--url https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"created_at": "2023-11-07T05:31:56Z",
"secret": "<string>",
"previous_valid_until": "2023-11-07T05:31:56Z"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": "<string>",
"required_scope": "<string>"
}{
"error": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": "<string>"
}Management
Rotate a project's webhook signing secret
Replaces the project’s signing secret and returns the new one. For 24 hours webhooks carry two signatures, one with the new secret and one with the previous, so your endpoint can switch without dropping a delivery; after that only the new one signs. Rotating again within the 24 hours retires the previous secret at once. Requires the apikeys:write scope.
POST
/
management
/
v1
/
projects
/
{uuid}
/
webhook
/
secret
/
rotate
Rotate a project's webhook signing secret
curl --request POST \
--url https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.opper.ai/management/v1/projects/{uuid}/webhook/secret/rotate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"created_at": "2023-11-07T05:31:56Z",
"secret": "<string>",
"previous_valid_until": "2023-11-07T05:31:56Z"
},
"meta": {}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": "<string>",
"required_scope": "<string>"
}{
"error": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
},
"meta": {}
}{
"error": "<string>"
}Authorizations
Management API authentication. Pass an op-mak-… management token as a Bearer token. Runtime op-… API keys are rejected with 403 — they belong on the data-plane endpoints. Mint a management key from the platform UI under Settings → API keys.
Path Parameters
Project UUID
Last modified on November 3, 2026