# Create a playbook

> Creates a playbook at version 1. POST /api/v1/playbooks in the SOAT REST API.

Creates a playbook at version 1. The definition is refused with `400 PLAYBOOK_VALIDATION_FAILED` when it holds a duplicate node or input, an input reading a missing node or field, an `execute` node without an executor or another kind with one, transformations on a non-final node, or a cycle; `meta.problems` lists every one. A duplicate `name` in the project is `409 NAME_CONFLICT`.

The caller becomes the version's author, whom its executors run as, so it must be allowed to start every executor the definition names (`403 PLAYBOOK_EXECUTOR_FORBIDDEN`). A definition with executors written with a trigger or OAuth token is `409 PLAYBOOK_AUTHOR_UNAVAILABLE`: those carry their boundary in the token, so no run can act as them.

  Request

<RequestSchema
  {...require("./create-playbook.RequestSchema.json")}
>

<StatusCodes
  {...require("./create-playbook.StatusCodes.json")}
>
