---
title: "Get an execution's timeline"
method: GET
path: "/v1/workflows/{workflowId}/executions/{executionId}/events"
tags: ["Workflows"]
---

# Get an execution's timeline

`GET /v1/workflows/{workflowId}/executions/{executionId}/events`

Returns the per-step run-log for a single workflow execution: trigger fired, each node visited, edge handles taken, errors, and durations. Backed by Tinybird (90-day retention). Used by the Runs UI drawer to render the timeline.

## Path parameters

- `workflowId` string, required
- `executionId` string, required

## Response `200`

Timeline events for the execution

- object
  - `success` boolean
  - `execution` object
    - `id` string
    - `status` 'running' | 'waiting' | 'completed' | 'exited' | 'failed'
    - `startedAt` string, date-time, nullable
    - `completedAt` string, date-time, nullable
  - `events` WorkflowExecutionEvent[] — Events in chronological order (oldest first).
    - `action` 'execution_started' | 'execution_completed' | 'execution_exited' | 'execution_paused' | 'execution_resumed' | 'node_started' | 'node_completed' | 'node_failed' | 'node_skipped'
    - `status` 'success' | 'failed' | 'pending', nullable
    - `nodeId` string, nullable — Present on `node_*` events
    - `nodeType` string, nullable — Present on `node_*` events
    - `sourceHandle` string, nullable — The edge handle the executor followed out of this node (see `WorkflowEdge.sourceHandle`)
    - `durationMs` integer, nullable — Node run time; present on `node_completed` and `node_failed`
    - `errorMessage` string, nullable — Failure detail; present on `node_failed` and `execution_exited`
    - `meta` object, nullable — Per-node-type payload. Shape varies — see WorkflowNode `type`. Examples: `send_message` → `{ messageType, text, recipient }`, `webhook` → `{ url, method, statusCode, responseTimeMs, responsePreview }`, `ai` → `{ model, provider, inputTokens, outputTokens, responsePreview }`, `condition` → `{ matchedHandle, rulesEvaluated }`, `a_b_split` → `{ percentage, chosen }`.
    - `at` string, date-time — Event timestamp (UTC)

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — Resource not found

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/bdd771244d76/schema)
