Skip to main content
GET
/
v1
/
workflows
/
evals
/
runs
from retab import Retab

client = Retab()

runs = client.workflows.evals.runs.list(
    workflow_id="wf_abc123xyz",
    status="completed",
    limit=10,
)
for run in runs.data:
    print(run.id, run.lifecycle.status, run.counts)
{
  "data": [
    {
      "id": "wfnodeevalrun_tRNzPiMpBas4kDwD74M8d",
      "workflow_id": "wf_abc123xyz",
      "workflow_version_id": "draft_2026_05_18",
      "trigger": { "type": "api" },
      "lifecycle": { "status": "completed" },
      "timing": {
        "created_at": "2026-05-18T10:00:00Z",
        "started_at": "2026-05-18T10:00:01Z",
        "completed_at": "2026-05-18T10:00:29Z",
        "duration_ms": 28000
      },
      "eval_id": null,
      "target": { "type": "block", "block_id": "block_extract_invoice" },
      "total_evals": 4,
      "counts": {
        "lifecycle_counts": {
          "pending": 0,
          "queued": 0,
          "running": 0,
          "completed": 4,
          "error": 0,
          "cancelled": 0
        },
        "outcome": {
          "passed": 3,
          "failed": 1,
          "blocked": 0
        }
      }
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
List workflow-eval runs, newest first. This is the run index for parent eval runs, not the per-eval result history. Filter by workflow_id, eval_id, target_block_id, lifecycle status, trigger type, date range, or id pagination. limit defaults to 20, max 100. The response uses the canonical Retab list envelope: { "data": [...], "list_metadata": { "before": null, "after": null } }.
from retab import Retab

client = Retab()

runs = client.workflows.evals.runs.list(
    workflow_id="wf_abc123xyz",
    status="completed",
    limit=10,
)
for run in runs.data:
    print(run.id, run.lifecycle.status, run.counts)
{
  "data": [
    {
      "id": "wfnodeevalrun_tRNzPiMpBas4kDwD74M8d",
      "workflow_id": "wf_abc123xyz",
      "workflow_version_id": "draft_2026_05_18",
      "trigger": { "type": "api" },
      "lifecycle": { "status": "completed" },
      "timing": {
        "created_at": "2026-05-18T10:00:00Z",
        "started_at": "2026-05-18T10:00:01Z",
        "completed_at": "2026-05-18T10:00:29Z",
        "duration_ms": 28000
      },
      "eval_id": null,
      "target": { "type": "block", "block_id": "block_extract_invoice" },
      "total_evals": 4,
      "counts": {
        "lifecycle_counts": {
          "pending": 0,
          "queued": 0,
          "running": 0,
          "completed": 4,
          "error": 0,
          "cancelled": 0
        },
        "outcome": {
          "passed": 3,
          "failed": 1,
          "blocked": 0
        }
      }
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

workflow_id
string | null
eval_id
string | null
target_block_id
string | null
status
string | null
exclude_status
string | null
trigger_type
string | null
from_date
string<date-time> | null
to_date
string<date-time> | null
sort_by
string
default:created_at
before
string | null
after
string | null
limit
integer
default:50
Required range: 1 <= x <= 100
order
enum<string>
default:desc
Available options:
asc,
desc

Response

Successful Response

A page of WorkflowEvalRun resources. data holds the items and list_metadata carries the before/after cursors; pass after to fetch the next page.

data
WorkflowEvalRun · object[]
required
list_metadata
ListMetadata · object
required

Boundary resource IDs for page navigation.