Api / Todos

GET/v1/todos

Auth: tenant — Status: stable

List the calling tenant's todos. Ordered with in_progress first, then pending by ascending position, then terminal rows (completed, canceled) by most-recently updated. Hard-capped at 200; default limit is 200.

Request

Query parameters

ParamDescription
conversation_idPositive integer scopes the list to one thread. The result includes both rows pinned to that conversation and unscoped (conversation_id = 0) rows — same OR-NULL fallback structured memory uses, so a fresh thread still surfaces tenant-wide todos. Omit for tenant-wide listing of every row.
statusHard filter: pending | in_progress | completed | canceled. Omit for all statuses.
agent_idHard filter on the owner-of-record (the agent that created the row).
limitCap; max 500.
curl -H "Authorization: Bearer atr_…" \
     "http://arbiter.example.com/v1/todos?conversation_id=7&status=pending"

Response

200 OK

{
  "todos": [
    {
      "id": 14,
      "conversation_id": 7,
      "agent_id": "index",
      "subject": "review the deploy",
      "description": "check logs + metrics",
      "status": "in_progress",
      "position": 1,
      "created_at": 1746720000,
      "updated_at": 1746720085,
      "completed_at": 0
    }
  ]
}

Failure modes

StatusWhen
401Missing / invalid bearer.

See also