REST API

Listing tasks

GET /api/tasks returns your tasks, newest first: statuses, timings and — for interrupted ones — the pending tool calls.

GET /api/tasks

The list is for when a task's uuid has already been lost: to find out what's holding the limit after a 429, to clean up leftovers after a process crash, or to show users their queue.

Query parameters

ParameterTypeDescription
statusstring | arrayStatus filter. A single one (?status=interrupted), several separated by commas (?status=pending,processing) or an array (?status[]=…). An unknown status returns 422 rather than silently listing everything.
pageintegerPage number, starting from 1. Default 1.
per_pageintegerPage size, 1–100. Default 25.

Response

{
  "data": [
    {
      "uuid": "550e8400-…",
      "status": "interrupted",
      "error": null,
      "created_at": "2026-08-06T05:41:00.000000Z",
      "completed_at": null,
      "pending_tool_calls": [
        { "id": "call_abc", "name": "get_user_location", "arguments": { … } }
      ]
    }
  ],
  "meta": { "current_page": 1, "per_page": 25, "last_page": 3, "total": 64 }
}

pending_tool_calls is present only on tasks in the interrupted status — a single request shows what each of them is waiting for.

The list doesn't include turn
List rows have no turn field: it's the whole turn, model messages included, and a page of 25 tasks would weigh megabytes. For the result, use GET /api/tasks/{uuid}.

Clearing a maxed-out limit

The standard routine after a 429: see what's pending, then either answer or cancel.

GET  /api/tasks?status=interrupted        # what's holding the limit
POST /api/tasks/{uuid}/tool-results       # answer the call…
POST /api/tasks/{uuid}/cancel             # …or give up on it
POST /api/tasks/cancel-interrupted        # or cancel every interrupted task at once

More on interrupted tasks and canceling — Client tools; on the limit itself — Errors and limits.

Only your own tasks
Only tasks of the same user (sub in the JWT) are returned. Completed, failed and canceled tasks are kept for 30 days and then deleted — after that they no longer appear in the list.