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

client = Retab()

results = client.workflows.evals.results.list("wfevalrun_q1z2")
for result in results.data:
    print(result.eval_id, result.verdict)
{
  "data": [
    {
      "id": "wfresult_a",
      "workflow_eval_run_id": "wfevalrun_q1z2",
      "eval_id": "wfnodeeval_a",
      "workflow_id": "wf_abc123xyz",
      "block_id": "block_extract_invoice",
      "block_type": "extract",
      "lifecycle": { "status": "completed" },
      "timing": {
        "created_at": "2026-05-18T10:00:00Z",
        "started_at": "2026-05-18T10:00:02Z",
        "completed_at": "2026-05-18T10:00:20Z",
        "duration_ms": 18221
      },
      "handle_inputs": {},
      "handle_outputs": {
        "output-json-0": {
          "type": "json",
          "data": { "total": 1234.56, "vendor": { "name": "Acme Inc" } }
        }
      },
      "warnings": [],
      "assertion_result": {
        "assertion_id": "assert_xyz",
        "condition_kind": "equals",
        "outcome": "passed",
        "actual_value": 1234.56,
        "expected_value": 1234.56,
        "failure": null
      },
      "verdict": "passed",
      "verdict_summary": {
        "passed": true,
        "assertions_passed": 1,
        "assertions_failed": 0,
        "blocked_assertions": 0,
        "failed_assertion_ids": []
      }
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
List the eval results produced by one workflow-eval run. Filter by run_id; each result also has its own opaque id; use Get Workflow Eval Result to refresh one row directly. The response uses the canonical Retab list envelope: { "data": [...], "list_metadata": { "before": null, "after": null } }.
from retab import Retab

client = Retab()

results = client.workflows.evals.results.list("wfevalrun_q1z2")
for result in results.data:
    print(result.eval_id, result.verdict)
{
  "data": [
    {
      "id": "wfresult_a",
      "workflow_eval_run_id": "wfevalrun_q1z2",
      "eval_id": "wfnodeeval_a",
      "workflow_id": "wf_abc123xyz",
      "block_id": "block_extract_invoice",
      "block_type": "extract",
      "lifecycle": { "status": "completed" },
      "timing": {
        "created_at": "2026-05-18T10:00:00Z",
        "started_at": "2026-05-18T10:00:02Z",
        "completed_at": "2026-05-18T10:00:20Z",
        "duration_ms": 18221
      },
      "handle_inputs": {},
      "handle_outputs": {
        "output-json-0": {
          "type": "json",
          "data": { "total": 1234.56, "vendor": { "name": "Acme Inc" } }
        }
      },
      "warnings": [],
      "assertion_result": {
        "assertion_id": "assert_xyz",
        "condition_kind": "equals",
        "outcome": "passed",
        "actual_value": 1234.56,
        "expected_value": 1234.56,
        "failure": null
      },
      "verdict": "passed",
      "verdict_summary": {
        "passed": true,
        "assertions_passed": 1,
        "assertions_failed": 0,
        "blocked_assertions": 0,
        "failed_assertion_ids": []
      }
    }
  ],
  "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

run_id
string
required
before
string | null
after
string | null
limit
integer
default:20
Required range: 1 <= x <= 100
order
enum<string>
default:desc
Available options:
asc,
desc

Response

Successful Response

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

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

Boundary resource IDs for page navigation.