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

client = Retab()

artifacts = client.workflows.artifacts.list(
    "run_abc123xyz",
    operation="hil_evaluation",
)

for artifact in artifacts:
    print(artifact.step_id)
    print(artifact.requires_human_review)
    print(artifact.matched_condition_ids)
[
  {
    "operation": "conditional_evaluation",
    "id": "ceval_abc123",
    "organization_id": "org_123",
    "workflow_run_id": "run_abc123xyz",
    "step_id": "conditional-block-1",
    "selected_handles": ["wrong"],
    "matched_branch_id": "branch_wrong",
    "matched_condition_ids": ["condition_wrong_total"],
    "evaluations": [
      {
        "condition_id": "condition_wrong_total",
        "matched": true,
        "output_handle_id": "wrong",
        "left_value": 1200,
        "operator": "greater_than",
        "right_value": 1000
      }
    ],
    "created_at": "2026-03-12T09:00:04Z"
  },
  {
    "operation": "function_invocation",
    "id": "fninv_def456",
    "organization_id": "org_123",
    "workflow_run_id": "run_abc123xyz",
    "step_id": "function-block-1",
    "inputs": {
      "total": 1200
    },
    "output": {
      "approved": false,
      "reason": "total exceeds review threshold"
    },
    "duration_ms": 248,
    "error": null,
    "created_at": "2026-03-12T09:00:05Z"
  }
]

Documentation Index

Fetch the complete documentation index at: https://docs.retab.com/llms.txt

Use this file to discover all available pages before exploring further.

List the dereferenced artifact records produced by one workflow run. Use this when an integration needs to inspect all persisted records for a run, or when an MCP tool needs to answer questions such as why a conditional/HIL block selected a specific handle. The endpoint walks the run’s steps, follows each artifact ref, and returns the flattened records. Filters:
  • run_id is required.
  • operation limits results to one artifact operation, such as hil_evaluation or function_invocation.
  • block_id limits results to one producing block or step id.
from retab import Retab

client = Retab()

artifacts = client.workflows.artifacts.list(
    "run_abc123xyz",
    operation="hil_evaluation",
)

for artifact in artifacts:
    print(artifact.step_id)
    print(artifact.requires_human_review)
    print(artifact.matched_condition_ids)
[
  {
    "operation": "conditional_evaluation",
    "id": "ceval_abc123",
    "organization_id": "org_123",
    "workflow_run_id": "run_abc123xyz",
    "step_id": "conditional-block-1",
    "selected_handles": ["wrong"],
    "matched_branch_id": "branch_wrong",
    "matched_condition_ids": ["condition_wrong_total"],
    "evaluations": [
      {
        "condition_id": "condition_wrong_total",
        "matched": true,
        "output_handle_id": "wrong",
        "left_value": 1200,
        "operator": "greater_than",
        "right_value": 1000
      }
    ],
    "created_at": "2026-03-12T09:00:04Z"
  },
  {
    "operation": "function_invocation",
    "id": "fninv_def456",
    "organization_id": "org_123",
    "workflow_run_id": "run_abc123xyz",
    "step_id": "function-block-1",
    "inputs": {
      "total": 1200
    },
    "output": {
      "approved": false,
      "reason": "total exceeds review threshold"
    },
    "duration_ms": 248,
    "error": null,
    "created_at": "2026-03-12T09:00:05Z"
  }
]

Authorizations

Api-Key
string
header
required

Query Parameters

run_id
string
required

Workflow run ID whose artifacts should be listed

operation
enum<string> | null

Optional artifact operation filter

Available options:
extraction,
split,
classification,
parse,
edit,
partition,
conditional_evaluation,
hil_evaluation,
while_loop_termination,
api_call_invocation,
function_invocation
block_id
string | null

Optional block_id or step_id filter

access_token
string | null

Response

Successful Response