---
title: "One campaign's playbook"
method: GET
path: "/api/v1/campaigns/{id}/sequence"
---

# One campaign's playbook

`GET /api/v1/campaigns/{id}/sequence`

## Request

- Base URL: `https://www.easeclaw.com`
- URL: `https://www.easeclaw.com/api/v1/campaigns/{id}/sequence`
- Auth: HTTP bearer

The steps the campaign runs, in order: the invitation, the wait for an acceptance, the messages that follow, the branches between them, with the exact text each step carries. This is where what a campaign SAYS lives; the campaign object carries the settings around it. A finished campaign's playbook stays readable: it is the record of what it ran with. Requires an outreach-scope API key (Pro plan or higher).

## Path parameters

- `id` string, uuid, required

## Response `200`

The playbook as the builder draws it

- object
  - `graph` SequenceGraph: A campaign's whole playbook: the steps it runs and how they connect. Posting one REPLACES the playbook. It does not merge.
    - `version` 1
    - `root` string, nullable: The first node, or null for an empty playbook.
    - `nodes` object
  - `step_count` integer
  - `newest_step_at` string, date-time, nullable: When the newest step was CREATED. Not a last-edited stamp: editing a step's text moves nothing here.

## Other responses

- `401`: Error
- `402`: Error
- `403`: The key is not outreach-scoped (code outreach_scope_required). Campaign paths need a key minted with the outreach scope at https://www.easeclaw.com/leads/api. The scope cannot be widened on an existing key.
- `404`: Error
- `429`: Rate limited (300/hour per account; drafting also 30/hour + daily AI budget). Retry-After header set when known.
- `500`: Error

---

[API](https://skmtc.dev/easeclaw/apis/easeclaw-api.md) · [All operations](https://skmtc.dev/easeclaw/apis/easeclaw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/easeclaw/apis/easeclaw-api/revisions/79a190b20f61?raw)
