---
title: "Update a playbook"
method: PATCH
path: "/v3/ai-sdr/playbooks/{id}"
tags: ["AI SDR Playbooks"]
---

# Update a playbook

`PATCH /v3/ai-sdr/playbooks/{id}`

<small>_Requires the `ai-sdr:write` scope (or a broader one that includes it)._</small>

Partial update — send only the fields you want to change. `type` is immutable.

Requires the AI SDR feature on the caller's team.

## Path parameters

- `id` string, required

## Request body

- object — Partial update for a playbook. Send only the fields you want to change; absent fields retain their current value. At least one of `name`, `description`, or `body` must be present. `type` is immutable after creation and cannot be patched.
  - `name` string — Updated display name
  - `description` string — Updated description. Empty string allowed (clears the description).
  - `body` string — Updated body. Empty string allowed (clears the body).

## Response `200`

Playbook updated successfully

- object — Detailed representation of a playbook, returned by get/create/update responses.
  - `id` string — Composite identifier formatted as `{prefix}-{numericId}` where the prefix encodes the playbook scope: `g` for `global`, `o` for `organization`, `t` for `team` (e.g. `g-1`, `o-42`, `t-7`).
  - `name` string — Display name of the playbook
  - `description` string — Short description of the playbook's purpose
  - `body` string — Full playbook body — typically Markdown or plain text instructions the AI SDR follows when this playbook is applied.
  - `type` 'global' | 'organization' | 'team' — Identifies the visibility scope of a playbook. - `global` — Reply-curated, read-only across all teams. - `organization` — visible to every team in the caller's organization. - `team` — visible to the caller's team only. `global` playbooks are never created or modified via the API; only `organization` and `team` are accepted on create.
  - `lastUpdatedAt` string, date-time — Timestamp of the last modification
  - `authorUserId` integer, nullable — User ID of the playbook author. `null` for `global` playbooks and when the original author is no longer a team member.
  - `styleFiles` object[] — Style files attached to the playbook. Managed via the `/style-files` sub-resource — uploads are immediate, deletes are immediate; the field is read-only on the playbook payload.
    - `id` integer — Unique identifier for the style file
    - `fileName` string — Original name of the uploaded file

## Other responses

- `400` — Validation failure or malformed playbook id
- `401` — Unauthorized. The response body is empty; check the `WWW-Authenticate` header for the expected scheme.
- `403` — AI SDR feature is not available for the caller's team
- `404` — Playbook not found
- `502` — Upstream AI SDR service failure

---

[API](https://skmtc.net/reply/apis/reply-api.md) · [All operations](https://skmtc.net/reply/apis/reply-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/reply/reply-api/revisions/1c3d32eaf95e/schema)
