Deliverd Playbooks API
The Playbooks API from Deliverd — 6 operation(s) for playbooks.
The Playbooks API from Deliverd — 6 operation(s) for playbooks.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/deliverd-dev:deliverd-dev-playbooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Deliverd Dev Playbooks API
version: 1.0.0
x-refined-note:
- x-source differs across the merged source definitions and was not carried
description: 'Operations tagged Playbooks across 2 of this provider''s published API definitions: deliverd-dev-openapi.json, deliverd-dev-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://deliverd.dev
description: 'Deliverd REST API (paths carry the /api/v1 prefix; https://deliverd.dev/llms.txt: "REST API: https://deliverd.dev/api/v1")'
tags:
- name: Playbooks
paths:
/api/v1/playbooks:
get:
summary: List playbooks
description: 'One row per playbook: its newest version, and `inForce`, the version that runs. Approved prompts are playbooks of `kind` prompt; `?kind=` keeps one or the other.'
security:
- bearerAuth: []
parameters:
- schema:
type: string
enum:
- procedure
- prompt
description: procedure for playbooks of steps, prompt for approved prompts; both when omitted
required: false
description: procedure for playbooks of steps, prompt for approved prompts; both when omitted
name: kind
in: query
responses:
'200':
description: '`{ playbooks }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
tags:
- Playbooks
operationId: getApiV1Playbooks
x-operation-id-source: derived
post:
summary: Draft a playbook or an approved prompt
description: 'Steps, each with the rule that applies before it acts: `none`, `gate` (with the `action` to check), `approval` or `review`. Or `prompt` instead of steps, for an approved prompt: its words with `{input}` placeholders, an owner and a review date. Nobody runs a draft: a governing person publishes it in the app, or an approval of it is approved.'
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
minLength: 1
maxLength: 200
description: 'The job, as people name it: Onboard a supplier'
purpose:
type: string
minLength: 1
maxLength: 4000
description: The outcome when it is done. Becomes the objective of every run; for a prompt, the one line people see
steps:
type: array
items:
type: object
properties:
key:
type: string
maxLength: 48
description: A short key for the step, lowercase; made from the title when omitted
title:
type: string
minLength: 1
maxLength: 200
instruction:
type: string
minLength: 1
maxLength: 4000
description: What to do at this step, in a sentence or two
rule:
type: string
enum:
- none
- gate
- approval
- review
description: 'What applies before the step''s action: none, gate (check_gate for `action`), approval (request_approval) or review (request_review). none when omitted'
action:
type: string
maxLength: 100
description: 'For a gate step: the action to check, such as payments.send'
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 20
description: Knowledge entries this step relies on
required:
- title
- instruction
minItems: 1
maxItems: 30
description: The steps. Required for a playbook; left out for a prompt, which has one step of its own
prompt:
type: object
properties:
text:
type: string
minLength: 1
maxLength: 8000
description: The approved words. Put each input in as {input name}, e.g. Compare {previous contract} with {renewal contract}
limitations:
type: string
maxLength: 2000
description: What it is not for, and how to check what it produces
department:
type: string
maxLength: 120
description: The team or department it is for, as people would filter by it
taskType:
type: string
maxLength: 40
description: What kind of task, such as Analyze, Create or Edit
language:
type: string
maxLength: 20
description: The language it is written in, such as en-GB
ownerEmail:
type: string
maxLength: 320
format: email
description: The member who owns it and keeps it current; whoever drafts it when omitted
reviewDueOn:
type: string
format: date
description: When it is next reviewed, YYYY-MM-DD; six months on when omitted
checkOutput:
type: boolean
description: Run as a playbook, a person reviews the output before it is used
required:
- text
description: 'Send this instead of steps to draft an approved prompt: words people and agents use, versioned and approved like any playbook'
inputs:
type: array
items:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 60
description:
type: string
maxLength: 500
required:
type: boolean
required:
- name
maxItems: 20
description: What a run needs to be given, such as the supplier's name
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 50
description: Knowledge every step relies on
workspaceId:
type: string
format: uuid
note:
type: string
maxLength: 2000
required:
- title
- purpose
responses:
'201':
description: The draft
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
tags:
- Playbooks
operationId: postApiV1Playbooks
x-operation-id-source: derived
/api/v1/playbooks/{id}:
get:
summary: A playbook version, its family and the knowledge it relies on
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
responses:
'200':
description: The version, `versions`, `inForceId` and `knowledge`
content:
application/json:
schema:
type: object
additionalProperties: {}
'404':
description: Not found, or not visible to you
tags:
- Playbooks
operationId: getApiV1PlaybooksById
x-operation-id-source: derived
patch:
summary: Change a draft
description: Only before it has been put to anybody. After that, draft the next version.
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
minLength: 1
maxLength: 200
description: 'The job, as people name it: Onboard a supplier'
purpose:
type: string
minLength: 1
maxLength: 4000
description: The outcome when it is done. Becomes the objective of every run; for a prompt, the one line people see
steps:
type: array
items:
type: object
properties:
key:
type: string
maxLength: 48
description: A short key for the step, lowercase; made from the title when omitted
title:
type: string
minLength: 1
maxLength: 200
instruction:
type: string
minLength: 1
maxLength: 4000
description: What to do at this step, in a sentence or two
rule:
type: string
enum:
- none
- gate
- approval
- review
description: 'What applies before the step''s action: none, gate (check_gate for `action`), approval (request_approval) or review (request_review). none when omitted'
action:
type: string
maxLength: 100
description: 'For a gate step: the action to check, such as payments.send'
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 20
description: Knowledge entries this step relies on
required:
- title
- instruction
minItems: 1
maxItems: 30
description: The steps. Required for a playbook; left out for a prompt, which has one step of its own
prompt:
type: object
properties:
text:
type: string
minLength: 1
maxLength: 8000
description: The approved words. Put each input in as {input name}, e.g. Compare {previous contract} with {renewal contract}
limitations:
type: string
maxLength: 2000
description: What it is not for, and how to check what it produces
department:
type: string
maxLength: 120
description: The team or department it is for, as people would filter by it
taskType:
type: string
maxLength: 40
description: What kind of task, such as Analyze, Create or Edit
language:
type: string
maxLength: 20
description: The language it is written in, such as en-GB
ownerEmail:
type: string
maxLength: 320
format: email
description: The member who owns it and keeps it current; whoever drafts it when omitted
reviewDueOn:
type: string
format: date
description: When it is next reviewed, YYYY-MM-DD; six months on when omitted
checkOutput:
type: boolean
description: Run as a playbook, a person reviews the output before it is used
required:
- text
description: 'Send this instead of steps to draft an approved prompt: words people and agents use, versioned and approved like any playbook'
inputs:
type: array
items:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 60
description:
type: string
maxLength: 500
required:
type: boolean
required:
- name
maxItems: 20
description: What a run needs to be given, such as the supplier's name
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 50
description: Knowledge every step relies on
workspaceId:
type: string
format: uuid
note:
type: string
maxLength: 2000
required:
- title
- purpose
responses:
'200':
description: The draft
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
'409':
description: Already submitted
tags:
- Playbooks
operationId: patchApiV1PlaybooksById
x-operation-id-source: derived
/api/v1/playbooks/{id}/versions:
post:
summary: Draft the next version
description: The version in force keeps running until this one is put in force.
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
minLength: 1
maxLength: 200
description: 'The job, as people name it: Onboard a supplier'
purpose:
type: string
minLength: 1
maxLength: 4000
description: The outcome when it is done. Becomes the objective of every run; for a prompt, the one line people see
steps:
type: array
items:
type: object
properties:
key:
type: string
maxLength: 48
description: A short key for the step, lowercase; made from the title when omitted
title:
type: string
minLength: 1
maxLength: 200
instruction:
type: string
minLength: 1
maxLength: 4000
description: What to do at this step, in a sentence or two
rule:
type: string
enum:
- none
- gate
- approval
- review
description: 'What applies before the step''s action: none, gate (check_gate for `action`), approval (request_approval) or review (request_review). none when omitted'
action:
type: string
maxLength: 100
description: 'For a gate step: the action to check, such as payments.send'
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 20
description: Knowledge entries this step relies on
required:
- title
- instruction
minItems: 1
maxItems: 30
description: The steps. Required for a playbook; left out for a prompt, which has one step of its own
prompt:
type: object
properties:
text:
type: string
minLength: 1
maxLength: 8000
description: The approved words. Put each input in as {input name}, e.g. Compare {previous contract} with {renewal contract}
limitations:
type: string
maxLength: 2000
description: What it is not for, and how to check what it produces
department:
type: string
maxLength: 120
description: The team or department it is for, as people would filter by it
taskType:
type: string
maxLength: 40
description: What kind of task, such as Analyze, Create or Edit
language:
type: string
maxLength: 20
description: The language it is written in, such as en-GB
ownerEmail:
type: string
maxLength: 320
format: email
description: The member who owns it and keeps it current; whoever drafts it when omitted
reviewDueOn:
type: string
format: date
description: When it is next reviewed, YYYY-MM-DD; six months on when omitted
checkOutput:
type: boolean
description: Run as a playbook, a person reviews the output before it is used
required:
- text
description: 'Send this instead of steps to draft an approved prompt: words people and agents use, versioned and approved like any playbook'
inputs:
type: array
items:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 60
description:
type: string
maxLength: 500
required:
type: boolean
required:
- name
maxItems: 20
description: What a run needs to be given, such as the supplier's name
knowledgeIds:
type: array
items:
type: string
format: uuid
maxItems: 50
description: Knowledge every step relies on
workspaceId:
type: string
format: uuid
note:
type: string
maxLength: 2000
required:
- title
- purpose
responses:
'201':
description: The new draft
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
tags:
- Playbooks
operationId: postApiV1PlaybooksByIdVersions
x-operation-id-source: derived
/api/v1/playbooks/{id}/approval:
post:
summary: Put a draft to approvers
description: A Deliverd approval of the playbook; approved, it goes in force. Needs `approvals:write` and `tasks:write`. Its content is fixed from here.
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
approvers:
type: array
items:
type: string
minLength: 1
maxLength: 320
maxItems: 20
description: Emails, names or groups; the organisation's administrators when omitted
note:
type: string
maxLength: 2000
responses:
'200':
description: The version, awaiting approval
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
'409':
description: Already submitted
tags:
- Playbooks
operationId: postApiV1PlaybooksByIdApproval
x-operation-id-source: derived
/api/v1/playbooks/{id}/start:
post:
summary: Run a playbook
description: Starts the version in force as an objective, with a side task per step holding its instruction and the call its rule needs. Naming an older version runs the one in force (`ranOlderVersion`). Missing required inputs are refused with `details.missingInputs`. With `externalId`, an open run is returned instead (status 200).
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
minLength: 1
maxLength: 200
description: A name for this run, such as Onboard Northwind; the playbook's title when omitted
inputs:
type: object
additionalProperties:
type: string
maxLength: 1000
description: The playbook's inputs, by name
workspaceId:
type: string
format: uuid
flowId:
type: string
format: uuid
description: The project this run's approvals and reviews belong to
externalId:
type: string
maxLength: 200
description: Your own reference; an open run you started under it is returned instead of a second
sessionUrl:
type: string
maxLength: 2000
format: uri
responses:
'200':
description: An open run under this externalId
content:
application/json:
schema:
type: object
additionalProperties: {}
'201':
description: '`{ objective, resumed, playbook, steps, ranOlderVersion }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
'409':
description: No version is in force
tags:
- Playbooks
operationId: postApiV1PlaybooksByIdStart
x-operation-id-source: derived
/api/v1/playbooks/{id}/use:
post:
summary: Use an approved prompt
description: The version in force of the prompt, with the inputs put in, and its limitations. Each use is recorded against the version. Naming an older version hands out the one in force (`ranOlderVersion`). Required inputs not given are listed in `missingInputs` and their placeholders left in the words. Needs `tasks:read`.
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
inputs:
type: object
additionalProperties:
type: string
maxLength: 4000
description: The prompt's inputs, by name; a placeholder not given stays in the words
responses:
'200':
description: '`{ prompt, text, missingInputs, limitations, ranOlderVersion }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
'409':
description: No version is in force
tags:
- Playbooks
operationId: postApiV1PlaybooksByIdUse
x-operation-id-source: derived
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API key (dlv_…) created in Settings → API tokens, or an OAuth access token (dlvo_…). Every route below can answer `401 auth_error` — the credential was not accepted — or `403 insufficient_scope`, which is a different thing: the credential is fine and was not issued with the scope this route needs. Reissue it with that scope rather than replacing it with another of the same ones. Older clients may still branch on `auth_error` for both.'
x-refined-from:
- deliverd-dev-openapi.json
- deliverd-dev-openapi.yml