Skip to content
LogoLogo

Tasks

Project Tasks.

Capture or explicitly refresh a checked Task result set

POST/api/v1/workspaces/{workspace_id}/task-result-sets

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
queryRequired
object

Checked canonical query; Core normalizes filters and intersects authorized Project scope. State and resolution follow the Workspace Task list contract. Optional filter_terms/order apply within the ten-page/1000-row checked scan ceiling; they do not introduce unbounded search. Saved views retain these fields and reopening creates a fresh result set with current coverage.

refresh_id
string <uuid>
expected_version
integer <int64>

Responses

Read an exact Task result-set version

GET/api/v1/workspaces/{workspace_id}/task-result-sets/{id}

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

versionRequired
integer·min 1

Responses

Select exact result-set Task identities

POST/api/v1/workspaces/{workspace_id}/task-selections

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
result_set_idRequired
string <uuid>
result_set_versionRequired
integer <int64>
task_idsRequired
string <uuid>[]·min 1·max 1000

Responses

Read a frozen Task selection

GET/api/v1/workspaces/{workspace_id}/task-selections/{id}

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Hydrate up to 100 exact result-set targets with current compact Task previews

GET/api/v1/workspaces/{workspace_id}/task-result-sets/{id}/hydrate

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

versionRequired
integer·min 1
offset
integer·min 0·max 999·default 0

Responses

Reauthorize up to100 selected Task identities

GET/api/v1/workspaces/{workspace_id}/task-selections/{id}/hydrate

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

offset
integer·min 0·max 999·default 0

Responses

List personal Task queries

GET/api/v1/workspaces/{workspace_id}/task-saved-views

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Create or revision-check a personal Task query

POST/api/v1/workspaces/{workspace_id}/task-saved-views

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
id
string <uuid>
expected_revision
integer <int64>
nameRequired
string·min 1·max 100
queryRequired
object

Checked canonical query; Core normalizes filters and intersects authorized Project scope. State and resolution follow the Workspace Task list contract. Optional filter_terms/order apply within the ten-page/1000-row checked scan ceiling; they do not introduce unbounded search. Saved views retain these fields and reopening creates a fresh result set with current coverage.

definition
object

Membership-private Project Task presentation. Maximum serialized size is 16 KiB. Query Project scope must match project_id. Missing parameters use the current Project Task presentation defaults; unsupported keys or values are rejected. An update omitting definition preserves the existing definition, and an existing definition cannot move to another Project.

Responses

Delete an exact personal Task-query revision

POST/api/v1/workspaces/{workspace_id}/task-saved-views/delete

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
idRequired
string <uuid>
expected_revisionRequired
integer <int64>

Responses

Create or edit a versioned Document draft

POST/api/v1/workspaces/{workspace_id}/document-patches

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
document_idRequired
string <uuid>
base_revisionRequired
integer <int64>
contentRequired
object
id
string <uuid>
expected_version
integer <int64>

Responses

Read an exact Document draft version

GET/api/v1/workspaces/{workspace_id}/document-patches/{id}

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

versionRequired
integer·min 1

Responses

Propose bounded versioned changes

POST/api/v1/workspaces/{workspace_id}/change-sets

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
operationsRequired
object[]·min 1·max 100

modeRequired
string
Values
atomicper_item
selection_id
string <uuid>
id
string <uuid>
expected_version
integer <int64>

Responses

Read an exact proposal and accessible outcomes

GET/api/v1/workspaces/{workspace_id}/change-sets/{id}

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

versionRequired
integer·min 1

Responses

Apply an exact reviewed proposal

POST/api/v1/workspaces/{workspace_id}/change-sets/apply

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
idRequired
string <uuid>
versionRequired
integer <int64>
digestRequired
string·min 64·max 64

Responses

Approve or reject an exact proposal as its initiating human

POST/api/v1/workspaces/{workspace_id}/change-sets/{id}/review

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Only the initiating human can review this exact digest; approval cannot be supplied through MCP.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Request Body

application/json
versionRequired
integer <int64>
digestRequired
string·min 64·max 64
decisionRequired
string
Values
approvereject

Responses

Resolve a committed operation under current authority

GET/api/v1/workspaces/{workspace_id}/operation-receipts/{id}

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Conditionally compensate an initiating member operation

POST/api/v1/workspaces/{workspace_id}/operation-receipts/undo

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Requires a browser session and CSRF. Reuse Idempotency-Key only for the same request. Before retrying an uncertain write, resolve its operation receipt.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
idRequired
string <uuid>

Responses

Resolve an exact member identity with ambiguity preserved

GET/api/v1/workspaces/{workspace_id}/members/resolve

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

queryRequired
string·min 1·max 200

Responses

Read bounded canonical Task context

GET/api/v1/workspaces/{workspace_id}/tasks/{id}/context

Membership-private native work capability. Current Workspace and resource permissions are checked on every request. Responses use Cache-Control: no-store. Exact versions never refresh or replace selected targets implicitly.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

List access-filtered Task activity

GET/api/v1/tasks/{task_id}/activity

Returns the Task's own history plus associated comment and Task relation events, newest first. It shares the Workspace Activity retention, redaction, current-access filtering, grouping, and safe projection rules, and it additionally includes ordinary property changes (such as a title correction) that the Workspace feed omits. Personal following and muting changes and ordinary reactions are not included. Private-Project access is re-evaluated for every request.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

Read bounded Workspace Knowledge context related to a Task

GET/api/v1/workspaces/{workspace_id}/tasks/{task_id}/related-context

Returns a permission-filtered, read-only projection. Globally unconfigured, disabled, unentitled, unacknowledged, empty-scope, and out-of-scope Knowledge conditions use the empty state; unavailable is reserved for genuine retrieval/currentness failures after eligibility. Neither state blocks the owning Task workflow. Indexed subjects may discover Documents through shared distinctive title terms without a cross-domain link generation. Inferred suggestions explain their shared terms and never create or change canonical Task relations.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

include_code
boolean·default false

Opt in to read-only indexed code references from repositories bound to this Task Project. Uses deterministic Cognee identifier matching, not semantic model ranking. Code references have no feedback entity ID; open their revision-pinned GitHub URL to review them. Defaults to false for compatibility.

include_commit_mentions
boolean·default false

Opt in to verified GitHub commit findings from Task comments. Defaults to false so older clients continue receiving only Task and Document findings. Commit lookup runs in the background and does not require Workspace Knowledge indexing to be enabled.

Header Parameters

X-Assign-Realtime-Baseline
string

Upcoming browser-session derived read. Set to '1' to capture an authorized Workspace replay boundary before remote Knowledge retrieval. Core joins occur in newer snapshots; the result can still report index lag. Apply retained results before acknowledging the socket checkpoint. Failed reads return no cursor.

Values
1

Responses

Confirm or discard one Suggestions-tab finding

POST/api/v1/workspaces/{workspace_id}/tasks/{task_id}/suggestion-feedback

Confirming a Task finding creates a canonical relates relation; confirming a Document links it. Confirming a commit finding adds the verified commit to Linked development after rechecking the current Task, comment and repository binding. Commit outcomes persist in Core; Task and Document outcomes also relay to Workspace Knowledge. Confirming is idempotent and discarding suppresses the finding for this Task.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
entity_kindRequired
string
Values
taskdocumentcommit
entity_idRequired
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001
outcomeRequired
string
Values
confirmeddiscarded

Responses

List bounded Workspace Tasks

GET/api/v1/workspaces/{workspace_id}/tasks

Returns a newest-updated-first cursor page of Tasks in the current Workspace. It is an activity collection, not a text-search endpoint. Repeated project_id and status_category filters use OR semantics; a Project outside the Workspace simply contributes no rows. With consistency=checked, Core binds continuation to the normalized filters, caller, collection version and visibility revision. Complete coverage requires an unchanged scan ending without a cursor. Changed data or permissions returns an empty stale page without continuation. Ten pages or 1,000 rows caps a scan; an incomplete capped result remains partial. Restart stale scans explicitly. Omitted consistency preserves legacy pagination without a completeness claim.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

project_id
string <uuid>[]·max 100

Restrict to one or more Project identifiers.

status_category
string[]·max 5

Restrict to one or more Status lifecycle categories.

Values
backlogtodoin_progressin_reviewdone
behavior
string[]·max 8

Keep Tasks whose current stage has every named lifecycle behavior enabled (AND semantics, at most 8 distinct keys). Keys are the Task-applicable entries of listLifecycleBehaviors; an unknown or non-Task key is a 400. Totals and cursors honor the filter.

Values
notifyshow_activetreat_as_closedcounts_as_completedallow_changes
assignee_actor_id
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
milestone_id
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
updated_since
string <date-time>

Include Tasks updated at or after this instant.

Example2026-08-15T12:00:00Z
include_archived
boolean·default false

Include archived Tasks; omitted or false returns active Tasks only.

consistency
string

Opt into service-derived coverage and version-bound pagination.

Values
checked
state
string·default all

Active means unresolved; omitted or all includes active and resolved Tasks.

Values
activeresolvedall
resolution
string

Restrict to completed or cancelled resolution. Incompatible with active state.

Values
completedcancelled

Responses

Resolve a Task's canonical Workspace URL

GET/api/v1/workspaces/{workspace_id}/tasks/{task_code}

Resolves the stable, case-insensitive Task code inside the current Workspace after Workspace and Project read authorization. Unlike active Task collections, this route returns archived and trashed Tasks during recovery and the safe Task tombstone after purge so canonical browser URLs remain durable without exposing content removed by retention. Native bearer reads use live Workspace membership and the same resource visibility. Invalid native credentials never fall back to browser cookies.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
task_codeRequired
string·min 4·max 28

Case-insensitive UI-equivalent Task code (PROJECT_KEY-TASK_NUMBER, for example PRO-123), normalized to uppercase before lookup.

Responses

Update up to 100 explicitly selected Tasks

POST/api/v1/workspaces/{workspace_id}/tasks/bulk

Applies the same patch independently to one through 100 explicit Task IDs in the current Workspace. Every item carries the revision it was selected from; authorization and compare-and-swap checks happen per Task, so selection never grants access. The response always contains one outcome per requested item in request order. Retry only failed items with their then-current revisions and a fresh idempotency key.

This initial synchronous command supports status, assignee, priority, due date, and milestone changes. It has no snapshot-query input, asynchronous job, progress, or cancellation contract; requests over 100 items are rejected. Archive/restore and labels remain separate operations with their own accepted lifecycle rules.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
itemsRequired
object[]·min 1·max 100

changesRequired
object

Responses

Read the caller's bounded My Work view

GET/api/v1/workspaces/{workspace_id}/work

Returns one caller-scoped Task view. The server obtains the actor from the authenticated principal; no actor filter is accepted. Browser sessions and bearer credentials resolve the same live caller authorization; bearer credentials never inherit browser cookies. Date membership uses the actor's persisted IANA timezone and the returned as_of_date.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

viewRequired
string
Values
assignedoverduetodayupcomingcompleted

Responses

Read the caller's actively followed Tasks

GET/api/v1/workspaces/{workspace_id}/subscribed-tasks

Returns Tasks the caller currently follows (subscription state following) in the Workspace, newest subscription activity first. The server obtains the actor from the authenticated principal; no actor filter is accepted. Muted and unfollowed subscriptions are excluded, as are Tasks in a private Project the caller cannot see.

Path Parameters

workspace_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

List Project Tasks

GET/api/v1/projects/{project_id}/tasks

Returns one page ordered by the Task's immutable project-local number by default. Column orders require exactly one status_id, exclude archived Tasks, and return a snapshot-consistent column total and advisory movement permission instead of global history counts. Cursors bind the Project, Status, order and filters. Rank pagination is a live traversal; concurrent moves can require refreshing earlier pages.

Path Parameters

project_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

state
string·default all

Filter by the lifecycle umbrella derived from current resolution facts.

Values
activeresolvedall
status_id
string <uuid>[]·max 100
assignee_actor_id
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
resolution
string
Values
completedcancelled
include_archived
boolean·default false
order
string·default number

Column rank order or newest resolution first; number retains history semantics.

Values
numberrankrank_descresolved_desc
resolved_since
string <date-time>

Inclusive recent-resolution cutoff for column orders; does not restrict column.total.

anchor_task_id
string <uuid>

Start strictly after this current Task in the chosen rank direction. Must belong to this Project and Status. Cannot accompany cursor or resolved_desc. Other history filters are not accepted with column orders.

Example0198ac5e-f9b7-7000-8000-000000000001
milestone_id
string <uuid>[]·max 100

Match any selected milestone before pagination. Supported with number order only; an unknown or other-Project ID matches no Tasks.

Responses

Create a Task

POST/api/v1/projects/{project_id}/tasks

Canonical content with an unsupported schema or an attempted schema 2-to-1 downgrade returns 409 document_schema_version_unsupported. Restoring an older Document revision retains an existing schema 2 floor. Creates a Task with an atomically allocated project-local number. Accepts scoped bearer credentials with live Workspace and Project authorization. Browser sessions still require CSRF; bearer callers omit it.

Path Parameters

project_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-Token
string·min 1·max 200

Required when this operation uses browserSession; native bearer callers omit it because no ambient cookie is sent.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
status_id
string <uuid>

Omit to use the Workspace's default Task workflow category.

Example0198ac5e-f9b7-7000-8000-000000000001
assignee_actor_id
string <uuid>

Omit to use the Workspace's default Task assignee policy.

Example0198ac5e-f9b7-7000-8000-000000000001
titleRequired
string·min 1·max 500
priority
string

Omit to use the Workspace's default Task priority.

Values
nonelowmediumhighurgent
description
object

Versioned, server-validated rich-text document. The server accepts only nodes and marks on the Assign allowlist and rejects anything outside it; the client's installed editor extension set is never authoritative. Complexity is bounded at 32 levels of nesting and 50,000 nodes in addition to the per-field byte limits.

Accepted nodes: doc, paragraph, text, heading, bulletList, orderedList, listItem, taskList, taskItem, blockquote, callout, codeBlock, blockMath, horizontalRule, hardBreak, image, file, plus the reference nodes userMention, projectReference, documentReference, and taskReference. Accepted marks: bold, italic, underline, strike, code, link.

A Task-description or Comment mutation accepts at most 100 distinct canonical user identifiers across its userMention nodes. Repeated mentions of the same user count once.

image and file name an Assign attachment through attrs.attachmentId and carry no URL and no bytes: attachments travel only through the attachment upload and download operations, and a signed URL is minted per request after a fresh authorization check rather than stored in content. A request whose image or file node omits attachmentId, or carries a URL-bearing attribute, is rejected.

callout has block children and exactly attrs.kind and attrs.icon. Kind is callout, note, tip, important, warning, or caution. Icon is null for the default Lucide icon, an emoji of at most 64 UTF-8 bytes, an allowlisted lucide:name token to override it, or an empty string to hide it. Unknown Lucide names are rejected. HTML, URLs and image data are not accepted as icons. Callouts are additive in schemas 1 and 2.

blockMath stores a required string attrs.latex; rendered math HTML and renderer settings are not persisted. Schema 1 retains the existing node contract; schema 2 additionally admits tables. Checklists, attachment blocks, display equations, underline, and projectReference were added additively, so every previously stored document is still valid and no migration is required.

Schema 2 additionally accepts table, tableRow, tableCell and tableHeader. A table has tableRow children; a row has tableCell/tableHeader children. Cells contain Assign blocks, starting with a paragraph; nested tables are rejected. Cells accept colspan/rowspan (integers 1–64, default 1), colwidth (null or one integer 24–2000 per spanned column), and align (null, left, center or right). Tables/rows have no attrs, marks or text; cells have no marks/text or other attributes. The occupancy grid must be rectangular with no overlap, holes or spans beyond its rows. Limits are 1000 rows, 64 logical columns and 10000 physical cells, still subject to each field's byte budget and global node/depth limits. Schema 1 rejects all four table nodes. Rich tables exchange through the named assign-table Markdown JSON fence; simple tables use GFM pipes.

Example{ "schema_version": 1, "type": "doc", "content": [] }

due_on
string <date>
milestone_id
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001

Responses

List Task relations

GET/api/v1/tasks/{task_id}/relations

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

Create a Task relation

POST/api/v1/tasks/{task_id}/relations

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
target_task_idRequired
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001
typeRequired
string
Values
blocksduplicatesrelatesparent

Responses

Change a Task relation type

PATCH/api/v1/task-relations/{relation_id}

Changes only the relation type. The related Tasks cannot be edited or replaced by this operation.

Path Parameters

relation_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
typeRequired
string
Values
blocksduplicatesrelatesparent

Responses

Delete a Task relation

DELETE/api/v1/task-relations/{relation_id}

Path Parameters

relation_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

204Relation deleted or already absent.

Read a Task

GET/api/v1/tasks/{task_id}

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Update a Task

PATCH/api/v1/tasks/{task_id}

Canonical content with an unsupported schema or an attempted schema 2-to-1 downgrade returns 409 document_schema_version_unsupported. Restoring an older Document revision retains an existing schema 2 floor. Browser callers require the session-bound CSRF header. Bearer callers omit cookies and CSRF; all callers retain identical authorization, idempotency and revision preconditions. Applies an optimistic compare-and-swap on the accepted core Task fields. Every field is optional; an omitted field keeps its current value, and an explicit assignee_actor_id: null clears the assignee. If-Match must carry the revision last observed by the client. A Task with any relation, including a parent/subtask relation, must be unlinked before its project_id can change; the API returns 422 task_has_relations rather than creating a cross-Project edge.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-Token
string·min 1·max 200

Required when this operation uses browserSession; native bearer callers omit it because no ambient cookie is sent.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Request Body

application/json
project_id
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001
status_id
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001
assignee_actor_id
string <uuid>

An explicit null clears the assignee.

Example0198ac5e-f9b7-7000-8000-000000000001
title
string·min 1·max 500
priority
string
Values
nonelowmediumhighurgent
description
object

Versioned, server-validated rich-text document. The server accepts only nodes and marks on the Assign allowlist and rejects anything outside it; the client's installed editor extension set is never authoritative. Complexity is bounded at 32 levels of nesting and 50,000 nodes in addition to the per-field byte limits.

Accepted nodes: doc, paragraph, text, heading, bulletList, orderedList, listItem, taskList, taskItem, blockquote, callout, codeBlock, blockMath, horizontalRule, hardBreak, image, file, plus the reference nodes userMention, projectReference, documentReference, and taskReference. Accepted marks: bold, italic, underline, strike, code, link.

A Task-description or Comment mutation accepts at most 100 distinct canonical user identifiers across its userMention nodes. Repeated mentions of the same user count once.

image and file name an Assign attachment through attrs.attachmentId and carry no URL and no bytes: attachments travel only through the attachment upload and download operations, and a signed URL is minted per request after a fresh authorization check rather than stored in content. A request whose image or file node omits attachmentId, or carries a URL-bearing attribute, is rejected.

callout has block children and exactly attrs.kind and attrs.icon. Kind is callout, note, tip, important, warning, or caution. Icon is null for the default Lucide icon, an emoji of at most 64 UTF-8 bytes, an allowlisted lucide:name token to override it, or an empty string to hide it. Unknown Lucide names are rejected. HTML, URLs and image data are not accepted as icons. Callouts are additive in schemas 1 and 2.

blockMath stores a required string attrs.latex; rendered math HTML and renderer settings are not persisted. Schema 1 retains the existing node contract; schema 2 additionally admits tables. Checklists, attachment blocks, display equations, underline, and projectReference were added additively, so every previously stored document is still valid and no migration is required.

Schema 2 additionally accepts table, tableRow, tableCell and tableHeader. A table has tableRow children; a row has tableCell/tableHeader children. Cells contain Assign blocks, starting with a paragraph; nested tables are rejected. Cells accept colspan/rowspan (integers 1–64, default 1), colwidth (null or one integer 24–2000 per spanned column), and align (null, left, center or right). Tables/rows have no attrs, marks or text; cells have no marks/text or other attributes. The occupancy grid must be rectangular with no overlap, holes or spans beyond its rows. Limits are 1000 rows, 64 logical columns and 10000 physical cells, still subject to each field's byte budget and global node/depth limits. Schema 1 rejects all four table nodes. Rich tables exchange through the named assign-table Markdown JSON fence; simple tables use GFM pipes.

Example{ "schema_version": 1, "type": "doc", "content": [] }

due_on
string <date>
milestone_id
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001

Responses

422The requested Project move would violate a Task relation invariant.

Archive a Task

DELETE/api/v1/tasks/{task_id}

Archives a Task with optimistic concurrency. The current Task revision must be supplied in If-Match; retries with the same idempotency key replay the original response.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

410The Task has already been purged and cannot be archived.

List Task description revisions

GET/api/v1/tasks/{task_id}/description-revisions

Returns immutable Task-description snapshots newest first. The history begins with the baseline captured when revision retention was enabled; older content is never reconstructed or implied.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

Restore a Task description revision

POST/api/v1/tasks/{task_id}/description-revisions/{revision}/restore

Copies one retained description snapshot into a new Task revision. The source snapshot remains immutable, and If-Match prevents a restore from overwriting a newer Task change.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
revisionRequired
integer·min 1

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

Move a Task to trash

POST/api/v1/tasks/{task_id}/trash

Removes the Task from active collections, search, notification delivery, reminders, recurrence, and integration writes. Content and associations remain recoverable until the fixed 30-day retention clock expires. Repeating the desired-state command at the same revision is unchanged.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

410The Task has already been purged and cannot be changed.

Restore an archived or trashed Task

POST/api/v1/tasks/{task_id}/restore

Restores a reversible Task to active state after revalidating its current Project, Status, assignee, caller access, and revision. A conflict must be remediated before retry. A purged tombstone cannot be restored.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

410The Task has already been purged and cannot be restored.

Duplicate a Task

POST/api/v1/tasks/{task_id}/duplicate

Creates a new independent Task from an active source Task. Title, description, and priority are always copied. Callers explicitly choose whether to copy the current assignee, due date, milestone, labels, attachment links, and the active subtask tree. Comments, Activity, notification history, assignment periods, time entries, subscriptions, and integration execution history are never copied.

Cross-Project duplication maps Statuses by semantic category unless an explicit destination Status is supplied, keeps Workspace labels, maps Project labels by normalized name, and reports optional resources that cannot be copied in issues. Milestones remain Project-local. The command copies at most 25 active descendants and 100 clean attachment links per copied Task; it never duplicates stored attachment objects or storage quota. If-Match protects the source revision, and retries with the same idempotency key replay the original result.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
target_project_id
string <uuid>

Destination Project. Omit or use null to duplicate inside the source Project.

Example0198ac5e-f9b7-7000-8000-000000000001
target_status_id
string <uuid>

Explicit destination Status for the new root. Omit or use null to preserve the Status in the same Project or map its category across Projects.

Example0198ac5e-f9b7-7000-8000-000000000001
copy_assigneeRequired
boolean
copy_datesRequired
boolean

Copy the Task due date.

copy_milestoneRequired
boolean
copy_labelsRequired
boolean
copy_subtasksRequired
boolean

Copy at most 25 active descendants while preserving the parent hierarchy.

copy_attachmentsRequired
boolean

Link each copied Task to its existing clean attachment objects; stored bytes are not duplicated.

Responses

409The source revision is stale, the source is inactive, or the destination Project is unavailable.
410The source Task has been purged.
422No compatible destination Status exists or a requested copy exceeds a bounded command limit.

List a Task's assignment history

GET/api/v1/tasks/{task_id}/assignments

Returns immutable primary-assignee periods newest first. Imported periods can have an unknown assignment instant.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

List factual Task participants

GET/api/v1/tasks/{task_id}/participants

Returns the Task creator, current primary assignee, and previous primary assignees without implying subscription or notification state.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

Get the current user's Task subscription

GET/api/v1/tasks/{task_id}/subscription

Returns the caller's revisioned relationship, or a null subscription when no automatic or manual decision exists. Reading or mutating this relationship never grants Task access.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Follow a Task

PUT/api/v1/tasks/{task_id}/subscription

Idempotently sets the caller's manual subscription state to following. A manual state is authoritative over later automatic creator, assignee, commenter, or mention triggers.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

Unfollow a Task

DELETE/api/v1/tasks/{task_id}/subscription

Idempotently records an explicit unfollowed state. The row and prior notification history remain retained.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

Mute a Task

PUT/api/v1/tasks/{task_id}/subscription/mute

Idempotently suppresses Task subscription delivery immediately without erasing relationship or notification history.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

Unmute a Task

DELETE/api/v1/tasks/{task_id}/subscription/mute

Idempotently restores the caller's manual state to following.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Responses

List current Task followers

GET/api/v1/tasks/{task_id}/subscribers

Returns only active, currently authorized user Actors whose effective state is following. Muted, unfollowed, removed, suspended, and inaccessible identities are excluded.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

cursor
string·min 1·max 2048

Opaque continuation cursor returned by the preceding page.

limit
integer·min 1·max 100·default 50

Maximum number of resources to return.

Responses

List Task attachments

GET/api/v1/tasks/{task_id}/attachments

Returns the newest 100 linked files. Optional attachment_id values select up to 100 exact linked targets regardless of age; deleted, unlinked and private Discuss files are omitted after parent authorization.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Query Parameters

attachment_id
string <uuid>[]·min 1·max 100

Exact attachment targets linked to this authorized parent, independent of the newest-file window. Repeat the query key for multiple IDs. At most 100 values; invalid or empty values return 400. Omit for the ordinary newest-100 shelf.

Responses

Attach a completed upload to a Task

POST/api/v1/tasks/{task_id}/attachments

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-Token
string·min 1·max 200

Required when this operation uses browserSession; native bearer callers omit it because no ambient cookie is sent.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
attachment_idRequired
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001

Responses

Start and assign a Task to the calling Actor

POST/api/v1/tasks/{task_id}/start

Transitions the Task to the Project's preferred in-progress Status and assigns it to the calling Actor in one idempotent, revision-checked, audited transaction. A previous assignment period is closed rather than erased. reassigned indicates that the caller replaced another active assignee without disclosing that Actor through this command. This server command never changes local Git state.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-Token
string·min 1·max 200

Required when this operation uses browserSession; native bearer callers omit it because no ambient cookie is sent.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

If-MatchRequired
string

Entity tag containing the resource version last observed by the client.

Responses

Atomically move a Task in workflow order

POST/api/v1/tasks/{task_id}/move

Changes a Task's Status and shared manual order in one transaction. Neighbour anchors must be active Tasks in the destination Project and Status group. A stale revision returns 409 revision_conflict; a missing, archived, or out-of-group anchor returns 409 anchor_not_found. Both conflicts carry the current Task so clients can re-anchor without an additional read.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Idempotency-KeyRequired
string·min 16·max 200

Opaque client-generated key for safely retrying this operation.

Request Body

application/json
status_idRequired
string <uuid>

Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.

Example0198ac5e-f9b7-7000-8000-000000000001
after_task_id
string <uuid>

The active Task that must immediately precede the moved Task in the destination column.

Example0198ac5e-f9b7-7000-8000-000000000001
before_task_id
string <uuid>

The active Task that must immediately follow the moved Task in the destination column.

Example0198ac5e-f9b7-7000-8000-000000000001
expected_revisionRequired
integer·min 1

Responses

Admit an independent Task collaboration-presence lease

POST/api/v1/tasks/{task_id}/collaboration-sessions

Evaluates the caller's current Task permission and creates an independent session for this browser client. A caller with read-only access receives role viewer; a caller who may edit receives editor. The opaque admission_token lasts five minutes, is scoped to this Task, actor, and session, and authorizes nothing on this HTTP API. Each admission has its own token and exclusive connection lease, so another tab cannot invalidate it. The connected relay renews the lease; disconnected sessions expire through bounded cleanup.

The lease admits the browser-only Task description relay. Raw Yjs updates, checkpoints and caret awareness are not REST or SDK payloads. Task creation drafts, Comments, archived and trashed Tasks are excluded.

X-Assign-Document-Schema defaults to 1. An editable schema 2 admission promotes only this resource's envelope through its normal revision transition, preserving opaque updates, checkpoints and replica generation. Existing schema 1 resources continue to accept schema 1 clients. Once promoted, schema 1 admission and already admitted schema 1 writes fail with document_schema_version_unsupported. Invalid header values fail with document_schema_version_unsupported. Project permissions remain authoritative.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

X-Assign-Document-Schema
integer·default 1

Highest writable document schema supported by this client. Missing means schema 1. Editable schema 2 admission atomically promotes the resource envelope without resetting its collaboration state. Older admissions are refused after promotion.

Values
12

Responses

End the caller's Task collaboration-presence lease

DELETE/api/v1/tasks/{task_id}/collaboration-sessions/{session_id}

Ends only the caller's own session. Repeating a successful end remains successful. A nonexistent or somebody else's session returns 404 so the operation cannot disclose collaborator presence. No Workspace event or Activity item is written.

Path Parameters

task_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001
session_idRequired
string <uuid>
Example0198ac5e-f9b7-7000-8000-000000000001

Header Parameters

X-CSRF-TokenRequired
string·min 43·max 43

Session-bound CSRF token. It must exactly match the __Host-assign_csrf cookie sent with the request.

Responses