Skip to main content
PUT
Replace a playbook

Authorizations

Authorization
string
header
required

Workspace credential issued from the automation console at /automation. Send it as Authorization: Bearer vq_ws_.... This is NOT a Data API key: a vq_key_ credential is refused here and names the other product in the error.

Path Parameters

playbookId
string
required

pbk_ identifier of the playbook. Take it from GET /v1/playbooks. A starter template is addressed by its slug instead, not by this.

Body

application/json

Replace a playbook's name, description and positions.

A PUT, and it replaces at the MAP level: a clause type absent from positions is removed from the playbook. Within a clause type that IS present, the five unpublished authoring fields are preserved (see playbook_positions.PRESERVED_ON_WRITE), because the alternative is deleting a lawyer's work with no error and no way to notice.

contractType is absent on purpose, and so is isDefault. Both are explained in the module docstring.

name
string
required

Replacement display name. Required: this is a PUT, not a patch.

Required string length: 1 - 200
Example:

"MSA, buyer side"

description
string | null

Replacement description, or null to clear it.

Maximum string length: 1000
Example:

"Master services agreement with Acme for the 2026 platform rollout."

positions
Positions · object

The COMPLETE set of positions after the write. Replacement happens at the map level: a clause type you omit is removed from the playbook. Within a clause type you do send, unpublished authoring fields set in the web app are preserved.

Response

Successful Response

One organization playbook, with every position it holds.

Positions are returned in full rather than summarized. A playbook is the input to a review, so a caller that cannot read the positions cannot tell what its reviews are being measured against, and a separate positions endpoint would make the common case two calls.

id
string
required

Public identifier, pbk_ followed by 32 hex characters.

Example:

"pbk_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

name
string
required

The playbook's display name.

Example:

"MSA, buyer side"

contractType
string
required

Which contract type this playbook governs. Fixed at creation: changing it would silently redirect which reviews resolve it.

Example:

"msa"

description
string | null

Free-text description of what this playbook covers.

Example:

"Master services agreement with Acme for the 2026 platform rollout."

positions
Positions · object

Every negotiating position the playbook holds, keyed by clause-type slug. Returned in full, because a caller that cannot read the positions cannot tell what its reviews are measured against.

isDefault
boolean
default:false

True when reviews of this contract type resolve to this playbook if none is named. Read-only here: exactly one default per contract type is enforced by the database, and this API cannot set it.

Example:

false

sourceFilename
string | null

Filename of the exemplar this playbook was extracted from, when it was imported rather than authored by hand.

Example:

"msa-acme-v3.docx"

createdAt
string<date-time> | null

When the playbook was created (RFC 3339).

Example:

"2026-08-19T14:32:10Z"

updatedAt
string<date-time> | null

When the playbook was last modified (RFC 3339).

Example:

"2026-08-19T14:32:10Z"

Last modified on August 23, 2026