Deliverd Knowledge API
The Knowledge API from Deliverd — 5 operation(s) for knowledge.
The Knowledge API from Deliverd — 5 operation(s) for knowledge.
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-knowledge-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 Knowledge API
version: 1.0.0
x-refined-note:
- x-source differs across the merged source definitions and was not carried
description: 'Operations tagged Knowledge 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: Knowledge
paths:
/api/v1/knowledge:
get:
summary: Search the knowledge
description: 'Ranked by relevance to `q`, or newest first without it. Confirmed entries unless `status` says otherwise: only those are to be relied on. `more` is true when the list was cut at `limit`.'
security:
- bearerAuth: []
parameters:
- schema:
type: string
required: false
name: q
in: query
- schema:
type: string
enum:
- fact
- convention
- decision
- procedure
- glossary
- contact
- known_issue
required: false
name: kind
in: query
- schema:
type: string
enum:
- confirmed
- proposed
- rejected
- retired
- superseded
- open
- all
required: false
name: status
in: query
- schema:
type: string
format: uuid
required: false
name: workspaceId
in: query
- schema:
type: string
format: uuid
required: false
name: flowId
in: query
- schema:
type: integer
required: false
name: limit
in: query
responses:
'200':
description: '`{ entries, more }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
tags:
- Knowledge
operationId: getApiV1Knowledge
x-operation-id-source: derived
post:
summary: Propose a knowledge entry
description: 'A proposal until a person confirms it in Deliverd; no key confirms anything. A secret is refused; personal data is said back as `screening`. With `supersedesId` it is a revision that replaces the confirmed entry once confirmed. With `externalId`, an open entry under the same one is returned instead (`resumed: true`, status 200).'
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
kind:
type: string
enum:
- fact
- convention
- decision
- procedure
- glossary
- contact
- known_issue
description: fact (true here), convention (how we do it), decision (settled, with why), procedure (a how-to note), glossary (what a term means here), contact (who to ask about what) or known_issue (a problem and its workaround)
title:
type: string
minLength: 1
maxLength: 200
description: The fact or rule in one line, as it should appear in a list
body:
type: string
minLength: 1
maxLength: 8000
description: 'The detail another agent needs to act on it, written to be read by a person. Never a secret, token or password: those are refused'
tags:
type: array
items:
type: string
minLength: 1
maxLength: 40
maxItems: 20
description: A few words to find it by
workspaceId:
type: string
format: uuid
description: Keep it inside one workspace; the whole organisation when omitted
flowId:
type: string
format: uuid
description: Tie it to one project (flow)
supersedesId:
type: string
format: uuid
description: The confirmed entry this would replace. It keeps that entry's scope, and replaces it only once a person confirms it
sourceUrl:
type: string
maxLength: 2000
format: uri
description: Where this comes from, if it is a page somebody can open
sourceLabel:
type: string
maxLength: 200
description: What the source is, in a few words
externalId:
type: string
maxLength: 200
description: Your own reference. An open entry with the same one is returned instead of a second
required:
- kind
- title
- body
responses:
'200':
description: An open entry under this externalId
content:
application/json:
schema:
type: object
additionalProperties: {}
'201':
description: '`{ entry, resumed, screening }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
tags:
- Knowledge
operationId: postApiV1Knowledge
x-operation-id-source: derived
/api/v1/knowledge/{id}:
get:
summary: A knowledge entry, with the versions before and after it
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
responses:
'200':
description: The entry, its `history` and any `pendingRevision`
content:
application/json:
schema:
type: object
additionalProperties: {}
'404':
description: Not found, or not visible to you
tags:
- Knowledge
operationId: getApiV1KnowledgeById
x-operation-id-source: derived
patch:
summary: Change a proposal
description: 'Only while it is proposed, and only by a person or the agent that proposed it. A confirmed entry''s words never change: propose a revision.'
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: true
name: id
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
kind:
type: string
enum:
- fact
- convention
- decision
- procedure
- glossary
- contact
- known_issue
title:
type: string
minLength: 1
maxLength: 200
body:
type: string
minLength: 1
maxLength: 8000
tags:
type: array
items:
type: string
minLength: 1
maxLength: 40
maxItems: 20
responses:
'200':
description: The entry
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
'409':
description: No longer a proposal
tags:
- Knowledge
operationId: patchApiV1KnowledgeById
x-operation-id-source: derived
/api/v1/knowledge/import:
post:
summary: Import Markdown as proposed entries
description: 'A Deliverd export, or a notes file an agent tool keeps (AGENTS.md, CLAUDE.md): each heading becomes one proposed entry. Entries already there by title or id are skipped and said so.'
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
markdown:
type: string
minLength: 1
maxLength: 1000000
description: 'Markdown: a Deliverd export, or a notes file such as AGENTS.md or CLAUDE.md. Each heading becomes one proposed entry'
workspaceId:
type: string
format: uuid
source:
type: string
maxLength: 200
description: Where the file came from, e.g. the repository and path
required:
- markdown
responses:
'200':
description: '`{ created, skipped }`'
content:
application/json:
schema:
type: object
additionalProperties: {}
'402':
description: The plan does not include Objectives (feature_unavailable). Reads are not refused.
tags:
- Knowledge
operationId: postApiV1KnowledgeImport
x-operation-id-source: derived
/api/v1/knowledge/export:
get:
summary: Export the knowledge
description: Everything the caller may see, as Markdown that imports back (the default) or JSON. Audited.
security:
- bearerAuth: []
parameters:
- schema:
type: string
enum:
- markdown
- json
required: false
name: format
in: query
- schema:
type: string
enum:
- confirmed
- proposed
- rejected
- retired
- superseded
- open
- all
required: false
name: status
in: query
- schema:
type: string
format: uuid
required: false
name: workspaceId
in: query
responses:
'200':
description: The file
content:
text/markdown:
schema:
type: string
application/json:
schema:
type: object
additionalProperties: {}
tags:
- Knowledge
operationId: getApiV1KnowledgeExport
x-operation-id-source: derived
/api/v1/knowledge/agents-md:
get:
summary: An AGENTS.md of the confirmed knowledge and the playbooks in force
description: For a tool that reads files rather than calling tools. A snapshot that says where the live version is.
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
required: false
name: workspaceId
in: query
responses:
'200':
description: AGENTS.md
content:
text/markdown:
schema:
type: string
tags:
- Knowledge
operationId: getApiV1KnowledgeAgentsMd
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