UlazAI developer docs

Status and webhooks

Track async generations

Image generation is asynchronous. Start with /api/v1/generate/, then poll /api/v1/generate/{generation_id}/ until the job reaches completed or failed.

curl -X GET https://ulazai.com/api/v1/generate/YOUR_GENERATION_ID/ \
  -H "Authorization: Bearer YOUR_API_KEY"

Lifecycle states

pending

Job created and queued.

processing

Provider task is running.

completed

Result image URL is available.

failed

Error returned, credits are refunded.

Status response examples

Processing

{
  "success": true,
  "data": {
    "generation_id": "5a6be42f-4f01-4e80-9e16-8105315f0e62",
    "status": "processing",
    "estimated_time": "30 seconds",
    "prompt": "...",
    "message": "Generating your image..."
  }
}

Completed

{
  "success": true,
  "data": {
    "generation_id": "5a6be42f-4f01-4e80-9e16-8105315f0e62",
    "status": "completed",
    "image_url": "https://media.ulazai.com/.../image.png",
    "prompt": "...",
    "credits_used": 8
  }
}

Failed

{
  "success": true,
  "data": {
    "generation_id": "5a6be42f-4f01-4e80-9e16-8105315f0e62",
    "status": "failed",
    "error_message": "Prompt violates content policy",
    "message": "Generation failed. Credits have been refunded."
  }
}

Callbacks

Unified endpoint jobs use signed callback URLs internally. Callback handling is managed by UlazAI and does not require client-side setup.

Legacy Nano Banana endpoints also expose webhook processing at:

/nano-banana/webhook/