issues resource is the task queue. Despite the name (kept
for compatibility with earlier versions), these are tasks in
every sense: units of work assigned to agents, tracked through a
state machine, and rolled up into costs and audit events.
If you are reading code, you will see task and issue used
interchangeably. On the API wire, the path is /issues.
The state machine
queued— created, waiting for an agentassigned— an agent has been picked but work has not startedrunning— an agent is actively workingreview— agent calledmark_complete; waiting for a reviewerdone— reviewer acceptedfailed— agent gave up or was killedcancelled— a human explicitly stopped the taskhandoff— waiting for a human to pick up
done, failed, cancelled) are frozen.
Non-terminal states can transition via API calls.
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/companies/{cid}/issues | List tasks |
POST | /v1/companies/{cid}/issues | Create a task |
GET | /v1/companies/{cid}/issues/{id} | Get one task |
PATCH | /v1/companies/{cid}/issues/{id} | Update a task |
POST | /v1/companies/{cid}/issues/{id}/assign | Assign to an agent |
POST | /v1/companies/{cid}/issues/{id}/cancel | Cancel a task |
POST | /v1/companies/{cid}/issues/{id}/reassign | Move to a different agent |
POST | /v1/companies/{cid}/issues/{id}/comments | Post a comment |
GET | /v1/companies/{cid}/issues/{id}/runs | List runs for this task |
GET | /v1/companies/{cid}/issues/{id}/runs/{rid} | Get one run |
The task object
List tasks
status— comma-separated list of statesagent— filter by assigned agent IDteam— filter by assigned team IDparent— set tonullfor only top-level tasks, or a task ID to see children of that tasklabel— filter by label (exact match)since,until— time range filterscursor,limit— pagination
Create a task
assignedTeamId is set but no assignedAgentId, the
orchestrator picks an available agent on the team. If both are
set, the specified agent gets the task directly (subject to
their availability).
Update a task
Allowed PATCH fields:title,descriptionlabelsdueAtbudget.perTaskUsd(before the task starts running)
status directly; use the verb endpoints
(assign, cancel, reassign) instead. Completed tasks
cannot be edited.
Assign, cancel, reassign
queued, and lets the new agent
pick it up. The old agent’s partial work is preserved in the
run history.
Comments
Runs
A task has one run per attempt. Running a task always creates a new run; retries also create new runs. The run object contains:- The start and end time
- The agent who ran it
- The lease history
- The final checkpoint
- The cost roll-up
- The exit reason and reason details
- A link to the workspace if it was retained
Bulk operations
For bulk updates (reassign 100 tasks at once, for example), use the/bulk endpoint:
Webhooks
| Event | When |
|---|---|
issue.created | Task created |
issue.assigned | Task assigned (first assignment) |
issue.reassigned | Task moved to another agent |
issue.started | Run started |
issue.progress | Progress report written |
issue.review | Agent called mark_complete |
issue.done | Reviewer accepted |
issue.failed | Agent or orchestrator failed the task |
issue.cancelled | Human cancelled the task |
issue.handoff | Task moved to handoff queue |