> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anyreach.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Observability

> Inspect workflow runs, debug failures, and monitor production health.

Every workflow execution leaves a complete trace: per-step inputs and outputs, durations, and error messages. All of this is visible on the **Workflow Runs** page.

## The Workflow Runs page

Click the **Logs icon** in the top bar of the builder to open the Workflow Runs page.

<Frame>
  <img src="https://mintcdn.com/anyreach/H7de0CJCTkbxSIQS/images/workflows/runs.png?fit=max&auto=format&n=H7de0CJCTkbxSIQS&q=85&s=d626f556ad7c17a23eca36d180480626" alt="Workflow Runs page" width="3108" height="1936" data-path="images/workflows/runs.png" />
</Frame>

The runs table shows:

| Column           | Meaning                                                     |
| ---------------- | ----------------------------------------------------------- |
| **ID**           | Unique execution identifier                                 |
| **Version**      | The workflow version that ran                               |
| **Created At**   | When the execution started                                  |
| **Completed At** | When the execution finished                                 |
| **Duration**     | Wall-clock time                                             |
| **Status**       | `success`, `failed`, `in_progress`, `waiting`, or `pending` |
| **Actions**      | Click to view run details                                   |

Use the **Search**, **Filters**, **Columns**, and **Refresh** controls at the top to narrow the list.

## Viewing run details

Click **Actions** on any run to open its detail view. For each step that ran, you can see:

* **Status** — whether the step succeeded, failed, or was skipped
* **Input** — the `ctx` snapshot that was passed into the step
* **Output** — what the step added to `ctx`
* **Duration** — how long the step took
* **Error** — full error message and traceback (for Code steps)

This is the primary debugging surface. Most workflow bugs are visible by inspecting the input and output of the failing step.

## API access

Programmatic access to runs:

```bash theme={null}
# List recent runs for a workflow
curl https://api.anyreach.ai/workflow/workflow-executions?workflow_id=$WORKFLOW_ID \
  -H "Authorization: Bearer $ANYREACH_TOKEN"

# Get a specific run
curl https://api.anyreach.ai/workflow/workflow-executions/$EXEC_ID \
  -H "Authorization: Bearer $ANYREACH_TOKEN"
```

The response includes the full context (every step's input/output) — the same data shown in the UI.

## Logging from steps

There's no separate log output facility. Use these patterns:

* **Code steps** — anything you `print()` is captured in the step's output and visible in the run detail
* **HTTP API steps** — the full request and response are captured automatically
* **Custom telemetry** — add a Code step late in the workflow to post metrics to your own monitoring system
