---
title: "Add a check to a playbook"
method: POST
path: "/playbooks/{id}/checks"
tags: ["Playbooks"]
---

# Add a check to a playbook

`POST /playbooks/{id}/checks`

## Request

- Base URL: `https://app.gc.ai/api/external/v1`
- URL: `https://app.gc.ai/api/external/v1/playbooks/{id}/checks`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/gc-ai/apis/gc-ai-external-api/docs/playbooks/:id/checks/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a check and append it to the playbook.

Requires write access to the playbook. With a user-scoped key the caller is recorded as the check’s creator; with an org-scoped key the check has no individual creator and is org-owned.

## Path parameters

- `id` string, uuid, required: Playbook ID from `GET /playbooks`.

## Request body

- CreatePlaybookCheckRequest
  - `title` string, required: Check title (required, non-empty).
  - `description` string, nullable: Optional internal description.
  - `importance` 'low' | 'medium' | 'high' | 'null', nullable: Optional priority within the playbook.
  - `positions` PlaybookCheckPositionInput[], required: The check's positions: exactly one `standard` position plus any number of `fallback` positions.
    - `type` 'standard' | 'fallback', required: Use `standard` for the primary stance and `fallback` for an alternative the reviewer may accept.
    - `guidance` string, required: The review stance for this position: what to require, accept, or flag.

## Response `201`

Check created

- PlaybookCheck
  - `id` string, uuid, required: Unique check identifier
  - `title` string, required: Check title
  - `description` string, nullable, required: Optional internal description, or null if unset
  - `importance` 'low' | 'medium' | 'high' | 'null', nullable, required: Priority of this check within the playbook, or null if unset
  - `positions` PlaybookCheckPosition[], required: The check's positions: one standard stance plus any fallbacks.
    - `type` 'standard' | 'fallback', required: The primary stance (`standard`) or an alternative fallback the reviewer may accept (`fallback`). Each check has exactly one standard position.
    - `guidance` string, nullable, required: The review stance for this position: what to require, accept, or flag. May be null for positions authored in the web app without guidance.
  - `created_at` string, nullable, required: ISO 8601 creation timestamp
  - `updated_at` string, nullable, required: ISO 8601 last-update timestamp

## Other responses

- `400`: Invalid request body
- `401`: Missing or malformed API key
- `403`: Invalid API key
- `404`: Playbook not found or not writable by the caller
- `429`: Rate limit exceeded. See [Rate Limits](https://docs.gc.ai/api-reference/concepts/rate-limits) for the tiers, limits, and how to back off.
- `500`: Internal server error
- `503`: Service temporarily unavailable

---

[API](https://skmtc.dev/gc-ai/apis/gc-ai-external-api.md) - [All operations](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/revisions/2bbdfddf7107?raw)
