Create or fully replace a playbook.
If no playbook with this playbook_id exists for the caller's org, it is created. If it already exists, the current version is archived and all fields are replaced with the supplied values (optional fields not supplied default to null).
PUT
/playbooks/{playbook_id}
curl \
--request PUT 'http://api.example.com/playbooks/{playbook_id}' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"name":"string","description":"string","goal":"string","pre_filter":{"additionalProperty1":true,"additionalProperty2":true},"audience_description":"string","available_channels":["string"],"capabilities_on_send":["string"],"tone_hint":"string","must_mention":["string"],"must_not_mention":["string"]}'
Request examples
{
"name": "string",
"description": "string",
"goal": "string",
"pre_filter": {
"additionalProperty1": true,
"additionalProperty2": true
},
"audience_description": "string",
"available_channels": [
"string"
],
"capabilities_on_send": [
"string"
],
"tone_hint": "string",
"must_mention": [
"string"
],
"must_not_mention": [
"string"
]
}
Response examples (200)
{
"id": "string",
"org_id": "string",
"playbook_id": "string",
"name": "string",
"description": "string",
"goal": "string",
"pre_filter": {},
"audience_description": "string",
"available_channels": [
"string"
],
"capabilities_on_send": [
"string"
],
"tone_hint": "string",
"must_mention": [
"string"
],
"must_not_mention": [
"string"
],
"version": 42,
"active": true,
"created_at": "2026-05-04T09:42:00Z",
"updated_at": "2026-05-04T09:42:00Z",
"created_by": "string"
}
Response examples (422)
{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"ctx": {}
}
]
}