Stop signing with a destination's previous secret
curl --request POST \
--url https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret \
--cookie hookie_session=const options = {method: 'POST', headers: {cookie: 'hookie_session='}};
fetch('https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret"
headers = {"cookie": "hookie_session="}
response = requests.post(url, headers=headers)
print(response.text){
"ok": true
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}Destinations
Stop signing with a destination's previous secret
Top-level alias: POST /admin/api/destinations//expire-previous-secret. Ends a rotation’s 24-hour overlap early: from the next delivery only the current secret signs. Owner or admin only, never an OAuth-connected agent; audited as expire_destination_previous_secret. Succeeds (and does nothing) when no previous secret is live. No request body is read.
POST
/
admin
/
api
/
projects
/
{pid}
/
destinations
/
{id}
/
expire-previous-secret
Stop signing with a destination's previous secret
curl --request POST \
--url https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret \
--cookie hookie_session=const options = {method: 'POST', headers: {cookie: 'hookie_session='}};
fetch('https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.hookie.ai/admin/api/projects/{pid}/destinations/{id}/expire-previous-secret"
headers = {"cookie": "hookie_session="}
response = requests.post(url, headers=headers)
print(response.text){
"ok": true
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}{
"error": "<string>",
"retry_after": 123,
"upgrade_url": "<string>",
"reason": "<string>",
"code": "agent_scope_insufficient",
"required_scope": "hookie:read",
"granted_scopes": [
"<string>"
],
"manage_url": "<string>"
}Authorizations
sessionbearerAuth
The console's sealed session cookie, set by WorkOS AuthKit. Mutating requests also require the X-Requested-With CSRF header.
Path Parameters
Project id (UUID) belonging to the caller workspace.
Destination id.
Response
The previous secret is gone.