Docs
Dashboard
API reference / TasksBeta

List a task's runs

Runs by hand and on the schedule, with skipped and missed scheduled times (kept 30 days).

GET/v1/tasks/{id}/runs

Request

Method and pathGET/v1/tasks/{id}/runs
Base URLhttps://api.boxline.dev
AuthenticationYour API key in the x-api-key header (or Authorization: Bearer). The examples read it from BOXLINE_API_KEY.

Path parameters

NameTypeDefaultAllowed valuesDescription
idrequiredstring––

Query parameters

NameTypeDefaultAllowed valuesDescription
limitinteger20–From 1 to 100.
afterstring––The next value of the previous page (same filters and sort). Opaque; do not build it yourself.
statusstring––One or more statuses, comma-separated. queued, running, paused, completed, failed, canceled, skipped, missed
curl "https://api.boxline.dev/v1/tasks/$TASK_ID/runs?status=failed,skipped,missed" \  -H "x-api-key: $BOXLINE_API_KEY"

Responses

200 OK

A page of runs, newest first.

Fields

NameTypeDefaultAllowed valuesDescription
dataobject[]––
data[].idstring––
data[].taskIdstring––
data[].runIdstring | null––The agent run; null for skipped and missed times and for a scheduled run that could not start.
data[].sessionIdstring | null––
data[].statusstring–queued, running, paused, completed, failed, canceled, skipped, missedqueued: a scheduled run waiting for its turn to start.
data[].scheduledboolean––
data[].scheduledForstring | null––Format: date-time.
data[].reasonstring | null–previous_run_running, plan_limit, not_running, nullWhy a scheduled time did not run.
data[].missedCountinteger | null––missed: how many scheduled times it stands for (counted up to 1,000).
data[].variablesobject––The non-secret values it ran with.
data[].secretVariablesstring[]––The names of the secret variables (never their values).
data[].structuredboolean––The result is JSON (the task has an output schema).
data[].resultany––JSON with an output schema
data[].resultTextstring | null––
data[].errorstring | null––
data[].errorCodestring | null––
data[].usageobject––
data[].usage.inputTokensinteger––
data[].usage.outputTokensinteger––
data[].usage.costUsdnumber | null––
data[].durationMsinteger | null––
data[].createdAtstring––Format: date-time.
data[].finishedAtstring | null––Format: date-time.
nextstring | null––Pass it back as after for the next page; null on the last page.
Response 200
{  "data": [    {      "id": "trun_Q2x9L0aPz7NmK3Jb",      "taskId": "…",      "runId": "…",      "sessionId": "…",      "status": "queued",      "scheduled": false,      "scheduledFor": "2026-09-29T10:00:00.000Z",      "reason": "previous_run_running",      "missedCount": 0,      "variables": {},      "secretVariables": [        "…"      ],      "structured": false,      "result": null,      "resultText": "…",      "error": "…",      "errorCode": "output_invalid",      "usage": {        "inputTokens": 0,        "outputTokens": 0,        "costUsd": 0      },      "durationMs": 0,      "createdAt": "2026-09-29T10:00:00.000Z",      "finishedAt": "2026-09-29T10:00:00.000Z"    }  ],  "next": "eyJvIjoiY3JlYXRlZF9kZXNjIiwidCI6IjIwMjYtMDktMjlUMTA6MDA6MDAuMTIzNDU2WiIsImkiOiI2YzFmIn0"}

Errors

Errors have a matching HTTP status and the same body. code is stable, so check it in your code; message is for people. See Errors and request ids.

StatusCodesWhen
400 Bad Requestinvalid_request, invalid_json, invalid_cursor, invalid_idempotency_key, invalid_extension, variables_with_extensions, terms_not_accepted, invalid_reset_token, invalid_confirmation_code, wrong_password, no_password, invalid_next, invalid_oauth_tokenThe request is not valid.
401 UnauthorizedunauthorizedMissing or invalid API key.
404 Not Foundnot_found, invite_not_found, provider_unavailableNo such thing in this project (or organization), or no such route.
Error body
{  "error": {    "code": "not_found",    "message": "session not found",    "requestId": "req_4fJx0aQm2Lk9Pz7N"  }}

Learn more

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.