メインコンテンツへスキップ

get-cloudflow-flow-run

dci get-cloudflow-flow-run flowId runId

Returns a run's status and, for each node, the JSON it consumed and produced. This is how you find out why a run failed, or that it "succeeded" while producing the wrong data.

input is null for most node types, and that is not an error. Only action nodes — the AWS, GCP, Azure, Oracle, DoiT and admin operations — record their inputs. Transform, code, branch, switch, datastore, subflow and trigger nodes record none, so their input is always null. output is recorded by every node that finishes, so read a transform's behaviour from its output.

Payloads appear as soon as a node reports a terminal status, so a poll loop can read results while later nodes are still running.

Any value the node's schema marks sensitive is replaced with a redaction marker; credentials and connection configuration never appear.

Each input and output is capped at 64KB. When a payload exceeds that, whole entries are dropped from the end, truncated is true, and totalBytes reports the untruncated size — nothing is silently cut, and what you receive is always valid JSON.

Runs belonging to another tenant, or to a different flow, return 404. Nodes inside a fan-out currently report only the last path to finish.

Output

The run and its per-node detail.

By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.

FieldTypeDescription
nodesarray of objectOne entry per node, in execution order.
nodes[].nodeIdstringNode identifier, matching the node in the flow's graph.
nodes[].namestringNode display name.
nodes[].statusstringCurrent node status. One of: "pending", "in-progress", "complete", "completed-with-errors", "failed", "rejected", "approval-timed-out", "pending-approval", "sleeping", "skipped", "stopped".
nodes[].stepNumberintegerPosition in execution order. Absent for nodes that never started.
nodes[].startTimestring (date-time)
nodes[].endTimestring (date-time)
nodes[].errorstringFailure message. Present when the node failed.
nodes[].inputobjectWhat the node consumed. Always null for non-action nodes — see the operation description.
nodes[].input.valuearray of anyThe recorded JSON, always an array. Sensitive values are replaced with a redaction marker.
nodes[].input.truncatedbooleanTrue when entries were dropped to fit the size cap.
nodes[].input.totalBytesintegerSize of the untruncated payload in bytes.
nodes[].outputobjectWhat the node produced. Null until the node reaches a terminal status.
nodes[].output.valuearray of anyThe recorded JSON, always an array. Sensitive values are replaced with a redaction marker.
nodes[].output.truncatedbooleanTrue when entries were dropped to fit the size cap.
nodes[].output.totalBytesintegerSize of the untruncated payload in bytes.
idstring
flowIdstring
flowNamestring
statusstringOne of: "pending", "running", "complete", "completed-with-errors", "pending-approval", "failed", "sleeping", "stopped".
isTestbooleanTrue when the run was started through actions/test-run.
triggeredBystring
triggerTimestring (date-time)
startTimestring (date-time)
endTimestring (date-time)
errorstring
stoppedBystring
Raw JSON schema
{
"type": "object",
"description": "A run plus what each of its nodes consumed and produced.",
"required": [
"id",
"flowId",
"status",
"isTest",
"triggeredBy",
"triggerTime",
"nodes"
],
"allOf": [
{
"type": "object",
"description": "A run without its per-node detail.",
"required": [
"id",
"flowId",
"status",
"isTest",
"triggeredBy",
"triggerTime"
],
"properties": {
"id": {
"type": "string"
},
"flowId": {
"type": "string"
},
"flowName": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending",
"running",
"complete",
"completed-with-errors",
"pending-approval",
"failed",
"sleeping",
"stopped"
]
},
"isTest": {
"type": "boolean",
"description": "True when the run was started through `actions/test-run`."
},
"triggeredBy": {
"type": "string"
},
"triggerTime": {
"type": "string",
"format": "date-time"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"endTime": {
"type": "string",
"format": "date-time"
},
"error": {
"type": "string",
"nullable": true
},
"stoppedBy": {
"type": "string",
"nullable": true
}
}
},
{
"type": "object",
"properties": {
"nodes": {
"type": "array",
"description": "One entry per node, in execution order.",
"items": {
"type": "object",
"description": "One node's contribution to a run.",
"required": [
"nodeId",
"name",
"status",
"input",
"output"
],
"properties": {
"nodeId": {
"type": "string",
"description": "Node identifier, matching the node in the flow's graph."
},
"name": {
"type": "string",
"description": "Node display name."
},
"status": {
"type": "string",
"description": "Current node status.",
"enum": [
"pending",
"in-progress",
"complete",
"completed-with-errors",
"failed",
"rejected",
"approval-timed-out",
"pending-approval",
"sleeping",
"skipped",
"stopped"
]
},
"stepNumber": {
"type": "integer",
"description": "Position in execution order. Absent for nodes that never started."
},
"startTime": {
"type": "string",
"format": "date-time"
},
"endTime": {
"type": "string",
"format": "date-time"
},
"error": {
"type": "string",
"nullable": true,
"description": "Failure message. Present when the node failed."
},
"input": {
"nullable": true,
"description": "What the node consumed. **Always null for non-action nodes** — see the operation\ndescription.",
"allOf": [
{
"type": "object",
"description": "JSON a node consumed or produced, bounded in size. Null when the node records nothing of\nthat kind — normal for `input` on any non-action node.",
"required": [
"value"
],
"properties": {
"value": {
"type": "array",
"description": "The recorded JSON, always an array. Sensitive values are replaced with a redaction\nmarker.",
"items": {}
},
"truncated": {
"type": "boolean",
"description": "True when entries were dropped to fit the size cap."
},
"totalBytes": {
"type": "integer",
"description": "Size of the untruncated payload in bytes."
}
}
}
]
},
"output": {
"nullable": true,
"description": "What the node produced. Null until the node reaches a terminal status.",
"allOf": [
{
"type": "object",
"description": "JSON a node consumed or produced, bounded in size. Null when the node records nothing of\nthat kind — normal for `input` on any non-action node.",
"required": [
"value"
],
"properties": {
"value": {
"type": "array",
"description": "The recorded JSON, always an array. Sensitive values are replaced with a redaction\nmarker.",
"items": {}
},
"truncated": {
"type": "boolean",
"description": "True when entries were dropped to fit the size cap."
},
"totalBytes": {
"type": "integer",
"description": "Size of the untruncated payload in bytes."
}
}
}
]
}
}
}
}
}
}
]
}

Errors

On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.

HTTP statusExit codeError codeMeaning
40030VALIDATION_ERRORThe arguments or request body were rejected. Review the command's flags and payload.
40110AUTHENTICATION_FAILEDNot signed in, or the API token is invalid. Run dci login or check DCI_API_KEY.
40311PERMISSION_DENIEDThe DoiT user or the active customer context does not have access.
40420RESOURCE_NOT_FOUNDThe requested resource does not exist. Check the identifier argument.
42950RATE_LIMITEDToo many requests. Retryable — the CLI reports the server-provided delay.
50040API_SERVER_ERRORThe API failed to process the request. Retryable; contact DoiT support if it persists.

Aliases: getcloudflowflowrun