Get an App Run
GET /openapi/v1/app-runs/{runId}
Authorization: Bearer <API_KEY>
Request parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
runId | Path | string | Yes | Run ID returned by the creation API |
runId is an opaque string returned unchanged by the creation API. Any active Key belonging to the same user can query the Run; other users cannot. Clients must not depend on its length or generation rules.
The success status is HTTP 200.
Success response example
200success when the API query succeedstext, image, video, or audiotext, image, video, or audiotext, image, video, or audioRun statuses
| Status | Terminal | Meaning |
|---|---|---|
pending | No | Created and waiting to be submitted to the execution service |
queued | No | Entered the execution queue |
running | No | Currently executing |
canceling | No | Cancellation in progress; v1 has no external cancel API, but platform operations may produce this state |
succeeded | Yes | All required steps succeeded |
partial_success | Yes | Some steps succeeded and produced usable results |
failed | Yes | The Run failed |
canceled | Yes | The Run was canceled |
outputs
outputs contains only outputs declared by the publisher. Array order follows this Run's public output list. Result URLs are public and can be accessed directly without an additional signature.
Text results are also returned through HTTPS file URLs rather than embedded directly in JSON.
steps
stepIndex, nodeKey, nodeType, name, and estimatedPrice come from the step list recorded when this Run was created. Republishing the App later does not change these fields on existing Runs. nodeKey is only used to associate steps.
Before a step starts, it usually returns status=pending and progress=0. A step may produce multiple results; steps[].url shows only its primary result. Use outputs for the complete final results.
Failed Runs
When execution fails, the HTTP status and top-level message still indicate that the query itself succeeded. data.status is failed, and the response includes a sanitized Run error:
Failed response example
200success when the API query succeedsfailed in this example100 in a terminal stateDistinguish between these error types:
- The top-level
messageis notsuccess, anddatacontainserror.code: the API call failed, for example because of authentication, invalid input, or rate limiting. - The top-level
messageissuccess,datacontainsrunId/status/..., anddata.erroris not null: the API query succeeded, but asynchronous Run execution failed.