Lifecycle

Every request moves through the same stable lifecycle.

The request object is the durable record for work submitted to the API. Clients can poll it safely until they reach a terminal state.

queued

The request was accepted and written to the Cannon Studio request store.

processing

The request is running or a downstream generation task has already been accepted.

succeeded

The request reached a terminal success state and the output payload is available.

failed

The request reached a terminal failure state. The request object includes an error message.

Polling model

  • Submit once through `POST /api/v1/requests`.
  • Poll GET /api/v1/requests/{requestId} using the same API key.
  • Stop polling when the status becomes `succeeded` or `failed`.
  • If a webhook URL is supplied, Cannon Studio will attempt terminal delivery to that endpoint.
  • API-originated input and output logs stay available for seven days on the request object and in the console.

Response fields

{
  "id": "req_123",
  "operation": "image.generate",
  "status": "processing",
  "billableCredits": 28,
  "createdAtMs": 1762479300000,
  "startedAtMs": 1762479301200,
  "completedAtMs": null,
  "errorMessage": null,
  "output": {
    "task_id": "img_123",
    "status": "processing",
    "provider": "kie",
    "model": "seedream/5-lite-text-to-image"
  }
}