Ideogram 4.5 API, Ideogram v4 API, Ideogram RMBG API: Pricing, Documentation

by Ideogram

Ideogram is renowned for its exceptional ability to generate images with accurate, readable text—a challenge for most AI image models. Through Pixazo's API, developers can create images containing logos, signs, typography, and text elements that render correctly. The API offers text-to-image and image-to-image generation, plus background removal.

Get API Key
Ideogram AI API

Models Version

WELCOME BONUS

Get 10% Cashback on Your First Payment (up to $500)

Add funds and get 10% cashback on your first payment (up to $500).

Claim Your Cashback →

Ideogram 4.5 API Documentation

Generate images, posters, logos and designs from a text prompt with Ideogram 4.5, Ideogram's model built for accurate text rendering inside the image. Choose low, medium or high quality and up to 8 images per request. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the images from output.media_url.

POST https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Image - Ideogram 4.5

Request Code

POST https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top",
  "image_size": "portrait_4_3",
  "quality": "medium",
  "num_images": 1
}
import requests

url = "https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top",
  "image_size": "portrait_4_3",
  "quality": "medium",
  "num_images": 1
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top",
  "image_size": "portrait_4_3",
  "quality": "medium",
  "num_images": 1
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top", "image_size": "portrait_4_3", "quality": "medium", "num_images": 1}'

Output

{
  "request_id": "ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLTo enableHTTPS URL to receive the Webhook callback.
X-Webhook-ModeNoterminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks).

Example: enable Webhook

curl -X POST 'https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top", "image_size": "portrait_4_3", "quality": "medium", "num_images": 1}'

Callback Payload (success)

{
  "request_id": "ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4-5",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-10-02T10:04:54.387Z",
  "completed_at": "2026-10-02 10:05:21"
}

Failure callback shape

{
  "request_id": "ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ideogram-v4-5",
  "error": "Description of the failure"
}

Delivery semantics

  • terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
  • sync mode: a Webhook callback on every poll while the request is processing (status PROCESSING), plus the final COMPLETED/ERROR callback.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the Webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring—1–10,000 charactersWhat to generate. To put words on the image, write them in the prompt exactly as they should appear — for example a sign reading "OPEN".
image_sizeNostring or object"square_hd"square_hd, square, portrait_4_3, landscape_4_3, portrait_16_9, landscape_16_9, or {"width", "height"} matching a supported sizeOutput size. See Image Sizes below for the preset dimensions and the supported exact sizes.
qualityNostring"medium"low, medium, highRendering quality. Higher quality takes longer and is billed at a higher rate per image.
enable_prompt_expansionNobooleantruetrue, falseLets Ideogram rewrite and enrich your prompt before generation. Set false to keep your exact wording.
num_imagesNointeger11–8How many images to generate from this request. Each image is billed.
seedNointeger— (random)any integerRandom seed. Reuse a seed with identical settings to get a similar result; omit it for a new variation each time.

Good to know

  • sync_mode is not supported — a request with sync_mode: true is rejected. Finished images are always delivered as URLs through the status endpoint.
  • num_images is the only way to ask for several images. n, count, batch_size, number_of_images are rejected.
  • Omit optional fields you do not use — do not send them as null.

Image Sizes

Pass image_size as one of the named presets, or as an object such as {"width": 1440, "height": 2560}. An object must match one of the 36 supported sizes below exactly. The size does not change the amount billed.

PresetOutput size (width × height)
square_hd1024×1024 (the default)
square1024×1024 (same as square_hd)
portrait_4_3864×1152
landscape_4_31152×864
portrait_16_9720×1280
landscape_16_91280×720

Supported exact sizes

OrientationWidth × height
Square1024×1024, 2048×2048
Landscape1280×720, 1152×864, 1120×896, 1280×800, 1440×720, 1248×832, 3072×1024, 2944×1152, 2560×1440, 3072×1280, 2304×1728, 2240×1792, 2560×1600, 3168×1296, 2880×1440, 2496×1664, 3328×1248
Portrait720×1280, 864×1152, 896×1120, 800×1280, 720×1440, 832×1248, 1024×3072, 1152×2944, 1440×2560, 1280×3072, 1728×2304, 1792×2240, 1600×2560, 1296×3168, 1440×2880, 1248×3328, 1664×2496

Example Request

{
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-lettered title reading \"KYOTO\" across the top",
  "image_size": "portrait_4_3",
  "quality": "medium",
  "num_images": 1
}

Example Response

{
  "request_id": "ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable Webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Invalid parameters — a required field is missing, or a value has the wrong type, is out of range or is not one of the allowed values. Rejected before any hold is placed on your balance.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance for the hold this request needs.
429Too many requests.
500Internal server error.

Most parameter problems are caught when you submit and returned as a 400, before any hold is placed on your balance. Problems that need an image to be fetched or the model to run are reported through the status endpoint as status: "ERROR", with a message in error saying what to fix. Failed requests are not billed — the hold is released in full.

ConditionHow it surfaces
Missing or invalid subscription keysynchronous 401
Balance too low for the holdsynchronous 402
Missing prompt, or a prompt longer than 10,000 characterssynchronous 400
quality not one of low, medium, highsynchronous 400
num_images not an integer from 1 to 8synchronous 400
sync_mode: true, or a batch field such as batch_sizesynchronous 400
An image_size string that is not one of the presetssynchronous 400
An edit field such as image_url, mask_url or edit_precision (send edits to the Edit endpoint)synchronous 400
A field older Ideogram versions used, such as rendering_speed, aspect_ratio, negative_prompt or style, or webhook_url / wait_seconds in the JSON body (use the X-Webhook-URL header and the ?wait_seconds= query parameter)synchronous 400
A {"width", "height"} image_size that is not one of the supported exact sizesstatus: "ERROR"
Any other field that is not in the parameters table (the provider rejects unknown fields)status: "ERROR"
A prompt refused by the provider's content policystatus: "ERROR"

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED or ERROR, then download the images from output.media_url — one URL per generated image. Treat any status other than QUEUED, PROCESSING or COMPLETED as a failure.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

cURL example

curl 'https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "ideogram-v4-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4-5",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-10-02T10:04:54.387Z",
  "completed_at": "2026-10-02 10:05:21"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED or ERROR.
model_idstringThe model that handled the request — ideogram-v4-5 for this endpoint.
output.media_urlarray of stringsURLs of the generated images (PNG), one per image.
output.media_typestringimage/png.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is ERROR.
polling_urlstringStatus URL for this request (submit response only).

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or ERROR (failure).

Typical workflow

  1. Send the request to POST https://gateway.pixazo.ai/ideogram-v4-5/v1/text-to-image.
  2. Save the request_id from the 202 response.
  3. Poll GET /v2/requests/status/{request_id} every 5–10 seconds, or use a Webhook instead.
  4. When status is COMPLETED, download the images from output.media_url.

How billing is measured

Billing is measured per generated image: the number of images you ask for (num_images, 1 by default) at the rate for the quality tier you choose — medium when you leave it out. The image size does not change the amount. The amount is placed as a hold when the request is submitted and released in full if the request fails.

The current rate is shown in the pricing panel on this page.

Ideogram 4.5 API Pricing

Billed per image by the quality parameter; image size does not change the price. Higher quality = more detail and better prompt adherence at higher cost and latency. Use low for drafts, medium (the default) for everyday work, high for final assets.

QualityPrice (USD)
Per image (Low quality)$0.03
Per image (Medium quality, default)$0.06
Per image (High quality)$0.10
Image to Image (Image Editing)

Ideogram 4.5 API Documentation

Edit an image with a text prompt using Ideogram 4.5. Guide the edit with up to four reference images and limit it to part of the image with a mask. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the images from output.media_url.

POST https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Edit - Ideogram 4.5

Request Code

POST https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "edit_precision": "regular",
  "quality": "medium"
}
import requests

url = "https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "edit_precision": "regular",
  "quality": "medium"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "edit_precision": "regular",
  "quality": "medium"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg", "edit_precision": "regular", "quality": "medium"}'

Output

{
  "request_id": "ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.

HeaderRequiredDescription
X-Webhook-URLTo enableHTTPS URL to receive the Webhook callback.
X-Webhook-ModeNoterminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks).

Example: enable Webhook

curl -X POST 'https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged", "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg", "edit_precision": "regular", "quality": "medium"}'

Callback Payload (success)

{
  "request_id": "ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4-5-edit",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-10-02T10:04:54.387Z",
  "completed_at": "2026-10-02 10:05:21"
}

Failure callback shape

{
  "request_id": "ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ideogram-v4-5-edit",
  "error": "Description of the failure"
}

Delivery semantics

  • terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
  • sync mode: a Webhook callback on every poll while the request is processing (status PROCESSING), plus the final COMPLETED/ERROR callback.
  • Callbacks are idempotent on request_id — de-duplicate on it.
  • Respond 200 within a few seconds; the Webhook endpoint must be HTTPS.

Request Parameters

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstring—1–10,000 charactersWhat to change in the source image, in plain words. Text you want on the image can be written exactly as it should appear.
image_urlYesstring—Public https URL — JPEG, PNG or WEBPThe image to edit. Only this image is changed.
reference_image_urlsNoarray of strings—0–4 public https URLs (at most 3 with mask_url)Images that guide the edit, such as a style, an object or a character. They are never edited themselves.
mask_urlNostring—Public https URL, same width and height as image_urlLimits the edit to part of the image: black marks the area to edit, white the area to keep. Must contain both black and white areas.
edit_precisionNostring"regular"regularregular generates a new image guided by the source. Precise Edit (high) is not yet available on this endpoint.
qualityNostring"medium"very_low, low, medium, highRendering quality. very_low is the fastest; higher quality takes longer and is billed at a higher rate per image.
image_sizeNostring or object"auto"auto, square_hd, square, portrait_4_3, landscape_4_3, portrait_16_9, landscape_16_9, or {"width", "height"}: each side at least 256 and a multiple of 32, at most 4,194,304 pixels in total, ratio at most 6:1auto keeps the source image's size. Presets and custom sizes are accepted only for unmasked edits.
num_imagesNointeger11–8How many images to generate from this request. Each image is billed.
seedNointeger— (random)any integerRandom seed. Reuse a seed with identical settings to get a similar result; omit it for a new variation each time.

Good to know

  • Image URLs must be https and publicly reachable — JPEG, PNG or WEBP.
  • sync_mode is not supported — a request with sync_mode: true is rejected. Finished images are always delivered as URLs through the status endpoint.
  • num_images is the only way to ask for several images. n, count, batch_size, number_of_images are rejected.
  • Omit optional fields you do not use — do not send them as null.

Masks and Reference Images

  • Only image_url is edited. Reference images guide the result — a style, an object, a character — and are never edited themselves.
  • A mask limits the edit to part of the image: black marks the area to edit, white the area to keep. Grey values are rounded to the nearer of the two. The mask must have the same width and height as the source image and contain both black and white areas.
  • Up to 4 reference images, or up to 3 when you send a mask (the mask takes one of the slots).
  • edit_precision currently accepts only "regular" (the default): the edit generates a new image guided by the source. Precise Edit ("high") is not yet available on this endpoint.
  • The output keeps the source image's size by default (image_size: "auto", downscaled if the source is very large). Named presets and custom sizes are accepted only for unmasked edits.

Example: masked edit with a reference image

{
  "prompt": "Replace the masked area with a neon sign that reads \"OPEN LATE\"",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "mask_url": "https://your-cdn.example.com/mask.png",
  "reference_image_urls": [
    "https://your-cdn.example.com/neon-style.jpg"
  ]
}

Example Request

{
  "prompt": "Replace the background with a sunlit beach at golden hour and keep the subject unchanged",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "edit_precision": "regular",
  "quality": "medium"
}

Example Response

{
  "request_id": "ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
Ocp-Apim-Subscription-KeyYesYour API subscription key.
X-Webhook-URLNoEnable Webhook callbacks (see Webhook section).

Response Handling

Status CodeMeaning
202Accepted — request queued; returns request_id and polling_url.
400Invalid parameters — a required field is missing, or a value has the wrong type, is out of range or is not one of the allowed values. Rejected before any hold is placed on your balance.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance for the hold this request needs.
429Too many requests.
500Internal server error.

Most parameter problems are caught when you submit and returned as a 400, before any hold is placed on your balance. Problems that need an image to be fetched or the model to run are reported through the status endpoint as status: "ERROR", with a message in error saying what to fix. Failed requests are not billed — the hold is released in full.

ConditionHow it surfaces
Missing or invalid subscription keysynchronous 401
Balance too low for the holdsynchronous 402
Missing prompt or image_url, or a prompt longer than 10,000 characterssynchronous 400
edit_precision or quality not one of the allowed valuessynchronous 400
num_images not an integer from 1 to 8synchronous 400
More than 4 reference_image_urlssynchronous 400
sync_mode: true, or a batch field such as batch_sizesynchronous 400
An image_size string that is not auto or one of the presetssynchronous 400
A preset or custom image_size together with mask_urlsynchronous 400
A field older Ideogram versions used, such as rendering_speed, aspect_ratio, negative_prompt or style, or webhook_url / wait_seconds in the JSON body (use the X-Webhook-URL header and the ?wait_seconds= query parameter)synchronous 400
An image, reference or mask URL that is not reachable or not a supported imagestatus: "ERROR"
A mask whose size differs from the source image, or that is all black or all whitestatus: "ERROR"
More than 3 reference_image_urls together with mask_urlstatus: "ERROR"
A custom image_size outside the limitsstatus: "ERROR"
Any other field that is not in the parameters table (the provider rejects unknown fields)status: "ERROR"
A prompt or image refused by the provider's content policystatus: "ERROR"

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED or ERROR, then download the images from output.media_url — one URL per generated image. Treat any status other than QUEUED, PROCESSING or COMPLETED as a failure.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

cURL example

curl 'https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "ideogram-v4-5-edit_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4-5-edit",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-10-02T10:04:54.387Z",
  "completed_at": "2026-10-02 10:05:21"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED or ERROR.
model_idstringThe model that handled the request — ideogram-v4-5-edit for this endpoint.
output.media_urlarray of stringsURLs of the generated images (PNG), one per image.
output.media_typestringimage/png.
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is ERROR.
polling_urlstringStatus URL for this request (submit response only).

Status Values & Flow

QUEUED → PROCESSING → COMPLETED (success) or ERROR (failure).

Typical workflow

  1. Send the request to POST https://gateway.pixazo.ai/ideogram-v4-5-edit/v1/edit-image.
  2. Save the request_id from the 202 response.
  3. Poll GET /v2/requests/status/{request_id} every 5–10 seconds, or use a Webhook instead.
  4. When status is COMPLETED, download the images from output.media_url.

How billing is measured

Billing is measured per generated image: the number of images you ask for (num_images, 1 by default) at the rate for the quality tier you choose — medium when you leave it out. The image size does not change the amount. The amount is placed as a hold when the request is submitted and released in full if the request fails.

The current rate is shown in the pricing panel on this page.

Ideogram 4.5 API Pricing

Billed per image by the quality parameter (very_low, low, medium, high); image size does not change the price. medium is the default.

QualityPrice (USD)
Per image (Very low quality)$0.008
Per image (Low quality)$0.03
Per image (Medium quality, default)$0.06
Per image (High quality)$0.22
2. Ideogram v4

Ideogram v4 API Documentation

https://gateway.pixazo.ai/ideogram-v4/v1/ideogram-v4-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Ideogram V4 generate request

Request Code

POST https://gateway.pixazo.ai/ideogram-v4/v1/ideogram-v4-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-painted lettering reading KYOTO across the top",
  "num_images": 1,
  "image_size": "square_hd",
  "output_format": "jpeg",
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "expansion_model": "Medium",
  "enable_safety_checker": true,
  "sync_mode": false
}
import requests

url = "https://gateway.pixazo.ai/ideogram-v4/v1/ideogram-v4-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-painted lettering reading KYOTO across the top",
    "num_images": 1,
    "image_size": "square_hd",
    "output_format": "jpeg",
    "rendering_speed": "BALANCED",
    "acceleration": "none",
    "expansion_model": "Medium",
    "enable_safety_checker": true,
    "sync_mode": false
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ideogram-v4/v1/ideogram-v4-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-painted lettering reading KYOTO across the top",
  "num_images": 1,
  "image_size": "square_hd",
  "output_format": "jpeg",
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "expansion_model": "Medium",
  "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/ideogram-v4/v1/ideogram-v4-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-painted lettering reading KYOTO across the top",
    "num_images": 1,
    "image_size": "square_hd",
    "output_format": "jpeg",
    "rendering_speed": "BALANCED",
    "acceleration": "none",
    "expansion_model": "Medium",
    "enable_safety_checker": true,
    "sync_mode": false
  }'

Output

{
  "request_id": "ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4_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 - Ideogram V4 generate request

Parameter Required Type Default Allowed values / range Description
promptYesstring——Text prompt for image generation. Must describe the desired visual content with clarity.
num_imagesNointeger11, 2, 3, 4Number of images to generate.
image_sizeNostring or object"square_hd""square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or custom {width, height} objectImage dimensions preset or custom resolution.
output_formatNostring"jpeg""jpeg", "png"Output image format.
rendering_speedNostring"BALANCED""TURBO", "BALANCED", "QUALITY"Quality vs speed trade-off tier.
accelerationNostring"none""none", "low", "regular", "high"Hardware acceleration level. Higher values may reduce generation time but increase cost.
expansion_modelNostring"Medium""None", "Medium", "Large"Which model expands (rewrites and enriches) your prompt before generation. "None" disables prompt expansion and skips its fee; "Medium" is fast; "Large" uses Ideogram's Magic Prompt for the highest quality.
enable_safety_checkerNobooleantrue—Turns on automatic filtering of unsafe or explicit (NSFW) content. Leave enabled unless you have a specific reason to disable it.
seedNointeger——Random seed that controls the generation's randomness. Reuse the same seed with identical settings to reproduce the same result; leave it empty for a different output each time.
sync_modeNobooleanfalse—If on, the finished file is sent back directly instead of as a download link. Handy for quick tests; for normal use, leave it off to get a download link.

Example Request

{
  "prompt": "A vintage travel poster of Kyoto in autumn, bold hand-painted lettering reading KYOTO across the top",
  "num_images": 1,
  "image_size": "square_hd",
  "output_format": "jpeg",
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "expansion_model": "Medium",
  "enable_safety_checker": true,
  "sync_mode": false
}

Response

{
  "request_id": "ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal 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 'ideogram-v4' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ideogram-v4",
  "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/ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ideogram-v4_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ideogram-v4_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

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Ideogram v4 API Pricing

Higher tier = more detail and better prompt adherence at higher cost and latency. Use Turbo for speed, Balanced for everyday work, Quality for final assets.

ResolutionPrice (USD)
Per megapixel (Turbo)$0.0075
Per megapixel (Balanced, default)$0.015
Per megapixel (Quality)$0.025
Image to Image

Ideogram v4 API Documentation

https://gateway.pixazo.ai/ideogram-v4-image-to-image/v1/ideogram-v4-image-to-image-request

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Ideogram V4 Image to Image generate request

Request Code

POST https://gateway.pixazo.ai/ideogram-v4-image-to-image/v1/ideogram-v4-image-to-image-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "Restyle as a vibrant watercolor illustration with bold ink outlines",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "image_size": "auto",
  "strength": 0.8,
  "num_images": 1,
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "output_format": "jpeg",
  "expansion_model": "Medium",
  "enable_safety_checker": true,
  "sync_mode": false
}
import requests

url = "https://gateway.pixazo.ai/ideogram-v4-image-to-image/v1/ideogram-v4-image-to-image-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "Restyle as a vibrant watercolor illustration with bold ink outlines",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
    "image_size": "auto",
    "strength": 0.8,
    "num_images": 1,
    "rendering_speed": "BALANCED",
    "acceleration": "none",
    "output_format": "jpeg",
    "expansion_model": "Medium",
    "enable_safety_checker": true,
    "sync_mode": false
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/ideogram-v4-image-to-image/v1/ideogram-v4-image-to-image-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "Restyle as a vibrant watercolor illustration with bold ink outlines",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "image_size": "auto",
  "strength": 0.8,
  "num_images": 1,
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "output_format": "jpeg",
  "expansion_model": "Medium",
  "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/ideogram-v4-image-to-image/v1/ideogram-v4-image-to-image-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "Restyle as a vibrant watercolor illustration with bold ink outlines",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
    "image_size": "auto",
    "strength": 0.8,
    "num_images": 1,
    "rendering_speed": "BALANCED",
    "acceleration": "none",
    "output_format": "jpeg",
    "expansion_model": "Medium",
    "enable_safety_checker": true,
    "sync_mode": false
  }'

Output

{
  "request_id": "ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-image-to-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 - Ideogram V4 Image to Image generate request

Parameter Required Type Default Allowed values / range Description
promptYesstring——Text prompt describing the desired output. Must be descriptive for best results.
image_urlYesstring——Upload your input image. JPG, PNG, WebP, GIF, or AVIF.
image_sizeNostring or object"auto""auto", "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9"Preset aspect ratios: `auto`, `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.
strengthNofloat0.80.0–1.0How much the result may differ from the input. Higher values allow bigger changes from the source; lower values keep the output closer to the original.
num_imagesNointeger11–4Number of images to generate. Allowed range: 1–4.
rendering_speedNostring"BALANCED""TURBO", "BALANCED", "QUALITY"Quality vs speed tier. Allowed: `TURBO`, `BALANCED`, `QUALITY`.
accelerationNostring"none""none", "low", "regular", "high"Hardware acceleration level. Allowed: `none`, `low`, `regular`, `high`.
output_formatNostring"jpeg""jpeg", "png"Output image format. Allowed: `jpeg`, `png`.
expansion_modelNostring"Medium""None", "Medium", "Large"Model used to expand the prompt for richer generation. Allowed: `None`, `Medium`, `Large`.
enable_safety_checkerNobooleantrue—Turns on automatic filtering of unsafe or explicit (NSFW) content. Leave enabled unless you have a specific reason to disable it.
seedNointeger——Random seed that controls the generation's randomness. Reuse the same seed with identical settings to reproduce the same result; leave it empty for a different output each time.
sync_modeNobooleanfalse—If on, the finished file is sent back directly instead of as a download link. Handy for quick tests; for normal use, leave it off to get a download link.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image1JPG, PNG, WEBP, GIF, AVIF · < 10 MBInput image.

Example Request

{
  "prompt": "Restyle as a vibrant watercolor illustration with bold ink outlines",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana/nano-banana-a382a80b-f8df-4de1-a0c1-a5dcfd42dae4-1758783383399.jpg",
  "image_size": "auto",
  "strength": 0.8,
  "num_images": 1,
  "rendering_speed": "BALANCED",
  "acceleration": "none",
  "output_format": "jpeg",
  "expansion_model": "Medium",
  "enable_safety_checker": true,
  "sync_mode": false
}

Response

{
  "request_id": "ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal 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 'ideogram-v4-image-to-image' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ideogram-v4-image-to-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/ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "ideogram-v4-image-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-v4-image-to-image",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ideogram-v4-image-to-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

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Ideogram v4 API Pricing

ResolutionPrice (USD)
Per megapixel (Turbo)$0.0075
Per megapixel (Balanced, default)$0.015
Per megapixel (Quality)$0.025
3. Ideogram Remove Background

Ideogram Remove Background API Documentation

https://gateway.pixazo.ai/ideogram-remove-background/v1/ideogram-remove-background-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

Ideogram Remove Background generate request - Ideogram Remove Background

Request Code

POST https://gateway.pixazo.ai/ideogram-remove-background/v1/ideogram-remove-background-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg"
}
import requests

url = "https://gateway.pixazo.ai/ideogram-remove-background/v1/ideogram-remove-background-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch('https://gateway.pixazo.ai/ideogram-remove-background/v1/ideogram-remove-background-request', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify({
    image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/ideogram-remove-background/v1/ideogram-remove-background-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg"
  }'

Output

{
  "images": [
    {
      "file_name": "nano-banana-pro-edit-output.png",
      "content_type": "image/png",
      "url": "[RESPONSE_URL]"
    }
  ],
  "description": ""
}

Request Parameters - Ideogram Remove Background generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
image_urlYesstring——Source image URL. Supported formats: JPEG, PNG, WebP. Max file size 10MB.
sync_modeNobooleanfalsetrue, falseIf on, the finished file is sent back directly instead of as a download link. Handy for quick tests; for normal use, leave it off to get a download link.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image1JPEG, PNG, WEBP · < 10 MBImage to remove the background from.

Minimum Request

{
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/upscaler_019ed0c8-bb34-7854-afbc-b2a164758a15b/output.png"
}

Full Request (all options)

{
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Image.jpeg",
  "sync_mode": false
}

Response

{
  "request_id": "ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response Fields - Ideogram Remove Background generate request

Field Type Description
request_id string Unique identifier for the job submission.
status string Current status of the request (QUEUED, PROCESSING, etc.).
polling_url string URL to use for checking the job status.

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for Ideogram Remove Background generate request.

Code Meaning
200 Success
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

400: Bad Request

{
  "error": "Invalid image_url",
  "message": "The provided image_url is malformed or unreachable."
}

401: Unauthorized

{
  "error": "Unauthorized",
  "message": "Missing or invalid Ocp-Apim-Subscription-Key header."
}

Status Workflow

Check status of your request using the polling_url returned in the response.

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

Submitted
    ↓
  QUEUED
    ↓
PROCESSING
    ↓
COMPLETED or FAILED or ERROR

Typical Workflow

  1. Submit request to /ideogram-remove-background-request
  2. Receive response with request_id and polling_url
  3. Make GET requests to polling_url every 2–3 seconds
  4. When status is COMPLETED, extract output from the response
  5. Handle FAILED or ERROR states as appropriate

Ideogram Remove Background check status - Ideogram Remove Background

Request Code

POST https://gateway.pixazo.ai/v2/requests/status/ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
import requests

url = "https://gateway.pixazo.ai/v2/requests/status/ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
headers = {
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}

response = requests.get(url, headers=headers)
print(response.json())
fetch('https://gateway.pixazo.ai/v2/requests/status/ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', {
  method: 'GET',
  headers: {
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Output

{
  "images": [
    {
      "file_name": "nano-banana-pro-edit-output.png",
      "content_type": "image/png",
      "url": "[RESPONSE_URL]"
    }
  ],
  "description": ""
}

Request Parameters - Ideogram Remove Background check status

ParameterRequiredTypeDefaultAllowed values / rangeDescription
request_idYesstring——The unique request ID returned from the initial submission endpoint.

Minimum Request

{
  "request_id": "ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Full Request (all options)

{
  "request_id": "ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response

{
  "request_id": "ideogram-remove-background_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ideogram-remove-background",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/ideogram-remove-background_019dxxxx/output.png"],
    "media_type": "image/png"
  },
  "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 - Ideogram Remove Background check status

Field Type Description
request_id string Unique identifier for the request.
status string Current status of the job (QUEUED, PROCESSING, COMPLETED, FAILED, ERROR).
model_id string The model used for processing.
error null|string null if successful, error details if failed.
output object Contains media_url and media_type for the generated result.
output.media_url array Array of URLs pointing to the generated media.
output.media_type string MIME type of the output (e.g., image/png).
created_at string Timestamp when the request was received.
updated_at string Timestamp when the request status was last updated.
completed_at string Timestamp when the request was completed.

Request Headers

Header Value
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for Ideogram Remove Background check status.

Code Meaning
200 Success
400 Bad Request - Invalid request_id
401 Unauthorized
404 Not Found - Request ID not found
Too Many Requests
500 Internal Server Error

Notes & Tips

  • Pricing is $0.01 per request.
  • Use sync_mode: true if you need the output as a data URI directly in the submission response (not recommended for production).
  • Wait 2–3 seconds between polling requests for optimal performance.
  • Implement exponential backoff for retrying failed or system error responses.
  • Image must be under 10MB and in JPEG, PNG, or WebP format.
  • The output is always a transparent PNG, suitable for compositing.
  • Responses from the polling endpoint are not cached — each poll counts toward your usage limits.
  • Use the polling URL returned in the initial response — do not construct it manually.

Ideogram Remove Background API Pricing

Your request will cost $0.01 per image.

⚡ Performance

Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).

Show data for the last
Generations
43,600last 30d
~1,453 per day
Success rate
99.1%
of completed generations
Generation time
37.7savg
p95 64.7s
Requests
Sep 17max 11,900Oct 16
Ideogram v4Avg 1,103/day
Ideogram 4.5Avg 203/day
Ideogram Remove BackgroundAvg 147/day
Generation Time
Sep 17max 113.6sOct 16
Ideogram v4Avg 37.7s
Ideogram 4.5Avg 43.6s
Ideogram Remove BackgroundAvg 30.0s
Error Rate
Sep 17max 13.3%Oct 16
Ideogram v4Avg 1.2%
Ideogram 4.5Avg 0.0%
Ideogram Remove BackgroundAvg 0.0%

〰 Uptime

Percent of generations that succeeded over the selected period, per model version.

Avg. Success Rate (30d)
99.08%
across all generations of this model family
Uptime
Sep 17max 100%Oct 16
Ideogram v4Avg 98.78%
Ideogram 4.5Avg 100.00%
Ideogram Remove BackgroundAvg 100.00%