Async Jobs and Polling - KitchenGPT API Jobs — KitchenGPT Developers - KitchenGPT

Jobs & polling

Most modules are asynchronous. Starting a module returns 202 Accepted with a job object. Poll until the status is terminal.

Job lifecycle

StatusMeaning
queuedAccepted and waiting to run
processingActively generating
succeededComplete — result.image_url is present
failedTerminal failure — error.code / error.message present

Create a job

POST https://kitchengpt.io/v1/modules/{module}
Content-Type: multipart/form-data

# → 202
{
  "job": {
    "id": "8f3c…",
    "module": "change-style",
    "status": "queued",
    "created_at": "2026-07-30T10:00:00+00:00",
    "updated_at": "2026-07-30T10:00:00+00:00"
  },
  "links": { "self": "https://kitchengpt.io/v1/jobs/8f3c…" }
}

Poll a job

GET https://kitchengpt.io/v1/jobs/{id}

# → 200 (succeeded)
{
  "job": {
    "id": "8f3c…",
    "module": "change-style",
    "status": "succeeded",
    "result": { "image_url": "https://kitchengpt.io/storage/designs/…/result.png" },
    "processing_time_ms": 18420
  }
}

Recommended poll interval: every 2 seconds. Back off if you receive 429.

Result URLs

Successful jobs include a publicly fetchable result.image_url. The URL is always hosted on KitchenGPT storage — never a third-party model CDN. Download and store the image in your own system if you need long-term retention — URLs may be rotated according to your commercial agreement.