Jobs
Check a generation
A handle looks like <pack>:<kind>:<name> and comes back from every generation endpoint.
There's no jobs table behind this: generation is two-phase, so the asset row is written up front with status generating and the runner fills it in. The asset is the job record, which is why a handle stays resolvable long after the run finished.
Polling always terminates. A run that dies without recording anything reads as error once it passes the stale cutoff.
/jobs/{job}Path parameters
jobstringrequiredThe job handle.
Response · 200
The job's current state. status is generating, ready or error.
jobstringrequiredThe handle you asked about.
packstringrequiredThe pack it belongs to.
statusstringrequiredHoisted from the asset so a poll loop needn't reach into it.
Options: generating, ready, error
errorstringWhy it failed. Null unless status is error.
assetobjectrequiredThe asset itself.
idstringrequiredStable id, and the job handle this asset was created under.
kindstringrequiredWhich store it lives in.
Options: texture, model, font, sound
namestringrequiredIts name within the pack. Prefixed for item sprites and GUI sheets.
statusstringrequiredWhere the generation got to.
Options: generating, ready, error
displayNamestringThe label you gave it, if any.
promptstringWhat it was generated from.
errorstringWhy it failed. Null unless status is error.
sizeBytesintegerSize of the stored file.
updatedAtstringrequiredISO 8601.
Error codes
Branch on error.code, never on the message.
invalid_job_handle400A job handle that isn't <pack>:<kind>:<name>.
invalid_api_key401The key isn't one of ours, or it has been revoked.
missing_api_key401No Authorization: Bearer header was sent.
plan_required403The key is valid, but its account is on Starter. The API needs a paid plan.
job_not_found404No job by that handle.
not_found404No such pack, asset or job.