Skip to main content

Documentation Index

Fetch the complete documentation index at: https://orbit-docs.devotel.io/llms.txt

Use this file to discover all available pages before exploring further.

Flow Executions

Every time a published flow runs — triggered by an inbound message, a campaign send, an API call, or a scheduled cron — Orbit records a complete execution trace: which nodes ran, what their inputs and outputs were, how long they took, and any errors raised. Use the Executions API to debug flow logic in production, replay a failed run after a fix, or stream execution events into your observability stack.

List recent executions

curl -G https://orbit-api.devotel.io/api/v1/flows/executions \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "flow_id=flow_abc123" \
  --data-urlencode "status=failed" \
  --data-urlencode "limit=25"

Response

{
  "data": [
    {
      "id": "exec_xyz789",
      "flow_id": "flow_abc123",
      "flow_version": 4,
      "status": "failed",
      "trigger": {
        "type": "inbound_message",
        "channel": "sms",
        "message_id": "msg_sms_abc"
      },
      "started_at": "2026-05-09T10:14:22.103Z",
      "ended_at": "2026-05-09T10:14:22.487Z",
      "duration_ms": 384,
      "node_count": 6,
      "error": {
        "node_id": "node_send_sms",
        "code": "INVALID_PHONE_NUMBER",
        "message": "to must be a valid E.164 phone number"
      }
    }
  ],
  "meta": {
    "next_cursor": "exec_xyz788",
    "request_id": "req_a1b2c3"
  }
}

Get a single execution

curl https://orbit-api.devotel.io/api/v1/flows/executions/exec_xyz789 \
  -H "X-API-Key: dv_live_sk_..."
The response includes a node_runs array with per-node input, output, started_at, ended_at, error, and a stable node_id so you can correlate against the flow definition.

Replay an execution

curl -X POST https://orbit-api.devotel.io/api/v1/flows/executions/exec_xyz789/replay \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "use_latest_version": true,
    "override_inputs": {
      "to": "+14155552671"
    }
  }'
Replays run against the latest published flow version by default; pass use_latest_version: false to replay against the original version that ran. override_inputs lets you patch the original trigger payload — useful when a downstream service was at fault and the input itself was correct, or vice-versa.

Stream execution events (SSE)

curl -N https://orbit-api.devotel.io/api/v1/flows/executions/stream \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Accept: text/event-stream"
Events: execution.started, execution.node_started, execution.node_completed, execution.node_failed, execution.completed, execution.failed. Each event carries the same shape as the corresponding webhook event so the same handler can consume both transports.

Status values

StatusMeaning
pendingQueued; workers haven’t picked it up yet.
runningAt least one node is currently executing.
completedAll nodes finished successfully.
failedA node threw an unrecoverable error.
cancelledExecution was cancelled (manually or by a flow’s TTL).
timed_outExecution exceeded the per-flow wallclock cap.

Common errors

CodeHTTPCauseFix
EXECUTION_NOT_FOUND404The execution id doesn’t belong to the calling org or has been purged (90-day default retention).Verify the id, and your org id; bump retention via Settings → Compliance → Retention if you need longer history.
EXECUTION_REPLAY_TOO_OLD409The original flow version no longer exists and use_latest_version=false was set.Replay against the latest version, or restore the archived version first.
EXECUTION_REPLAY_NOT_REPLAYABLE422Webhook-trigger replays without override_inputs are rejected because the upstream signature is one-time-use.Pass override_inputs with the trigger payload you want replayed.
EXECUTION_RATE_LIMITED429Per-key replay rate exceeds the cap (default 30/min).Honour Retry-After.

Retention

Executions are retained for 90 days on the self-serve plan and configurable up to 24 months on Enterprise. Beyond the retention window, only the started_at, status, and flow_id summary fields are kept; the per-node trace is purged.