Per-contact run timeline

Search Documentation

Search across all developer documentation

workflows

Per-contact run timeline

GET /v1/workflows/{id}/runs/{runId}/timeline
Auth required api.workflows.view

The ordered step history of one contact's run. A send_filtered event carries filter_tier/filter_reason explaining why the send was skipped (consent opt-out, global unsubscribe, suppression, or frequency cap).

Path parameters

id string<uuid> required

Resource UUID. An unparseable id reads as a clean 404 not_found.

runId string<uuid> required

The run id.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

200 The run's step timeline application/json
run_id string<uuid> required
events array<object> required

Each entry in events:

node_path string required
repeat_iteration integer optional
split_arm integer optional
event_type string required

enrolled, step_entered, wait_started, wait_met, wait_timed_out, send_filtered, send_held, send_skipped, send_failed, exited, completed, or failed.

exit_kind string optional
exit_name string optional
detail string optional

Human-readable free-text context.

filter_tier string optional

On a send_filtered event, the gate that dropped the send: frequency_cap, account, or topic.

filter_reason string optional

On a send_filtered event, the specific cause: frequency_cap, suppressed, unsubscribed_all, or opted_out.

occurred_at string<date-time> required
401 Missing, malformed, or unknown API key application/problem+json
403 Key lacks the required scope or plan limit violated application/problem+json
404 Resource not found application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json