Ming Image API: Pricing, Documentation

by Ant Ling

Ming Image is a design-focused image model built for layouts where the text has to be right: posters, app and web mockups, infographics and social graphics with sharp, legible typography. Through Pixazo's API, developers can generate a finished design from a text prompt, then split any flattened design into editable transparent layers (text, images, containers and background) so each element can be moved, restyled or replaced on its own. Billing follows what the model actually produces, so smaller canvases and fewer returned layers cost less.

Get API Key
Ming Image API

Models Version

WELCOME BONUS

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Ming Image 0.1 API Documentation

Generate a design-grade image from a text prompt with Ming Image 0.1 — posters, UI mockups, infographics and other text-rich layouts, with sharp, legible typography. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the image from output.media_url. Generation typically takes under two minutes.

POST https://gateway.pixazo.ai/ming-image/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 - Ming Image 0.1

Request Code

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

{
  "prompt": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy",
  "output_format": "png"
}
import requests

url = "https://gateway.pixazo.ai/ming-image/v1/text-to-image"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "prompt": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy",
  "output_format": "png"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/ming-image/v1/text-to-image", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "prompt": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy",
  "output_format": "png"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/ming-image/v1/text-to-image' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"prompt": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy", "output_format": "png"}'

Output

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ming-image_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/ming-image/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": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy", "output_format": "png"}'

Callback Payload (success)

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ming-image",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-09-24T08:44:03.986Z",
  "completed_at": "2026-09-24T08:45:54.402Z"
}

Failure callback shape

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ming-image",
  "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 each status change.
  • 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—up to 4,000 charactersWhat to design: layout, the exact text to render (in quotes), palette and style. Describe the aspect ratio in words — the service chooses the canvas.
output_formatNostringpngpng, jpeg, webpFormat of the returned image.

Good to know

  • One request produces one image. There is no batch option: num_images, n, count, batch_size and number_of_images are rejected.
  • image_url, num_layers, size and enhance_prompt belong to Layer Decomposition and are rejected here; the canvas size is chosen by the service.
  • The current rates are in the pricing panel on this page.

Example Request

{
  "prompt": "Minimalist event poster, bold title \"PIXAZO SUMMIT 2026\", date line \"October 12\", geometric shapes, warm orange and navy",
  "output_format": "png"
}

Example Response

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ming-image_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.
400Bad request — prompt missing or over 4,000 characters, a size or other Layer Decomposition field, or a batch field. Anything checkable from the request body alone.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
429Too many requests.
500Internal server error.

Only what can be judged from the request body itself is rejected synchronously. Everything that needs an input to be fetched or the model to run is reported through the status endpoint instead, as status: "ERROR". Failed requests are not billed — the hold is released in full.

ConditionHow it surfaces
prompt missing, or longer than 4,000 characterssynchronous 400
size, image_url, num_layers or enhance_prompt sent to this operationsynchronous 400
A batch field (n, num_images, count, batch_size, number_of_images)synchronous 400
A prompt the provider rejectsstatus: "ERROR"

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR), then download the result from output.media_url. Most requests finish in under two minutes, so poll every 5–10 seconds rather than continuously.

curl 'https://gateway.pixazo.ai/v2/requests/status/ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ming-image",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-09-24T08:44:03.986Z",
  "completed_at": "2026-09-24T08:45:54.402Z"
}

Text to Image returns one image on a canvas the model chooses from your prompt, about 4 megapixels (for example 2048 x 2048 square, or 1440 x 2560 portrait). Layer Decomposition returns one RGBA image per returned layer, front to back, each the full working canvas with transparency around its content; the model can return fewer layers than requested.

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request.
output.media_urlarrayOne URL for a design; one URL per returned layer, front to back, for a decomposition.
output.media_typestringimage/png by default (image/jpeg or image/webp when requested).
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

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

How billing is measured

Billing follows what the model actually produced, measured in image tokens. Text to Image: the larger the canvas the model chooses, the higher the charge — never more than for a 2048 × 2048 image. Layer Decomposition: the source image plus each layer returned, at the resolution tier the service used (512 < 1k < 2k). When you submit, a hold is placed for the largest possible charge — every requested layer at the requested tier, with auto held at the 2k rate — and it is settled down to the actual usage when the request completes. If the request fails, the hold is released in full.

The current rates are shown in the pricing panel on this page.

Ming Image 0.1 API Pricing

Charged by the canvas the model chooses from your prompt: a 2048 × 2048 image is the most it costs, and smaller canvases (for example a 1440 × 2560 portrait) cost less.

Your request will cost $0.0172 per image.
Image to Image (Layer Decomposition)

Ming Image 0.1 API Documentation

Split a flattened design into editable RGBA layers with Ming Image 0.1 — text, images, containers and background on separate transparent layers. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the layers from output.media_url. Decomposition typically takes under two minutes.

POST https://gateway.pixazo.ai/ming-image/v1/layer-decompose

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Layer Decomposition - Ming Image 0.1

Request Code

POST https://gateway.pixazo.ai/ming-image/v1/layer-decompose
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png",
  "num_layers": 2,
  "prompt": "1 statue, 2 background",
  "size": "1k"
}
import requests

url = "https://gateway.pixazo.ai/ming-image/v1/layer-decompose"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png",
  "num_layers": 2,
  "prompt": "1 statue, 2 background",
  "size": "1k"
}

resp = requests.post(url, json=data, headers=headers)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/ming-image/v1/layer-decompose", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
  },
  body: JSON.stringify({
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png",
  "num_layers": 2,
  "prompt": "1 statue, 2 background",
  "size": "1k"
})
});
console.log(await res.json());
curl -X POST 'https://gateway.pixazo.ai/ming-image/v1/layer-decompose' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  --data-raw '{"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png", "num_layers": 2, "prompt": "1 statue, 2 background", "size": "1k"}'

Output

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ming-image_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/ming-image/v1/layer-decompose' \
  -H 'Content-Type: application/json' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
  -H 'X-Webhook-URL: https://your-server.com/webhook' \
  --data-raw '{"image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png", "num_layers": 2, "prompt": "1 statue, 2 background", "size": "1k"}'

Callback Payload (success)

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ming-image",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output_0.png",
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output_1.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-09-24T08:44:03.986Z",
  "completed_at": "2026-09-24T08:45:54.402Z"
}

Failure callback shape

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "ming-image",
  "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 each status change.
  • 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
image_urlYesstring—http(s) URL, up to 20 MBThe flattened design to decompose. Must be publicly reachable.
num_layersNointeger41–6How many layers to ask for. The model can return fewer; you are charged only for the layers returned.
promptNostring—up to 4,000 charactersOptional layer plan, front to back, e.g. 1 text, 2 image, 3 background. If it states a count (3 layers: …) that count must equal num_layers.
sizeNostringauto512, 1k, 2k, autoWorking resolution, as a pixel budget: 512 ≈ 512 × 512, 1k ≈ 1024 × 1024, 2k ≈ 2048 × 2048 pixels' worth; the service keeps the source aspect ratio. It also sets the rate per image. auto lets the service choose from the source, and you are charged at the tier it used.
output_formatNostringpngpng, webpFormat of the returned layers. Layers carry transparency, so JPEG is not offered.
enhance_promptNobooleantruetrue, falseLet the service refine the layer plan. Set false when you supply a complete plan and want it followed as written.

Good to know

  • One request decomposes one image. There is no batch option: num_images, n, count, batch_size and number_of_images are rejected.
  • Only Text to Image generates from a prompt alone; this operation always needs an image_url.
  • The current rates are in the pricing panel on this page.

Example Request

{
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/doc-assets/meshy-7/multi-1.png",
  "num_layers": 2,
  "prompt": "1 statue, 2 background",
  "size": "1k"
}

Example Response

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/ming-image_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.
400Bad request — image_url missing, num_layers outside 1–6 or not an integer, a plan whose layer count differs from num_layers, an unknown size, or JPEG output. Anything checkable from the request body alone.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance.
429Too many requests.
500Internal server error.

Only what can be judged from the request body itself is rejected synchronously. Everything that needs an input to be fetched or the model to run is reported through the status endpoint instead, as status: "ERROR". Failed requests are not billed — the hold is released in full.

ConditionHow it surfaces
image_url missing, or not a stringsynchronous 400
num_layers outside 1–6 or not an integer; a plan stating a different layer countsynchronous 400
size outside 512/1k/2k/auto, or output_format jpegsynchronous 400
A batch field (n, num_images, count, batch_size, number_of_images)synchronous 400
An image URL that is not reachable or not an imagestatus: "ERROR"

Retrieving Results

Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or FAILED/ERROR), then download the result from output.media_url. Most requests finish in under two minutes, so poll every 5–10 seconds rather than continuously.

curl 'https://gateway.pixazo.ai/v2/requests/status/ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'

Completed response

{
  "request_id": "ming-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "ming-image",
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output_0.png",
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output_1.png"
    ],
    "media_type": "image/png"
  },
  "created_at": "2026-09-24T08:44:03.986Z",
  "completed_at": "2026-09-24T08:45:54.402Z"
}

Text to Image returns one image on a canvas the model chooses from your prompt, about 4 megapixels (for example 2048 x 2048 square, or 1440 x 2560 portrait). Layer Decomposition returns one RGBA image per returned layer, front to back, each the full working canvas with transparency around its content; the model can return fewer layers than requested.

Response Fields

FieldTypeDescription
request_idstringUnique request identifier.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringThe model that handled the request.
output.media_urlarrayOne URL for a design; one URL per returned layer, front to back, for a decomposition.
output.media_typestringimage/png by default (image/jpeg or image/webp when requested).
created_atstringRequest creation timestamp.
completed_atstringCompletion timestamp.
errorstringError message when status is FAILED/ERROR.

Status Values & Flow

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

How billing is measured

Billing follows what the model actually produced, measured in image tokens. Text to Image: the larger the canvas the model chooses, the higher the charge — never more than for a 2048 × 2048 image. Layer Decomposition: the source image plus each layer returned, at the resolution tier the service used (512 < 1k < 2k). When you submit, a hold is placed for the largest possible charge — every requested layer at the requested tier, with auto held at the 2k rate — and it is settled down to the actual usage when the request completes. If the request fails, the hold is released in full.

The current rates are shown in the pricing panel on this page.

Ming Image 0.1 API Pricing

Billed per image: the source plus each layer returned, at the resolution tier the service used. auto is held at the 2k rate and settled to the tier it actually used.

Resolution tierPrice (USD)
512 (about 512x512 pixels)$0.00108 per image: the source plus each returned layer
1k (about 1024x1024 pixels)$0.0043 per image: the source plus each returned layer
2k (about 2048x2048 pixels)$0.0172 per image: the source plus each returned layer
Example: a 1k decomposition that returns 4 layers is charged as 5 images at the 1k rate (the source plus 4 layers).

⚡ 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
3,300last 30d
~110 per day
Success rate
93.9%
of completed generations
Generation time
68.9savg
p95 84.3s
Requests
Sep 6max 2,500Oct 5
Ming Image 0.1Avg 110/day
Generation Time
Sep 6max 94.0sOct 5
Ming Image 0.1Avg 68.9s
Error Rate
Sep 6max 28.6%Oct 5
Ming Image 0.1Avg 6.1%

〰 Uptime

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

Avg. Success Rate (30d)
93.94%
across all generations of this model family
Uptime
Sep 6max 100%Oct 5
SuccessfulAvg 93.94%