Reference

Statuses and ids

Every status for generations, batches, workflow runs, uploads and capabilities, and every id prefix.

Read as Markdown

What each status means and each id prefix names. Each status list belongs to one kind of object. Don't mix them.

Id prefixes

Prefix, underscore, 32 lowercase hex characters.

gen_0193c8f0a1b24e7f9d3c5a6b7e8f0033
ast_0193c8f0a1b24e7f9d3c5a6b7e8f0011
PrefixNamesWhere you see it
gen_One generationgeneration_id on every submit and read
bg_A batch: the generations from one submit with variantsbatch_group_id, GET /batches/{id}
ast_An asset: upload, library file or outputasset_id, file fields in config
act_An actoractor_id
voc_A voicevoice_id
wf_A saved workflowworkflow_id, the invoke path
wfr_A workflow runworkflow_run_id, Location header on invoke
sk_live_An API keyShown once when created in the app. The API never returns it

Not prefixed:

  • Capability id: a slug, like actor_ultra, tts, veo_31. Capabilities.
  • Template key: a slug, like ugc_face_cam. Invoke takes the key.
  • Node id: set by the workflow author, like f_brand. Send back exactly what the API gave you.

Id rules

  • Pass ids back exactly. Don't lowercase, trim, re-prefix or parse them.
  • Never read an id out of a download URL. Use the body field.
  • Another workspace's id answers not_found, never forbidden.
  • Asset ids must match ^ast_[0-9a-f]{32}$. Malformed in config: invalid_config.

Generation status

StatusMeansStill running
queuedAccepted, not picked up yetyes
renderingBeing madeyes
post_processingOutput being copied to storageyes
completedEvery output delivered and storedno
failedDid not deliverno
  • There is no canceled status. A canceled job reads failed.
  • A failed generation carries error: { code, message }. code can be null.

Branch on still_running, not status

GET /generations/{id}/wait returns still_running. Loop until it is false. Looping on status can wait forever on a job stuck in post_processing. Results.

The final cost is in credits.credits_charged. It is null until credits.terminal is true. null is not zero.

Batch status

Rolled up from every generation under one bg_ id.

StatusWhen
runningAny generation is not completed or failed
completedAll completed
failedAll failed
partialAll finished, some completed, some failed

Workflow run status

No wait endpoint for runs. Poll about every 30 seconds.

StatusMeansFinished
queuedRun created, nothing startedno
runningA step is workingno
completedEvery planned step finishedyes
partialSome steps finished, some failed, skipped or canceledyes
failedNothing finished, something brokeyes
canceledCanceled before any step completedyes
  • still_running is false on every finished status.
  • partial is normal. Finished steps are charged. Broken ones cost nothing.

Workflow node status

StatusMeans
pendingWaiting on an earlier step
readyInputs filled, starts next
dispatchingBeing submitted
runningGenerations working
completedDelivered
failedDid not deliver
skippedAn input failed, so it never ran
canceledRun canceled before it started

A node error is { code, message }. code is one of provider_error, moderation, timeout, canceled, insufficient_credits, invalid_input, unknown.

Upload scan status

Returned by POST /uploads/{assetId}/finalize.

scan_statususableDo
cleantrueUse the ast_ id
flaggedfalseNever usable. Upload another file
pendingfalseCall finalize again shortly

Branch on usable. Finalize is safe to repeat. Uploads.

Capability status

StatusMeans
availableSubmit now
requires_planNot in your plan. Carries required_plan
coming_soonNot live. Submits are refused
retiredDirect lookup only. Dropped from the list
unknownDirect lookup only. Id is not public

A capability can disappear from GET /capabilities. That is normal.

On this page