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

client = Retab()

run = client.workflows.evals.runs.get("wfevalrun_q1z2")

print(run.lifecycle.status)
print(run.counts)
{
  "id": "wfevalrun_q1z2",
  "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": "wfnodeeval_hsLEQiM61ez9Piv147MWk",
  "target": { "type": "block", "block_id": "block_extract_invoice" },
  "total_evals": 1,
  "counts": {
    "lifecycle_counts": {
      "pending": 0,
      "queued": 0,
      "running": 0,
      "completed": 1,
      "error": 0,
      "cancelled": 0
    },
    "outcome": {
      "passed": 1,
      "failed": 0,
      "blocked": 0
    }
  }
}
Fetch a workflow-eval run by run_id. Use this while polling for lifecycle.status, then fetch the child results with List Eval Run Results.
from retab import Retab

client = Retab()

run = client.workflows.evals.runs.get("wfevalrun_q1z2")

print(run.lifecycle.status)
print(run.counts)
{
  "id": "wfevalrun_q1z2",
  "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": "wfnodeeval_hsLEQiM61ez9Piv147MWk",
  "target": { "type": "block", "block_id": "block_extract_invoice" },
  "total_evals": 1,
  "counts": {
    "lifecycle_counts": {
      "pending": 0,
      "queued": 0,
      "running": 0,
      "completed": 1,
      "error": 0,
      "cancelled": 0
    },
    "outcome": {
      "passed": 1,
      "failed": 0,
      "blocked": 0
    }
  }
}

Authorizations

Authorization
string
header
required

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

Path Parameters

run_id
string
required

Response

Successful Response

A batch execution of a workflow's evals, with overall lifecycle, timing, and pass/fail counts.

id
string
required
workflow_id
string
required
workflow_version_id
string
required
trigger
EvalRunTrigger · object
required
lifecycle
PendingWorkflowEvalRun · object
required

The eval run has been created but execution has not started.

timing
WorkflowEvalRunTiming · object
required
total_evals
integer
required
target
EvalRunBlockTarget · object

Public workflow-eval target.

The storage layer remains block-scoped today, but the API shape names the tested entity explicitly so workflow-level targets can be added later.

eval_id
string | null
counts
BlockEvalBatchExecutionCounts · object

Aggregate counts for a batch of block-eval runs.

Each individual run contributes to exactly one lifecycle_counts bucket, and additionally to one outcome bucket when lifecycle_counts.completed is incremented.

freshness
EvalRunFreshness · object