Boogu Image API: Pricing, Documentation
by Boogu
Boogu Image API is a high-performance image generation and editing API designed to transform text prompts and existing images into detailed, visually rich outputs with strong prompt adherence and photorealistic quality. Built on the Boogu-Image model family, the API supports text-to-image creation, image-to-image editing, fast image synthesis, and multilingual text rendering, making it suitable for creative design, marketing assets, concept art, product visualization, and content generation workflows. Its architecture focuses on accurate scene understanding, coherent compositions, realistic lighting, stable typography, and reliable preservation of subject details during image editing, enabling developers to integrate advanced AI-powered image creation capabilities into applications and automated workflows through a scalable API interface.

Models Version
Get $5 Free Credit on First Payment
No strings attached — add funds and get $5 bonus instantly
Boogu Image v1 API Documentation
https://gateway.pixazo.ai/boogu-image/v1/boogu-image-request
Authentication
All requests require an API key passed via header.
| Header | Type | Required | Description |
|---|---|---|---|
| Ocp-Apim-Subscription-Key | string | Yes | Your API subscription key |
Boogu Image generate request
Request Code
POST https://gateway.pixazo.ai/boogu-image/v1/boogu-image-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY
{
"prompt": "A serene Japanese tea garden at dusk with stone lanterns lighting a winding path",
"negative_prompt": "",
"image_size": "square_hd",
"num_inference_steps": 30,
"guidance_scale": 4,
"cfg_range_start": 0,
"cfg_range_end": 1,
"num_images": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
import requests
url = "https://gateway.pixazo.ai/boogu-image/v1/boogu-image-request"
headers = {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
"prompt": "A serene Japanese tea garden at dusk with stone lanterns lighting a winding path",
"negative_prompt": "",
"image_size": "square_hd",
"num_inference_steps": 30,
"guidance_scale": 4,
"cfg_range_start": 0,
"cfg_range_end": 1,
"num_images": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/boogu-image/v1/boogu-image-request";
const headers = {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
"prompt": "A serene Japanese tea garden at dusk with stone lanterns lighting a winding path",
"negative_prompt": "",
"image_size": "square_hd",
"num_inference_steps": 30,
"guidance_scale": 4,
"cfg_range_start": 0,
"cfg_range_end": 1,
"num_images": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/boogu-image/v1/boogu-image-request" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
--data-raw '{
"prompt": "A serene Japanese tea garden at dusk with stone lanterns lighting a winding path",
"negative_prompt": "",
"image_size": "square_hd",
"num_inference_steps": 30,
"guidance_scale": 4,
"cfg_range_start": 0,
"cfg_range_end": 1,
"num_images": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}'
Output
{
"request_id": "boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Webhook (Optional)
Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.
X-Webhook-URL: https://your-server.com/webhook/callback
Request Parameters - Boogu Image generate request
| Parameter | Required | Type | Default | Allowed values / range | Description |
|---|---|---|---|---|---|
| prompt | Yes | string | — | — | Instruction describing the image to generate. Supports bilingual input (e.g., English and Chinese). |
| negative_prompt | No | string | "" | — | Description of elements that should NOT appear in the generated image. |
| image_size | No | string or object | "square_hd" | "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or {width, height} | Preset aspect ratios: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Alternatively, provide a custom object with width and height keys. |
| num_inference_steps | No | integer | 30 | 20–50 | Number of denoising steps. Valid range: 20–50. Higher values improve quality at the cost of speed. |
| guidance_scale | No | float | 4 | 1–8 | How closely the generation follows the prompt. Valid range: 1–8. Higher values increase prompt adherence but may reduce diversity. |
| cfg_range_start | No | float | 0 | 0–1 | Start of the timestep fraction over which Classifier-Free Guidance (CFG) is applied. |
| cfg_range_end | No | float | 1 | 0–1 | End of the timestep fraction over which Classifier-Free Guidance (CFG) is applied. |
| num_images | No | integer | 1 | 1–4 | Number of images to generate. Valid range: 1–4. |
| output_format | No | string | "jpeg" | "jpeg", "png" | Output image format. Allowed values: jpeg, png. |
| enable_safety_checker | No | boolean | true | — | Enables NSFW content filtering. Set to false to disable. |
| seed | No | integer | — | — | Random seed for reproducible results. If omitted, a random seed is used. |
| sync_mode | No | boolean | false | — | If true, returns the generated image(s) as base64-encoded data URIs inline in the response. If false, returns a request_id for async polling. |
Example Request
{
"prompt": "A serene Japanese tea garden at dusk with stone lanterns lighting a winding path",
"negative_prompt": "",
"image_size": "square_hd",
"num_inference_steps": 30,
"guidance_scale": 4,
"cfg_range_start": 0,
"cfg_range_end": 1,
"num_images": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
Response
{
"request_id": "boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Request Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Cache-Control | no-cache |
| Ocp-Apim-Subscription-Key | YOUR_API_KEY |
Response Handling
Common status codes.
| Code | Meaning |
|---|---|
| 202 | Accepted — Request queued |
| 400 | Bad Request |
| 401 | Unauthorized |
| 402 | Insufficient Balance |
| 403 | Forbidden |
| 429 | Too Many Requests |
| 500 | Internal Server Error |
Error Responses
Queue system errors and model validation errors.
Queue System Errors
// 402 — Insufficient balance
{
"error": "Insufficient Balance",
"message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
"error": "Model not found",
"message": "Model 'boogu-image' not found or is disabled"
}
Error via Status/Webhook
{
"request_id": "boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "ERROR",
"model_id": "boogu-image",
"error": "Description of the error",
"output": null
}
Retrieving Results
Poll the universal status endpoint to check progress and retrieve results.
Endpoint
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY
cURL Example
curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
"https://gateway.pixazo.ai/v2/requests/status/boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Response (Completed)
{
"request_id": "boogu-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "boogu-image",
"error": null,
"output": {
"media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/boogu-image_019dxxxx/output.jpeg"],
"media_type": "image/jpeg"
},
"created_at": "2026-03-31T10:00:00.000Z",
"updated_at": "2026-03-31T10:00:15.000Z",
"completed_at": "2026-03-31T10:00:15.000Z"
}
Response Fields
| Field | Type | Description |
|---|---|---|
| request_id | string | Unique request identifier |
| status | string | QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR |
| model_id | string | Model that processed the request |
| error | string|null | Error message if failed |
| output.media_url | array | URLs to generated media (R2 CDN) |
| output.media_type | string | MIME type of the output |
| created_at | string | When request was created |
| completed_at | string | When request completed |
| polling_url | string | Status URL (initial response only) |
Status Values
| Status | Description |
|---|---|
| QUEUED | Request accepted, waiting to be processed |
| PROCESSING | Being processed by the model |
| COMPLETED | Done — output contains the result |
| FAILED | Failed — check error field |
| ERROR | System error — not charged |
Status Flow
QUEUED → PROCESSING → COMPLETED
→ FAILED
→ ERROR
Typical Workflow
- Send a generate request to the API endpoint
- Save the
request_idfrom the response - Poll every 5-10 seconds:
GET /v2/requests/status/{request_id} - When
statusis"COMPLETED", download fromoutput.media_url
Tip: Use X-Webhook-URL header to get a callback instead of polling.
Boogu Image v1 API Pricing
Boogu Image v1 API Documentation
https://gateway.pixazo.ai/boogu-image-edit/v1/boogu-image-edit-request
Authentication
All requests require an API key passed via header.
| Header | Type | Required | Description |
|---|---|---|---|
| Ocp-Apim-Subscription-Key | string | Yes | Your API subscription key |
Boogu Image Edit generate request
Request Code
POST https://gateway.pixazo.ai/boogu-image-edit/v1/boogu-image-edit-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY
{
"prompt": "Change the background to a snowy mountain landscape at golden hour",
"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
"negative_prompt": "",
"num_images": 1,
"num_inference_steps": 30,
"guidance_scale": 4,
"image_guidance_scale": 1,
"cfg_range_start": 0,
"cfg_range_end": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
import requests
url = "https://gateway.pixazo.ai/boogu-image-edit/v1/boogu-image-edit-request"
headers = {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
"prompt": "Change the background to a snowy mountain landscape at golden hour",
"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
"negative_prompt": "",
"num_images": 1,
"num_inference_steps": 30,
"guidance_scale": 4,
"image_guidance_scale": 1,
"cfg_range_start": 0,
"cfg_range_end": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/boogu-image-edit/v1/boogu-image-edit-request";
const headers = {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
"prompt": "Change the background to a snowy mountain landscape at golden hour",
"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
"negative_prompt": "",
"num_images": 1,
"num_inference_steps": 30,
"guidance_scale": 4,
"image_guidance_scale": 1,
"cfg_range_start": 0,
"cfg_range_end": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/boogu-image-edit/v1/boogu-image-edit-request" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
--data-raw '{
"prompt": "Change the background to a snowy mountain landscape at golden hour",
"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
"negative_prompt": "",
"num_images": 1,
"num_inference_steps": 30,
"guidance_scale": 4,
"image_guidance_scale": 1,
"cfg_range_start": 0,
"cfg_range_end": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}'
Output
{
"request_id": "boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Webhook (Optional)
Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.
X-Webhook-URL: https://your-server.com/webhook/callback
Request Parameters - Boogu Image Edit generate request
| Parameter | Required | Type | Default | Allowed values / range | Description |
|---|---|---|---|---|---|
| prompt | Yes | string | — | — | Edit instruction describing how to transform the input image. Must be descriptive and specific for best results. |
| image_url | Yes | string | — | — | URL of the input image. Supported formats: JPG, PNG, WebP, GIF, AVIF. |
| negative_prompt | No | string | "" | — | Text describing elements that should NOT appear in the edited image. Use to exclude unwanted objects, styles, or artifacts. |
| image_size | No | string or object | "square_hd" | "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or custom {width, height} | Preset aspect ratios: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Alternatively, provide a custom object with width and height integers. |
| num_images | No | integer | 1 | 1–4 | Number of images to generate. Allowed range: 1–4. |
| num_inference_steps | No | integer | 30 | 20–50 | Number of denoising steps during generation. Higher values improve quality at the cost of speed. |
| guidance_scale | No | float | 4 | 1–8 | Strength of prompt adherence. Higher values make output more aligned with the prompt. |
| image_guidance_scale | No | float | 1 | 1–8 | Controls how closely the output follows the input image. Higher values preserve more input structure. |
| cfg_range_start | No | float | 0 | 0–1 | Start of the timestep fraction over which Classifier-Free Guidance (CFG) is applied. |
| cfg_range_end | No | float | 1 | 0–1 | End of the timestep fraction over which Classifier-Free Guidance (CFG) is applied. |
| output_format | No | string | "jpeg" | "jpeg", "png" | Output image format. |
| enable_safety_checker | No | boolean | true | — | Enables NSFW content filtering. Set to false to disable. |
| seed | No | integer | — | — | Random seed for reproducible results. If omitted, a random seed is used. |
| sync_mode | No | boolean | false | — | If true, returns the generated image(s) as base64-encoded data URIs inline in the response. If false, returns a request_id for asynchronous polling. |
Example Request
{
"prompt": "Change the background to a snowy mountain landscape at golden hour",
"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
"negative_prompt": "",
"num_images": 1,
"num_inference_steps": 30,
"guidance_scale": 4,
"image_guidance_scale": 1,
"cfg_range_start": 0,
"cfg_range_end": 1,
"output_format": "jpeg",
"enable_safety_checker": true,
"sync_mode": false
}
Response
{
"request_id": "boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Request Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Cache-Control | no-cache |
| Ocp-Apim-Subscription-Key | YOUR_API_KEY |
Response Handling
Common status codes.
| Code | Meaning |
|---|---|
| 202 | Accepted — Request queued |
| 400 | Bad Request |
| 401 | Unauthorized |
| 402 | Insufficient Balance |
| 403 | Forbidden |
| 429 | Too Many Requests |
| 500 | Internal Server Error |
Error Responses
Queue system errors and model validation errors.
Queue System Errors
// 402 — Insufficient balance
{
"error": "Insufficient Balance",
"message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
"error": "Model not found",
"message": "Model 'boogu-image-edit' not found or is disabled"
}
Error via Status/Webhook
{
"request_id": "boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "ERROR",
"model_id": "boogu-image-edit",
"error": "Description of the error",
"output": null
}
Retrieving Results
Poll the universal status endpoint to check progress and retrieve results.
Endpoint
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY
cURL Example
curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
"https://gateway.pixazo.ai/v2/requests/status/boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Response (Completed)
{
"request_id": "boogu-image-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "boogu-image-edit",
"error": null,
"output": {
"media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/boogu-image-edit_019dxxxx/output.jpeg"],
"media_type": "image/jpeg"
},
"created_at": "2026-03-31T10:00:00.000Z",
"updated_at": "2026-03-31T10:00:15.000Z",
"completed_at": "2026-03-31T10:00:15.000Z"
}
Response Fields
| Field | Type | Description |
|---|---|---|
| request_id | string | Unique request identifier |
| status | string | QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR |
| model_id | string | Model that processed the request |
| error | string|null | Error message if failed |
| output.media_url | array | URLs to generated media (R2 CDN) |
| output.media_type | string | MIME type of the output |
| created_at | string | When request was created |
| completed_at | string | When request completed |
| polling_url | string | Status URL (initial response only) |
Status Values
| Status | Description |
|---|---|
| QUEUED | Request accepted, waiting to be processed |
| PROCESSING | Being processed by the model |
| COMPLETED | Done — output contains the result |
| FAILED | Failed — check error field |
| ERROR | System error — not charged |
Status Flow
QUEUED → PROCESSING → COMPLETED
→ FAILED
→ ERROR
Typical Workflow
- Send a generate request to the API endpoint
- Save the
request_idfrom the response - Poll every 5-10 seconds:
GET /v2/requests/status/{request_id} - When
statusis"COMPLETED", download fromoutput.media_url
Tip: Use X-Webhook-URL header to get a callback instead of polling.