Skip to main content
POST
Create a Project To-do
Creates one to-do item, its first immutable version, and every initial assignment in a single transaction. Requires project_todos:write, a claimed account, and employer access to the job.
string
required
create_item
string
required
8–200 characters, bound to the complete request. Reuse the same key only to retry the identical request.
string
required
string
required
ACTIVE, FUTURE, ACTIVE_AND_FUTURE, or SELECTED. There is no default — omission fails with 400.
string[]
SELECTED only: a non-empty, duplicate-free list of active contracts on this exact job (up to 500). Invalid IDs reject the whole request with per-ID reasons.
string
Required for ACTIVE, FUTURE, and ACTIVE_AND_FUTURE. Mint it with preflight.
object
required
The worker-facing definition: title, type, optional description, content, ownerRole, required, priority (NORMAL | HIGH | URGENT), blockingMode (NONE | IMMEDIATE | AFTER_DUE), blockingScope, dueOffsetMinutes, reminderPolicy, and completionConfig.
string
Optional category; omitting uses the job’s General category.
string
Optional stable item key.
boolean
Adds future-hire auto-assignment to ACTIVE. Not allowed with SELECTED.
boolean
Overrides the 409 LIKELY_DUPLICATE refusal when an active item already carries this exact request.

Response

recipients are the masked people this exact request was verified against. On an identical-request retry, replayed is true, createdAssignments is 0, and the roster is not re-resolved — a person hired after the original create is never silently added.

Failure modes

Beyond the common errors: the reserved time-tracking setup to-do cannot be authored here, and integration-type items require the matching configured provider on the job.