Alibaba

alibaba/z-image-turbo/text-to-image

Text to Image

Alibaba's Z-Image Turbo is a compact 6B-parameter model that turns prompts into lifelike images in 8 steps or fewer. Suits drafts, social posts and high-volume pipelines, with preset or custom sizes, prompt expansion, acceleration levels, seeds, PNG/JPEG/WebP files and batches of 1-4.

More settings (6)
ResultExampleSign in to try

$0.005 / megapixel · billed by each image's actual pixels

Z-Image Turbo Text to Image example
Example — generated from this input

A hyper-realistic, close-up portrait of a tribal elder from the Omo Valley, painted with intricate white chalk patterns and adorned with a headdress made of dried flowers, seed pods, and rusted bottle caps. The focus is razor-sharp on the texture of the skin, showing every pore, wrinkle, and scar that tells a story of survival. The background is a blurred, smoky hut interior, with the warm glow of a cooking fire reflecting in the subject's dark, soulful eyes. Shot on a Leica M6 with Kodak Portra 400 film grain aesthetic.

Pricing

Unit price $0.005 / megapixel

Billed by the actual pixels of each image; larger sizes and more images cost more. 1024×1024 is about 1 megapixel.

Each request temporarily reserves $0.01; you are charged for actual usage, usually within a minute: any unused amount is released and any usage above it is charged to your balance, even if that takes it below zero; while your balance is below zero, new requests are paused until a top-up covers it.

Failed generations are not charged.

API

Submit generation requests with this model ID.

POST/v1/model-tasks
alibaba/z-image-turbo/text-to-image
Request body
{
  "model": "alibaba/z-image-turbo/text-to-image",
  "input": {
    "prompt": "A hyper-realistic, close-up portrait of a tribal elder from the Omo Valley, painted with intricate white chalk patterns and adorned with a headdress made of dried flowers, seed pods, and rusted bottle caps. The focus is razor-sharp on the texture of the skin, showing every pore, wrinkle, and scar that tells a story of survival. The background is a blurred, smoky hut interior, with the warm glow of a cooking fire reflecting in the subject's dark, soulful eyes. Shot on a Leica M6 with Kodak Portra 400 film grain aesthetic.",
    "acceleration": "regular",
    "enable_prompt_expansion": false,
    "image_size": "landscape_4_3",
    "num_images": 1,
    "num_inference_steps": 8,
    "output_format": "png"
  }
}

Input schema

ParameterTypeRequirementDefault
promptstringRequired—
accelerationstringOptionalregular
enable_prompt_expansionbooleanOptionalfalse
image_sizeobject | stringOptionallandscape_4_3
num_imagesintegerOptional1
num_inference_stepsintegerOptional8
output_formatstringOptionalpng
seedintegerOptional—

Response

The API returns a result or a pollable asynchronous task. See the examples and Schema below for the response mode and result fields.

Asynchronous task
Submit response
HTTP 202
/v1/model-tasksapplication/json
{
  "id": "task_example",
  "model": "alibaba/z-image-turbo/text-to-image",
  "status": "queued"
}
Status response
HTTP 200
/v1/model-tasks/{id}application/json
{
  "id": "task_example",
  "model": "alibaba/z-image-turbo/text-to-image",
  "status": "completed",
  "output": {
    "images": [
      {
        "url": "https://api.musespan.com/v1/model-tasks/task_example/artifacts/0"
      }
    ]
  }
}
File download
HTTP 200
/v1/model-tasks/{id}/artifacts/{index}Generated image (e.g. image/png)

When the task completes, file URLs in output point to this endpoint, numbered from 0. Send the same API key (Authorization header) when downloading.

Error response
HTTP 400
/v1/model-tasksapplication/json
{
  "error": {
    "code": "invalid_input",
    "message": "The input does not match this model's input schema. Check the model's API documentation.",
    "type": "invalid_request_error"
  }
}

Code examples

Async submission returns a task ID. Poll until status is completed, then retrieve the generated content from the result. Get your API key in the console.

# Use a new directory for each new generation. Rerunning here continues this task.
set -eu
test -s model-task-id.txt || python3 -c "import uuid; print(uuid.uuid4())" > model-task-id.txt
REQUEST_ID=$(cat model-task-id.txt)
# Idempotent: resending the same bytes with the same ID never charges twice.
curl --fail-with-body --retry 3 --retry-connrefused --request POST 'https://api.musespan.com/v1/model-tasks' \
  --header "Authorization: Bearer $MUSESPAN_API_KEY" \
  --header "X-Request-Id: $REQUEST_ID" \
  --header "Content-Type: application/json" \
  --data '{"model":"alibaba/z-image-turbo/text-to-image","input":{"prompt":"A hyper-realistic, close-up portrait of a tribal elder from the Omo Valley, painted with intricate white chalk patterns and adorned with a headdress made of dried flowers, seed pods, and rusted bottle caps. The focus is razor-sharp on the texture of the skin, showing every pore, wrinkle, and scar that tells a story of survival. The background is a blurred, smoky hut interior, with the warm glow of a cooking fire reflecting in the subject'\''s dark, soulful eyes. Shot on a Leica M6 with Kodak Portra 400 film grain aesthetic.","acceleration":"regular","enable_prompt_expansion":false,"image_size":"landscape_4_3","num_images":1,"num_inference_steps":8,"output_format":"png"}}'
# Poll every 5 seconds for up to 25 minutes until status is completed or failed.
# Still queued (with queue_position) 5 minutes after submission: failed with queue_timeout, not charged.
# No result 15 minutes after acceptance (or no confirmation 15 minutes after submission): failed with generation_timeout, not charged.
# Any failure is final: generate again in a new directory (a new X-Request-Id).
# A 404 means the POST did not arrive: rerun this script to resend it with the same ID.
curl --fail-with-body 'https://api.musespan.com/v1/model-tasks/'"$REQUEST_ID"'' --header "Authorization: Bearer $MUSESPAN_API_KEY"