Executions
An execution is one automation for one profile, pinned to the version it started on. It can be filtered by automation, version, status, and profile in one place. Its detail carries what the automation logged with api.log. Pipeline keys can read executions, but stopping them is explicit: cancel is the only write and requires a dashboard session.
GET /v1/executions
Section titled “GET /v1/executions”List executions, newest first
Auth: Session token, or an org pipeline key.
Query parameters
{ "cursor": "string", "limit": 50, "q": "string", "automation": "string", "version": "string", "status": "running", "profileId": "string", "appId": "string", "since": "2026-01-15T09:30:00.000Z"}| Field | Type | Required | Constraints |
|---|---|---|---|
cursor |
string | no | |
limit |
integer | no | default 50; 1 ≤ x ≤ 100 |
q |
string | no | length 0–200 |
automation |
string | no | length 1–200 |
version |
string | no | length 1–200 |
status |
“running” | “waiting” | “completed” | “failed” | “cancelled” | no | |
profileId |
string | no | length 1–200 |
appId |
string | no | length 0–200 |
since |
string (date-time) | no |
Response 200
{ "data": [ { "id": "string", "orgId": "string", "appId": "string", "automationKey": "string", "profileId": "string", "workflowId": "string", "runId": "string", "versionId": "string", "triggerEventId": "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, "warnings": [ { "code": "string", "message": "string", "suggestion": "string" } ] }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object[] | yes | |
data[] |
object | yes | |
data[].id |
string | yes | |
data[].orgId |
string | yes | |
data[].appId |
string | yes | |
data[].automationKey |
string | yes | |
data[].profileId |
string | yes | |
data[].workflowId |
string | yes | |
data[].runId |
string | yes | |
data[].versionId |
string | yes | |
data[].triggerEventId |
string | null | 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 | |
meta.warnings |
object[] | no | |
meta.warnings[] |
object | no | |
meta.warnings[].code |
string | yes | |
meta.warnings[].message |
string | yes | |
meta.warnings[].suggestion |
string | no |
Errors follow the shared envelope and code table.
POST /v1/executions/cancel
Section titled “POST /v1/executions/cancel”Cancel live executions of an automation, or of one version
Admin only. Each execution stops when it reaches its next step.
Auth: Session token.
Request body
{ "data": { "automation": "string", "appId": "string", "version": "string" }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object | yes | |
data.automation |
string | no | length 1–200 |
data.appId |
string | no | length 0–200 |
data.version |
string | no | length 1–200 |
Response 200
{ "data": { "cancelling": true }, "meta": { "requestId": "string", "nextCursor": "string", "hasMore": true, "warnings": [ { "code": "string", "message": "string", "suggestion": "string" } ] }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object | yes | |
data.cancelling |
true | yes | |
meta |
object | no | |
meta.requestId |
string | no | |
meta.nextCursor |
string | null | no | |
meta.hasMore |
boolean | no | |
meta.warnings |
object[] | no | |
meta.warnings[] |
object | no | |
meta.warnings[].code |
string | yes | |
meta.warnings[].message |
string | yes | |
meta.warnings[].suggestion |
string | 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: Session token, or an org pipeline key.
Response 200
{ "data": { "id": "string", "orgId": "string", "appId": "string", "automationKey": "string", "profileId": "string", "workflowId": "string", "runId": "string", "versionId": "string", "triggerEventId": "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, "warnings": [ { "code": "string", "message": "string", "suggestion": "string" } ] }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object | yes | |
data.id |
string | yes | |
data.orgId |
string | yes | |
data.appId |
string | yes | |
data.automationKey |
string | yes | |
data.profileId |
string | yes | |
data.workflowId |
string | yes | |
data.runId |
string | yes | |
data.versionId |
string | yes | |
data.triggerEventId |
string | null | 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 |
“send.email” | 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〉.args.from |
string | no | length 0–200 |
data.journal[].call〈variant〉.args.replyTo |
string (email) | no | |
data.journal[].call〈variant〉 |
object | yes | |
data.journal[].call〈variant〉.name |
“send.webhook” | 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 |
“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 |
“restart” | yes | |
data.journal[].call〈variant〉.args |
object | yes | |
data.journal[].call〈variant〉.args.event |
object | no | |
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 |
“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[].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 | |
meta.warnings |
object[] | no | |
meta.warnings[] |
object | no | |
meta.warnings[].code |
string | yes | |
meta.warnings[].message |
string | yes | |
meta.warnings[].suggestion |
string | no |
Errors follow the shared envelope and code table.