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

# Playbooks & schedules

> List playbooks and drive recurring runs over the API.

Playbooks are **read-only over the API**: `GET /v1/projects/{project_id}/playbooks` lists them, and there is no create. A playbook has to exist (authored in the app, or by Addison) before anything else here applies.

Schedules are how you run one programmatically. Product-side docs: [Playbooks](/features/artifacts/playbooks).

<Warning>
  Schedule runs send **real email** to the recipients they name, immediately, and a run cannot be recalled. Keep the recipient list empty while you iterate.
</Warning>

## Create a playbook

Playbooks are authored by asking [Addison](/features/addison) inside a project. That path works over the API today, through the conversations endpoints. Describe the analysis, the outputs, and the parameters you want, and Addison writes the `.spb`.

## Find and open playbooks

<Card title="GET /v1/projects/{project_id}/playbooks" icon="code" href="/api-reference/playbooks/list-playbooks" horizontal>
  List a project's playbooks.
</Card>

<Card title="GET /v1/projects/{project_id}/playbooks/{playbook_id}" icon="code" href="/api-reference/playbooks/show-playbook" horizontal>
  Show a single playbook.
</Card>

## What's in a playbook

<Card title="GET /v1/projects/{project_id}/playbooks/{playbook_id}" icon="code" href="/api-reference/playbooks/show-playbook" horizontal>
  Show a playbook, including its manifest: title, description, parameters, and data context.
</Card>

## Run a playbook

<Card title="POST /v1/schedules/{schedule_id}/runs" icon="code" href="/api-reference/schedules/run-schedule-now" horizontal>
  Run a schedule's playbook immediately, without waiting for its next occurrence.
</Card>

Until then, **a paused schedule is how you run a playbook over the API.** Create one with `paused` set so it cannot fire on its own, then trigger it by hand. The run is real; the cadence never starts.

<Warning>
  Leave the recipient list empty while you are still iterating. Running a schedule delivers real email immediately, and a manual run cannot be recalled once it has gone.
</Warning>

## Schedule a playbook

<CardGroup cols={2}>
  <Card title="GET /v1/schedules" icon="code" href="/api-reference/schedules/list-schedules" horizontal>
    List schedules.
  </Card>

  <Card title="POST /v1/schedules" icon="code" href="/api-reference/schedules/create-schedule" horizontal>
    Create a schedule.
  </Card>

  <Card title="GET /v1/schedules/{schedule_id}" icon="code" href="/api-reference/schedules/show-schedule" horizontal>
    Show a schedule.
  </Card>

  <Card title="PUT /v1/schedules/{schedule_id}" icon="code" href="/api-reference/schedules/update-schedule" horizontal>
    Update a schedule.
  </Card>

  <Card title="POST /v1/schedules/{schedule_id}/pause" icon="code" href="/api-reference/schedules/pause-schedule" horizontal>
    Pause a schedule.
  </Card>

  <Card title="POST /v1/schedules/{schedule_id}/resume" icon="code" href="/api-reference/schedules/resume-schedule" horizontal>
    Resume a schedule.
  </Card>

  <Card title="DELETE /v1/schedules/{schedule_id}" icon="code" href="/api-reference/schedules/delete-schedule" horizontal>
    Delete a schedule.
  </Card>
</CardGroup>

## Run history

<Card title="GET /v1/schedules/{schedule_id}/runs" icon="code" href="/api-reference/schedules/list-schedule-runs" horizontal>
  List a schedule's runs.
</Card>

## Rename, copy, and download

**A `.spb` has no raw content to download.** It is a directory of files (`manifest.yaml` and the templates beside it), so a file download of the playbook id returns nothing. You cannot read back the SQL Addison generated; check the work through the produced report instead, and say plainly that you could not read the source.
