Workflow executions
Every run of a workflow, whether started by the trigger, by Run workflow or as a dry run by Test workflow, is recorded as an execution. List executions returns them newest first, Get execution adds the payload and the full result; executions are deleted with the workflow. Texts in summary are in the language of your account.
{
"id": "0f2d9c4e-7b1a-4e6d-8c3f-5a6b7c8d9e0f",
"source": "test",
"status": "completed",
"trigger_type": "inbound_message",
"stopped_reason": "completed",
"version_number": 3,
"created_at": "2026-09-08T11:05:12+02:00",
"payload": {
"message": { "body": "Hello", "channel": "sms", "inbox_id": 0 },
"contact": { "phone": "32470123456" },
"execution": { "run_count": 0 }
},
"result": {
"visited_nodes": [
{ "id": "trigger", "type": "triggerNode", "label": "Inbound message", "result": "triggered", "incoming_edge_id": null },
{ "id": "office_hours", "type": "conditionNode", "label": "Within office hours?", "result": "matched", "branch": "true", "incoming_edge_id": "e1" },
{ "id": "assign", "type": "actionNode", "label": "Assign to support", "result": "would_execute", "incoming_edge_id": "e2" }
],
"actions": [
{
"type": "assign_conversation",
"summary": "Conversation would be assigned to one of alice, bob (round robin) unless it is already assigned",
"details": { "conversation_key": "32470123456", "assign_mode": "round_robin", "only_if_unassigned": true, "status": "open" }
}
],
"stopped_reason": "completed"
}
}
| Key | Values | Description |
|---|---|---|
source | test / manual / an ID | Dry run, Run workflow, or the ID of the message, delivery report or contact that fired the trigger. |
status | running / waiting / completed / stopped / failed | waiting = parked on a wait node; stopped = a node stopped the workflow; failed = an exception, stopped_reason holds the message. |
stopped_reason | completed / wait / stopped / missing_trigger / loop_detected / max_steps_reached | Why the run ended, or the error message of a failed run. |
version_number | integer | The version of the workflow that ran. |
payload | object | The payload the run started with (Get execution only). |
result.visited_nodes[] | list | Every node in the order it was visited, with result: triggered; matched / not_matched (with branch); executed (real run) or would_execute (dry run); loop_detected. A split entry marks a handle with several outgoing edges. |
result.actions[] | list | One entry per action node that was reached: type, summary (free text) and details (the specifics, e.g. team_member and conversation_key for assign_conversation). A real run adds status: executed, skipped or failed; a dry run has no status because the action was only previewed. |