> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kataven.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Node SDK — playbooks

> Node SDK reference for Kataven playbooks — reusable knowledge bundles attached to one or more agents.

`PlaybooksResource` is reachable on every Kataven Node client as `client.playbooks`. Each method maps to one HTTP endpoint on the [Hub API](/api-reference/introduction); links to the underlying spec entry are inline below.

Playbooks are reusable knowledge bundles (system-prompt fragments + tool lists) you attach to agents. CRUD via `client.playbooks`; attach/detach via `client.agents.attachPlaybook`.

## Methods at a glance

| Method   | HTTP                               | Summary                  |
| -------- | ---------------------------------- | ------------------------ |
| `list`   | `GET /api/playbooks`               | List playbooks           |
| `get`    | `GET /api/playbooks/{idOrName}`    | Get a single playbook    |
| `create` | `POST /api/playbooks`              | Create a custom playbook |
| `update` | `PUT /api/playbooks/{idOrName}`    | Update a playbook        |
| `delete` | `DELETE /api/playbooks/{idOrName}` | Delete a custom playbook |

## Reference

### `client.playbooks.list(...)`

List playbooks

**HTTP** — `GET /api/playbooks` · [API reference →](/api-reference/introduction#tag/Playbooks/operation/getApiPlaybooks)

```typescript theme={null}
list(opts: { category?: string; search?: string; limit?: number; offset?: number } = {})
```

### `client.playbooks.get(...)`

Get a single playbook

**HTTP** — `GET /api/playbooks/{id}` · [API reference →](/api-reference/introduction#tag/Playbooks/operation/getApiPlaybooksById)

```typescript theme={null}
get(idOrName: string)
```

Looks up by uuid or snake\_case name. Includes the markdown content from the prompts table.

### `client.playbooks.create(...)`

Create a custom playbook

**HTTP** — `POST /api/playbooks` · [API reference →](/api-reference/introduction#tag/Playbooks/operation/postApiPlaybooks)

```typescript theme={null}
create(input: {
  display_name: string;
  name?: string;
  category?: string;
  description?: string;
  tool_names?: string[];
  tags?: string[];
})
```

### `client.playbooks.update(...)`

Update a playbook

**HTTP** — `PUT /api/playbooks/{id}` · [API reference →](/api-reference/introduction#tag/Playbooks/operation/putApiPlaybooksById)

```typescript theme={null}
update(idOrName: string, patch: Record<string, unknown>)
```

Default playbooks flip modified\_from\_default=TRUE on first update so re-seeds skip them.

### `client.playbooks.delete(...)`

Delete a custom playbook

**HTTP** — `DELETE /api/playbooks/{id}` · [API reference →](/api-reference/introduction#tag/Playbooks/operation/deleteApiPlaybooksById)

```typescript theme={null}
delete(idOrName: string)
```

Default (seeded) playbooks cannot be deleted — only custom ones.
