Executions
An execution outlives its workflow’s retention window and can be filtered by journey, release, status, and profile in one place. Its detail carries everything the journey logged with api.log. Temporal stays the source of truth for the run itself; this is the record of it.
GET /v1/executions
Section titled “GET /v1/executions”List executions, newest first
Auth: Clerk session token, or an org deploy key.
Query parameters
{ "cursor": "string", "limit": 50, "journey": "string", "release": "string", "status": "running", "profileId": "string", "since": "2026-01-15T09:30:00.000Z"}| Field | Type | Required | Constraints |
|---|---|---|---|
cursor |
string | no | |
limit |
integer | no | default 50; 1 ≤ x ≤ 100 |
journey |
string | no | length 1–200 |
release |
string | no | length 1–200 |
status |
“running” | “waiting” | “completed” | “failed” | “cancelled” | no | |
profileId |
string | no | length 1–200 |
since |
string (date-time) | no |
Response 200
{ "data": [ { "id": "string", "orgId": "string", "environment": "development", "journeyKey": "string", "profileId": "string", "workflowId": "string", "runId": "string", "releaseId": "string", "status": "running", "step": "string", "timerDeadline": "2026-01-15T09:30:00.000Z", "journalEntries": 42, "error": "string", "startedAt": "2026-01-15T09:30:00.000Z", "updatedAt": "2026-01-15T09:30:00.000Z", "endedAt": "2026-01-15T09:30:00.000Z" } ], "meta": { "requestId": "string", "nextCursor": "string", "hasMore": true }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object[] | yes | |
data[] |
object | yes | |
data[].id |
string | yes | |
data[].orgId |
string | yes | |
data[].environment |
“development” | “production” | yes | |
data[].journeyKey |
string | yes | |
data[].profileId |
string | yes | |
data[].workflowId |
string | yes | |
data[].runId |
string | yes | |
data[].releaseId |
string | yes | |
data[].status |
“running” | “waiting” | “completed” | “failed” | “cancelled” | yes | |
data[].step |
string | null | yes | |
data[].timerDeadline |
string (date-time) | null | yes | |
data[].journalEntries |
integer | yes | -2147483648 ≤ x ≤ 2147483647 |
data[].error |
string | null | yes | |
data[].startedAt |
string (date-time) | yes | |
data[].updatedAt |
string (date-time) | yes | |
data[].endedAt |
string (date-time) | null | yes | |
meta |
object | no | |
meta.requestId |
string | no | |
meta.nextCursor |
string | null | no | |
meta.hasMore |
boolean | no |
Errors follow the shared envelope and code table.
GET /v1/executions/{id}
Section titled “GET /v1/executions/{id}”Inspect one execution, with its logs
Auth: Clerk session token, or an org deploy key.
Response 200
{ "data": { "id": "string", "orgId": "string", "environment": "development", "journeyKey": "string", "profileId": "string", "workflowId": "string", "runId": "string", "releaseId": "string", "status": "running", "step": "string", "timerDeadline": "2026-01-15T09:30:00.000Z", "journalEntries": 42, "error": "string", "startedAt": "2026-01-15T09:30:00.000Z", "updatedAt": "2026-01-15T09:30:00.000Z", "endedAt": "2026-01-15T09:30:00.000Z", "journal": [ { "call": { "name": "sleep", "args": { "duration": "string" } }, "result": { "ok": true, "value": {} }, "at": 42 } ], "logs": [ { "seq": 42, "level": "debug", "message": "string", "createdAt": "2026-01-15T09:30:00.000Z" } ] }, "meta": { "requestId": "string", "nextCursor": "string", "hasMore": true }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object | yes | |
data.id |
string | yes | |
data.orgId |
string | yes | |
data.environment |
“development” | “production” | yes | |
data.journeyKey |
string | yes | |
data.profileId |
string | yes | |
data.workflowId |
string | yes | |
data.runId |
string | yes | |
data.releaseId |
string | yes | |
data.status |
“running” | “waiting” | “completed” | “failed” | “cancelled” | yes | |
data.step |
string | null | yes | |
data.timerDeadline |
string (date-time) | null | yes | |
data.journalEntries |
integer | yes | -2147483648 ≤ x ≤ 2147483647 |
data.error |
string | null | yes | |
data.startedAt |
string (date-time) | yes | |
data.updatedAt |
string (date-time) | yes | |
data.endedAt |
string (date-time) | null | yes | |
data.journal |
object[] | yes | |
data.journal[] |
object | yes | |
data.journal[].call |
one of | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“sleep” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.duration |
string | integer | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“waitForEvent” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.event |
string | string[] | yes | |
data.journal[].call〈variant〉.args.timeout |
string | integer | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“email.send” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.template |
string | yes | length 0–64 |
data.journal[].call〈variant〉.args.props |
record<string, any> | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“webhook.send” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.destination |
string | yes | length 1–∞ |
data.journal[].call〈variant〉.args.payload |
record<string, any> | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“traits.set” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.key |
string | yes | length 1–∞ |
data.journal[].call〈variant〉.args.value |
any | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“traits.unset” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.key |
string | yes | length 1–∞ |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“profile.get” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“profiles.get” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.id |
string | yes | length 1–∞ |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“events.track” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.event |
string | yes | length 1–∞ |
data.journal[].call〈variant〉.args.properties |
record<string, any> | yes | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“restart” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.event |
object | no | |
data.journal[].result |
one of | yes | |
data.journal[].result〈variant〉 |
object | yes | |
data.journal[].result〈variant〉.ok |
true | yes | |
data.journal[].result〈variant〉.value |
any | yes | |
data.journal[].result〈variant〉 |
object | yes | |
data.journal[].result〈variant〉.ok |
false | yes | |
data.journal[].result〈variant〉.error |
object | yes | |
data.journal[].result〈variant〉.error.code |
string | yes | length 1–∞ |
data.journal[].result〈variant〉.error.message |
string | yes | |
data.journal[].at |
integer | yes | 0 ≤ x ≤ ∞ |
data.logs |
object[] | yes | |
data.logs[] |
object | yes | |
data.logs[].seq |
integer | yes | -2147483648 ≤ x ≤ 2147483647 |
data.logs[].level |
“debug” | “info” | “warn” | “error” | yes | |
data.logs[].message |
string | yes | |
data.logs[].createdAt |
string (date-time) | yes | |
meta |
object | no | |
meta.requestId |
string | no | |
meta.nextCursor |
string | null | no | |
meta.hasMore |
boolean | no |
Errors follow the shared envelope and code table.