Skip to main content
A work item is the accountable unit of work: create it with one request, then complete it with evidence when the work is accepted. Both operations return the work and its receipt. POST /work places it in the workspace Inbox when you do not provide an explicit hierarchy.
Naming crosswalk: the same record is task on the compatibility /api/entities surface. POST /work is the canonical creation operation; POST /api/v1/commands/create-work and POST /api/v1/commands/complete-work are the same handlers under their older command paths and stay callable for compatibility.

Create — POST /api/v1/work

Requires Authorization: Bearer oxk_... and an Idempotency-Key header (missing header returns 400 missing_idempotency_key). Unknown body fields are rejected.
Response — 201 on first write, 200 when the idempotency key replays:
Keep data.taskId from this response. Fetch that task before completing it to obtain the current concurrency token.

Read the concurrency token

Fetch the work item before completing it. The response includes an opaque data.concurrency.version_token that preserves the server’s timestamp precision and is bound to this workspace and task.
Copy data.concurrency.version_token exactly. Do not parse it, reformat it, or reuse it for another task.

Complete — POST /api/v1/work/{taskId}/complete

Same auth; Idempotency-Key header required. Send the version_token returned by the read above. The legacy expected_updated_at and expected_aggregate_version pair remains accepted during the v1 compatibility window.
Returns 202 on acceptance, 200 on idempotent replay, and 409 task_version_stale when the token no longer describes the current task. The response envelope matches creation (taskId, receiptId, eventId, aggregateVersion, duplicate, task, receipt).

All operations on this resource

Task status values: todo, in_progress, done, blocked. Send these exact values on writes — an unlisted value returns 400 with the valid set.

Where the IDs come from

MCP equivalents

orgx_write with a task payload uses the compatibility adapter for older clients; orgx_act drives task lifecycle transitions through MCP; orgx_inspect hydrates one task with execution context. The POST /work receipt-and-event contract has no single MCP equivalent — it is the REST-first surface.