GET /runs/{runId} needs workflowBuilder.redactedPaths.Authorization: Bearer <API_KEY> with workflowBuilder. The run is read only if it belongs to the key's community, so a run id from another community answers 404 RUN_NOT_FOUND.| Failure | Meaning | Recovery |
|---|---|---|
403 API_KEY_PERMISSION_DENIED | No workflowBuilder | Grant the permission. |
404 RUN_NOT_FOUND | Unknown run id, or a run of another community | Use a run id from GET /{workflowId}/runs. |
{
"data": {
"_id": "65f1a2b3c4d5e6f708192a40",
"workflowId": "65f1a2b3c4d5e6f708192a3b",
"communityId": "65f1a2b3c4d5e6f708192a50",
"status": "success",
"startTime": "2026-10-24T10:02:14.000Z",
"endTime": "2026-10-24T10:02:19.000Z",
"createdAt": "2026-10-24T10:02:13.000Z",
"updatedAt": "2026-10-24T10:02:19.000Z",
"results": {
"65f1a2b3c4d5e6f708192a3c": { "status": "success", "result": { "XP": 150 } },
"65f1a2b3c4d5e6f708192a3e": { "status": "success", "result": { "branches": [{ "branchName": "XP > 100", "branchIndex": 1, "evaluation": true }, { "branchName": "Otherwise", "branchIndex": 2, "evaluation": false }] } },
"65f1a2b3c4d5e6f708192a3d": { "status": "success", "result": { "XP": 160 } },
"65f1a2b3c4d5e6f708192a3f": { "status": "skipped" }
},
"redactedPaths": []
}
}200 with the run in data. results is an object keyed by step id, so a caller can join it to the workflow's steps:results[stepId].status is that step's outcome: success, fail or skipped.{branchName, branchIndex, evaluation}, with 1-based branchIndex; the write side counts branches from 0.results[stepId].result is what the step produced.skipped, depending on how the run reached it.GET /{workflowId}/runs for the new run id and read it here. For a reward step, what settles it is this result plus the member's own field value, read through the platform API.| Status and code | When | Recovery |
|---|---|---|
400 VALIDATION_FAILED | The run id is not 24 hexadecimal characters | Use the id exactly as returned. |
401 AUTHENTICATION_REQUIRED | No key, or an unknown key | Send a valid key. |
403 API_KEY_PERMISSION_DENIED | No workflowBuilder | Grant the permission. |
404 RUN_NOT_FOUND | Unknown run id, or a run of another community | Use a run id from the list. |
429 RATE_LIMITED | The community's API rate limit was reached | Wait for the window to reset, then retry. |
500 INTERNAL_ERROR | Unexpected failure | Retry with bounded backoff. |
running can gain results between two reads, so poll while the status is transient and stop when it is success or error.results is null or partial for a run that did not reach every step, so treat a missing key as "did not run", not as an empty result.["__REDACTED__"] and named in redactedPaths. A secret an author typed into a raw body template is returned as recorded.LEADERBOARD_NOT_FOUND, rather than returned.POST /runs/{runId}/retry when the run failed and should run again.GET /{workflowId}/runs for the runs around this one.PATCH /{workflowId}/nodes/{nodeId} to fix the step the run blamed.curl --location 'https://api.returning.ai/v1/workflow-builder/data-workflows/runs/65f1a2b3c4d5e6f708192a40' \
--header 'Authorization: Bearer <API_KEY>'{
"data": {
"_id": "65f1a2b3c4d5e6f708192a40",
"workflowId": "65f1a2b3c4d5e6f708192a3b",
"communityId": "65f1a2b3c4d5e6f708192a50",
"status": "success",
"startTime": "2026-10-24T10:02:14.000Z",
"endTime": "2026-10-24T10:02:19.000Z",
"createdAt": "2026-10-24T10:02:13.000Z",
"updatedAt": "2026-10-24T10:02:19.000Z",
"results": {
"65f1a2b3c4d5e6f708192a3c": {
"status": "success",
"result": {
"Total XP": 150
}
},
"65f1a2b3c4d5e6f708192a3e": {
"status": "success",
"result": {
"branches": [
{
"branchName": "XP > 100",
"branchIndex": 1,
"evaluation": true
},
{
"branchName": "Otherwise",
"branchIndex": 2,
"evaluation": false
}
]
}
},
"65f1a2b3c4d5e6f708192a3d": {
"status": "success",
"result": {
"XP": 160
}
}
},
"redactedPaths": []
}
}