Subroutine HTTP API
Every operation this release serves over HTTP, grouped by tag, as its OpenAPI document describes it. The data shapes they take and return are on one page.
A self-hosted, agent-native task and decision tracker for people and coding agents working on complex projects.
GET /v1/meta reports this installation's vocabulary - its statuses, link types, field
operators and date grammar - so a client can read them rather than assume them.
GET /v1/docs/agent is a guide written for an agent working through this API.
Errors are RFC 9457 problem documents and every one carries a stable code; the codes are
part of the public contract and are listed in docs/errors.md.
health
GET /healthz- Is this process alive?GET /readyz- Can this instance serve requests?
mcp
POST /mcp- Speak MCP to this instance
identity
GET /signin- Exchange a sign-in link for a browser sessionPOST /v1/login-links- Issue a sign-in link for somebodyGET /v1/me- Who am I, and what may I do?DELETE /v1/session- Sign this browser outPOST /v1/users/{username}/signout- Sign somebody out of every browser they are signed in on
admin
GET /v1/admin/backups- List the backups this instance holdsPOST /v1/admin/backups- Take a backup
agenda
GET /v1/agenda- What am I doing today?
calendars
GET /v1/calendars- List your calendar feedsPOST /v1/calendars- Create a calendar feedDELETE /v1/calendars/{id_or_prefix}- Revoke a calendar feedPOST /v1/calendars/{id_or_prefix}/reset- Give a feed a new URLGET /v1/calendars/{prefix}/{secret}.ics- Fetch a calendar feed
changes
GET /v1/changes- What changed since you last looked
comments
PATCH /v1/comments/{comment_id}- Edit your own commentDELETE /v1/comments/{comment_id}- Delete a commentGET /v1/documents/{id_or_ref}/comments- List a document's commentsPOST /v1/documents/{id_or_ref}/comments- Comment on a documentGET /v1/projects/{id_or_key}/comments- List a project's commentsPOST /v1/projects/{id_or_key}/comments- Comment on a projectGET /v1/tasks/{id_or_ref}/comments- List a task's commentsPOST /v1/tasks/{id_or_ref}/comments- Comment on a task
discovery
GET /v1/docs/agent- A guide written for an agentGET /v1/docs/examples- Worked calls, in the order an agent needs themGET /v1/meta- What does this installation call things?
documents
GET /v1/documents- List documentsPOST /v1/documents- Write a documentGET /v1/documents/{id_or_ref}- Read one documentPATCH /v1/documents/{id_or_ref}- Change a documentDELETE /v1/documents/{id_or_ref}- Move a document to the trashPOST /v1/documents/{id_or_ref}/move- Nest a document under another, or move it to the top levelPOST /v1/documents/{id_or_ref}/restore- Take a document out of the trash
links
GET /v1/documents/{id_or_ref}/backlinks- List what refers to a documentGET /v1/documents/{id_or_ref}/governing- List what governs a documentGET /v1/documents/{id_or_ref}/links- List a document's linksPOST /v1/documents/{id_or_ref}/links- Link a document to somethingDELETE /v1/documents/{id_or_ref}/links/{link_id}- Withdraw a linkGET /v1/documents/{id_or_ref}/proposed-links- List the links a document's writing suggestsGET /v1/documents/{id_or_ref}/tree- Walk what has to happen before a documentGET /v1/tasks/{id_or_ref}/backlinks- List what refers to a taskGET /v1/tasks/{id_or_ref}/governing- List what governs a taskGET /v1/tasks/{id_or_ref}/links- List a task's linksPOST /v1/tasks/{id_or_ref}/links- Link a task to somethingDELETE /v1/tasks/{id_or_ref}/links/{link_id}- Withdraw a linkGET /v1/tasks/{id_or_ref}/proposed-links- List the links a task's writing suggestsGET /v1/tasks/{id_or_ref}/tree- Walk what has to happen before a task
events
GET /v1/documents/{id_or_ref}/events- What happened to this documentGET /v1/documents/{id_or_ref}/journal- What happened to this document, with what was saidGET /v1/projects/{id_or_key}/events- What happened to this projectGET /v1/tasks/{id_or_ref}/events- What happened to this taskGET /v1/tasks/{id_or_ref}/journal- What happened to this task, with what was said
export
GET /v1/export/comments- Export the comments you can readGET /v1/export/documents- Export the documents you can readGET /v1/export/events- Export the events you can readGET /v1/export/item_types- Export the item types you can readGET /v1/export/link_types- Export the link types you can readGET /v1/export/links- Export the links you can readGET /v1/export/members- Export the members you can readGET /v1/export/project_members- Export the project members you can readGET /v1/export/projects- Export the projects you can readGET /v1/export/saved_views- Export the saved views you can readGET /v1/export/statuses- Export the statuses you can readGET /v1/export/tags- Export the tags you can readGET /v1/export/tasks- Export the tasks you can readGET /v1/export/users- Export the users you can readGET /v1/export/verifications- Export the verifications you can readGET /v1/export/workspace- Export the workspace you can read
instance
PATCH /v1/instance- Change what this installation is calledGET /v1/instance/unadministered-workspaces- Workspaces nobody here can administerGET /v1/instance/unreachable-projects- Private projects nobody here can reachGET /v1/instance/workspaces- Every workspace on this installation
journal
GET /v1/journal- What happened over a period, with what was said
vocabulary
GET /v1/link-types- The ways two items can relate herePOST /v1/link-types- Add a link typePATCH /v1/link-types/{which}- Rename a link typeDELETE /v1/link-types/{which}- Remove a link typeGET /v1/statuses- The statuses this workspace hasPOST /v1/statuses- Add a statusPATCH /v1/statuses/{which}- Rename or reposition a statusDELETE /v1/statuses/{which}- Remove a statusGET /v1/tags- The tags this workspace hasPOST /v1/tags- Declare a tagPATCH /v1/tags/{which}- Rename a tag, or say what it meansDELETE /v1/tags/{which}- Remove a tag
projects
GET /v1/projects- List projectsPOST /v1/projects- Create a projectGET /v1/projects/{id_or_key}- Read one projectPATCH /v1/projects/{id_or_key}- Change a projectDELETE /v1/projects/{id_or_key}- Move a project to the trashGET /v1/projects/{id_or_key}/members- Who can see this projectPOST /v1/projects/{id_or_key}/members- Let somebody see a private projectDELETE /v1/projects/{id_or_key}/members/{username}- Stop somebody seeing a private projectPOST /v1/projects/{id_or_key}/move- Move a project in the treePOST /v1/projects/{id_or_key}/restore- Take a project out of the trashGET /v1/projects/{id_or_key}/settings- What is in force in this project, and where it came from
recurrence
POST /v1/recurrence/parse- What does this repeat mean?
tasks
GET /v1/tasks- List tasksPOST /v1/tasks- Create a taskGET /v1/tasks/{id_or_ref}- Read one taskPATCH /v1/tasks/{id_or_ref}- Change a taskDELETE /v1/tasks/{id_or_ref}- Move a task to the trashPOST /v1/tasks/{id_or_ref}/claim- Take a task, so nobody else doesPOST /v1/tasks/{id_or_ref}/complete- Mark a task finishedPOST /v1/tasks/{id_or_ref}/move- Move a task under another, or to the top levelGET /v1/tasks/{id_or_ref}/occurrences- When does this come round?POST /v1/tasks/{id_or_ref}/release- Give a task backPOST /v1/tasks/{id_or_ref}/restore- Take a task out of the trashPOST /v1/tasks/{id_or_ref}/skip- Let one occurrence of a repeat go byGET /v1/tasks/{id_or_ref}/verifications- What has been checked against this taskPOST /v1/tasks/{id_or_ref}/verifications- Record what was checked against this task
tokens
GET /v1/tokens- List the credentials you can act onPOST /v1/tokens- Issue a credentialDELETE /v1/tokens/{id_or_prefix}- Revoke a credential
users
GET /v1/users- List the accounts on this instancePOST /v1/users- Create an accountGET /v1/users/{username}- Read one accountPATCH /v1/users/{username}- Mark somebody as having left, hand an agent over, or say where you are
views
GET /v1/views- The views you can seePOST /v1/views- Save a viewGET /v1/views/{key}- One saved viewPATCH /v1/views/{key}- Change a saved viewDELETE /v1/views/{key}- Forget a saved view
workspaces
GET /v1/workspaces- List workspacesPOST /v1/workspaces- Create a workspaceGET /v1/workspaces/{id_or_slug}- Read one workspacePATCH /v1/workspaces/{id_or_slug}- Change a workspaceDELETE /v1/workspaces/{id_or_slug}- Move a workspace to the trashGET /v1/workspaces/{id_or_slug}/members- Who belongs to this workspacePOST /v1/workspaces/{id_or_slug}/members- Add somebody to this workspacePATCH /v1/workspaces/{id_or_slug}/members/{username}- Change what somebody may do in this workspaceDELETE /v1/workspaces/{id_or_slug}/members/{username}- Take somebody out of this workspacePOST /v1/workspaces/{id_or_slug}/restore- Take a workspace out of the trashGET /v1/workspaces/{id_or_slug}/settings- What is in force in this workspace, and where it came from