Skip to main content
GET
/
api
/
v1
/
runs
List Runs
curl --request GET \
  --url https://api.example.com/api/v1/runs \
  --header 'Authorization: Bearer <token>'
{
  "data": [
    {
      "id": "<string>",
      "children_count": 1,
      "title": "<string>",
      "goal": "<string>",
      "workflow": {
        "slug": "<string>",
        "name": "<string>",
        "graph_name": "<string>",
        "node_count": 123,
        "edge_count": 123
      },
      "automation": {
        "id": "<string>",
        "name": "<string>",
        "trigger_id": "<string>"
      },
      "repository": {
        "name": "fabro-sh/fabro",
        "origin_url": "https://github.com/fabro-sh/fabro.git"
      },
      "created_by": {
        "kind": "user",
        "identity": {
          "issuer": "<string>",
          "subject": "<string>"
        },
        "login": "<string>",
        "avatar_url": "<string>"
      },
      "origin": {
        "kind": "api"
      },
      "labels": {},
      "lifecycle": {
        "status": {
          "kind": "submitted"
        },
        "approval": {
          "requested_at": "2023-11-07T05:31:56Z",
          "decided_at": "2023-11-07T05:31:56Z",
          "denial_reason": "<string>"
        },
        "queue_position": 123,
        "error": {
          "message": "Stage 'apply-changes' exceeded maximum retries."
        },
        "archived": true,
        "archived_at": "2023-11-07T05:31:56Z"
      },
      "sandbox": {
        "plan": {
          "image": "<string>",
          "snapshot": "<string>"
        },
        "instance": {
          "runtime": {
            "id": "<string>",
            "working_directory": "<string>",
            "repo_cloned": true,
            "clone_origin_url": "<string>",
            "clone_branch": "<string>",
            "workspace_root": "<string>",
            "repos_root": "<string>",
            "primary_repo_path": "<string>",
            "primary_repo_link": "<string>"
          },
          "image": "<string>",
          "snapshot": "<string>"
        },
        "failure": {
          "provider": "<string>",
          "error": "<string>",
          "causes": [
            "<string>"
          ],
          "duration_ms": 1
        }
      },
      "models": [
        {
          "provider": "<string>",
          "name": "<string>"
        }
      ],
      "source_directory": "<string>",
      "timestamps": {
        "created_at": "2023-11-07T05:31:56Z",
        "started_at": "2023-11-07T05:31:56Z",
        "last_event_at": "2023-11-07T05:31:56Z",
        "completed_at": "2023-11-07T05:31:56Z"
      },
      "timing": {
        "wall_time_ms": 420000,
        "active_time_ms": 180000,
        "inference_time_ms": 120000,
        "tool_time_ms": 60000
      },
      "billing": {
        "total_usd_micros": 123
      },
      "ask_fabro": {
        "available": true,
        "default_model": "<string>"
      },
      "diff": {
        "files_changed": 42,
        "additions": 567,
        "deletions": 234
      },
      "pull_request": {
        "owner": "fabro-sh",
        "repo": "fabro",
        "number": 123,
        "html_url": "https://github.com/fabro-sh/fabro/pull/123"
      },
      "current_question": {
        "text": "Accept or push for another round?"
      },
      "superseded_by": "<string>",
      "retried_from": "<string>",
      "links": {
        "web": "<string>"
      },
      "parent_id": "<string>"
    }
  ],
  "meta": {
    "has_more": true,
    "total": true
  }
}

Authorizations

Authorization
string
header
required

Raw dev token passed as Authorization: Bearer fabro_dev_... when server.auth.methods includes dev-token.

Query Parameters

page[limit]
integer
default:20

Maximum number of items to return per page.

Required range: 1 <= x <= 100
page[offset]
integer
default:0

Number of items to skip before returning results.

Required range: x >= 0
include_archived
boolean
default:false

Whether to include archived runs in the response. Defaults to false.

parent_id
string

Return only runs currently linked to this orchestration parent.

status
enum<string>[]

Filter runs by status bucket. Repeatable. When omitted, runs in the removing bucket are hidden; pass status=removing to include them. Archived runs are hidden unless include_archived=true or status=archived is passed.

Status bucket for a run, shared by list and kanban renderings and by the status query parameter on GET /api/v1/runs. The archived bucket is orthogonal to the include_archived flag — passing status=archived is equivalent to opting archived runs in.

Available options:
pending,
runnable,
initializing,
running,
blocked,
succeeded,
failed,
archived,
removing
sort
enum<string>
default:created_at

Field to sort by. Defaults to created_at.

Available options:
created_at,
updated_at,
status,
elapsed,
repo,
title,
workflow,
changes,
size
direction
enum<string>
default:desc

Sort direction. Defaults to desc.

Available options:
asc,
desc

Response

200 - application/json

Paginated durable run summaries

Paginated list of runs.

data
object[]
required
meta
object
required

Pagination metadata included in every paginated response.