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

client = Retab()

run = client.workflows.runs.get("run_abc123xyz")

print(f"Lifecycle: {run.lifecycle.kind}")
if run.lifecycle.kind == "completed":
    print(f"Duration: {run.timing.duration_ms}ms")
    for step_summary in client.workflows.runs.steps.list(run.id):
        step = client.workflows.runs.steps.get(run.id, step_summary.block_id)
        if step.handle_outputs:
            print(f"{step.block_id}: {step.handle_outputs}")
        if step.artifact:
            artifact = client.workflows.artifacts.get(step.artifact)
            print(f"{step.block_id} artifact: {artifact.operation}")
{
  "id": "run_abc123xyz",
  "workflow": {
    "workflow_id": "wf_abc123xyz",
    "snapshot_id": "snap_abc123",
    "name_at_run_time": "Invoice Processing"
  },
  "trigger": { "type": "api" },
  "lifecycle": { "kind": "completed" },
  "timing": {
    "created_at": "2024-01-15T10:30:00Z",
    "started_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:30:15Z",
    "human_waiting_started_at": null,
    "accumulated_human_waiting_ms": 0,
    "duration_ms": 15000,
    "active_duration_ms": 15000
  },
  "inputs": {
    "documents": {
      "start-block-1": {
        "id": "file_123",
        "filename": "invoice.pdf",
        "mime_type": "application/pdf"
      }
    },
    "json_data": {}
  }
}

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.

Get a single workflow run by ID. Use this endpoint to check lifecycle.kind for a running workflow or retrieve the results of a completed workflow. run.steps contains execution status for each block. For typed handle inputs and outputs, use Get Step. For persisted step records such as HIL evaluations, function invocations, or API call traces, use List Artifacts.
from retab import Retab

client = Retab()

run = client.workflows.runs.get("run_abc123xyz")

print(f"Lifecycle: {run.lifecycle.kind}")
if run.lifecycle.kind == "completed":
    print(f"Duration: {run.timing.duration_ms}ms")
    for step_summary in client.workflows.runs.steps.list(run.id):
        step = client.workflows.runs.steps.get(run.id, step_summary.block_id)
        if step.handle_outputs:
            print(f"{step.block_id}: {step.handle_outputs}")
        if step.artifact:
            artifact = client.workflows.artifacts.get(step.artifact)
            print(f"{step.block_id} artifact: {artifact.operation}")
{
  "id": "run_abc123xyz",
  "workflow": {
    "workflow_id": "wf_abc123xyz",
    "snapshot_id": "snap_abc123",
    "name_at_run_time": "Invoice Processing"
  },
  "trigger": { "type": "api" },
  "lifecycle": { "kind": "completed" },
  "timing": {
    "created_at": "2024-01-15T10:30:00Z",
    "started_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:30:15Z",
    "human_waiting_started_at": null,
    "accumulated_human_waiting_ms": 0,
    "duration_ms": 15000,
    "active_duration_ms": 15000
  },
  "inputs": {
    "documents": {
      "start-block-1": {
        "id": "file_123",
        "filename": "invoice.pdf",
        "mime_type": "application/pdf"
      }
    },
    "json_data": {}
  }
}

Authorizations

Api-Key
string
header
required

Path Parameters

run_id
string
required

Response

Successful Response

Public workflow run response without tenant isolation fields.

id
string
required

Unique ID for this run

workflow
WorkflowSnapshotRef · object
required

Workflow + snapshot reference

trigger
ManualTrigger · object
required

Manual run started by a user from the dashboard.

lifecycle
PendingRun · object

The run has been created but execution has not started.

timing
RunTiming · object

All timing information

inputs
RunInputs · object

Input payloads supplied at run creation time