Recent test runs and one run's per-step outputs, for expression mapping
workflow:readAnswers "what real data can I write expressions against?" for the whole workflow at once.
snapshots lists up to 10 recent MANUAL runs (triggerType: "manual", which is what a test run of this workflow records). Production traffic is deliberately excluded here — no webhook or cron payload can leak into the builder through this endpoint. For a per-step picker that DOES span production, use GET /api/workflows/{id}/step-sources.
active carries one of those runs expanded: nodes is a map keyed exactly the way expressions resolve — "trigger" holds the run's trigger data ({{trigger.…}}) and every other key is a step's nodeId holding that step's output ({{steps.<nodeId>.…}}). Only steps that COMPLETED with output appear. Values under secret-looking keys are redacted.
active is null when the workflow has no manual runs at all.
Authorization
bearerAuth An API token: Authorization: Bearer grt_…. Mint one in the app under Settings → Workspace → API tokens; the raw value is shown once. Scopes confine the token — see x-permission on each operation.
In: header
Path Parameters
Workflow id (UUID).
uuidQuery Parameters
Expand this run id instead of the most recent. Silently ignored (falls back to the newest run) if it is not a UUID or is not one of the runs listed in snapshots.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/workflows/497f6eca-6276-4993-bfeb-53cbbbba6f08/test-context"{ "data": { "snapshots": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "pending", "startedAt": "2019-08-24T14:15:22Z", "source": "run" } ], "active": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "nodes": {} } }}