Skip to main content
Every generation request creates a job that runs asynchronously. Track it by polling GET /jobs/{job_id} until it reaches a terminal state.

Status values

statusMeaningTerminal
queuedAccepted, waiting to be picked up.
processingCurrently generating.
doneCompleted — result.image_url is ready.
failedFailed — see error.
The job creation response always returns status: "queued". The status surfaced by GET /jobs/{job_id} uses processing (not queued) while actively generating.

Polling

Poll GET /jobs/{job_id} until status is done or failed. A short interval (e.g. 2 seconds) is typical.
curl -s https://bananahub.io/api/v1/jobs/$JOB_ID \
  -H "Authorization: Bearer $API_KEY"
When status is done, result.image_url is a presigned URL valid for 24 hours. It is regenerated on every poll — always use the freshest value rather than caching an old one.
To avoid polling entirely, register a webhook and we’ll notify you when the job reaches a terminal state.
See the full Get job reference for the response schema.