Using Z-Image Turbo on Chutes
Z-Image Turbo is Tongyi-MAI's distilled 6B text-to-image model: 8-step generation with CFG disabled, photorealistic output, and accurate English and Chinese text rendering. On Chutes it runs on a dedicated host with a single flat-JSON POST /generate endpoint that returns PNG bytes directly.
Overview
Z-Image is a 6B-parameter image generation family from Tongyi-MAI (Alibaba). The Turbo variant adds a reinforcement-learning distillation stage on top of supervised fine-tuning, compressing sampling from the base model's 50 steps down to 8 function evaluations with classifier-free guidance removed. The model card reports sub-second latency on H800-class GPUs and a memory footprint that fits in 16 GB of VRAM.
Architecturally it is a Scalable Single-Stream Diffusion Transformer (S3-DiT): text tokens, visual semantic tokens, and image VAE tokens are concatenated into one sequence and processed by a single 30-layer transformer (hidden dimension 3840, 30 attention heads), paired with a Qwen3 text encoder and a flow-matching Euler scheduler. On Alibaba's Elo-based AI Arena human preference leaderboard, the card reports state-of-the-art results among open-source text-to-image models. The distillation trade-off is diversity: the card rates Turbo's seed-to-seed variation as low relative to base Z-Image.
Model specifications
| Property | Value |
|---|---|
| Upstream repo | Tongyi-MAI/Z-Image-Turbo |
| Parameters | 6B |
| Architecture | S3-DiT (single-stream diffusion transformer), 30 layers, dim 3840, 30 heads |
| Text encoder | Qwen3 (Qwen2 tokenizer) |
| Scheduler | FlowMatchEulerDiscreteScheduler |
| Sampling | 8 NFEs, CFG disabled (distilled) |
| Modalities | text in, image out (PNG on this chute) |
| License | Apache-2.0 |
| Release | November 2025 |
Quick start
The chute is served on its own host, https://vonkaiser-z-image-turbo.chutes.ai. Send a flat JSON body (no wrapper object) and save the response bytes — the endpoint returns image/png, not JSON.
curl -X POST "https://vonkaiser-z-image-turbo.chutes.ai/generate" \
-H "Authorization: Bearer $CHUTES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a serene mountain lake at sunset",
"width": 1024,
"height": 1024,
"num_inference_steps": 9,
"guidance_scale": 0,
"seed": 42
}' \
--output output.pngimport os
import requests
resp = requests.post(
"https://vonkaiser-z-image-turbo.chutes.ai/generate",
headers={"Authorization": f"Bearer {os.environ['CHUTES_API_KEY']}"},
json={
"prompt": "a serene mountain lake at sunset",
"width": 1024,
"height": 1024,
"num_inference_steps": 9,
"seed": 42,
},
timeout=120,
)
resp.raise_for_status()
with open("output.png", "wb") as f:
f.write(resp.content)const resp = await fetch("https://vonkaiser-z-image-turbo.chutes.ai/generate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CHUTES_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "a serene mountain lake at sunset",
width: 1024,
height: 1024,
num_inference_steps: 9,
seed: 42,
}),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const png = Buffer.from(await resp.arrayBuffer()); // write to disk or serveParameters and tuning
| Field | Type | Default | Notes |
|---|---|---|---|
prompt | string | required | Concrete subject, style, composition, lighting. Include text to render verbatim. |
width / height | integer | 1024 / 1024 | Keep moderate while iterating; larger canvases cost more. |
num_inference_steps | integer | 9 | Model is distilled for 8 NFEs; stay near the default. |
guidance_scale | number | 0 | CFG is baked out by distillation; leave at 0. |
shift | number | 3 | Flow-matching timestep shift. |
max_sequence_length | integer | 512 | Prompt token budget for the text encoder. |
seed | integer | null | Set for reproducible output. |
Because guidance is off, there is no negative prompt field. State exclusions inside the prompt ("no people, no text overlay") and rely on the model's instruction adherence. Tuning surface is intentionally small: prompt quality and resolution are the main levers.
What it's best at
Z-Image Turbo suits latency- and cost-sensitive generation: interactive apps where a user waits on the image, batch pipelines producing thousands of renders, and draft-to-final loops where 8-step turnaround keeps iteration tight. The model card highlights photorealistic quality, bilingual (English/Chinese) text rendering, and strong instruction adherence, which makes it a good fit for product renders, editorial illustration, and signage or poster mockups with real copy in them.
It is not an editing model — there is no image input — and it is a poor choice for workflows built on negative prompting or CFG sweeps, since guidance is disabled. If you need many visually distinct takes on one prompt, note the card rates Turbo's diversity as low compared to base Z-Image; vary the prompt, not just the seed.
How Chutes serves this model
The chute (owner vonkaiser) serves Z-Image Turbo on its own host with a single POST /generate endpoint. Requests are flat JSON authenticated with Authorization: Bearer $CHUTES_API_KEY; responses are raw image/png bytes. Defaults mirror the Turbo recipe (9 steps, guidance 0, shift 3, 1024x1024).
- Model page: /app/chute/vonkaiser-z-image-turbo
- Agent integration file: llms.txt
- Callable OpenAPI 3.1 spec: openapi.json
FAQ
How many inference steps should I use with Z-Image Turbo?
The model is distilled for 8 function evaluations, and the chute defaults to 9 steps. Stick close to the default; unlike standard diffusion models, raising the step count substantially does not buy proportional quality because the distillation targets a fixed short schedule.
Why is guidance_scale 0, and can I use a negative prompt?
Turbo is distilled with classifier-free guidance baked out, so the chute defaults guidance_scale to 0 and exposes no negative prompt field. Express exclusions inside the positive prompt. If you need CFG and negative prompting, the non-distilled base Z-Image model supports both.
What license is Z-Image Turbo under? Can I use it commercially?
Apache-2.0, per the Hugging Face repo Tongyi-MAI/Z-Image-Turbo. Apache-2.0 permits commercial use, modification, and redistribution with attribution and license notice.
How do I call this chute from code?
POST a flat JSON body to https://vonkaiser-z-image-turbo.chutes.ai/generate with an Authorization: Bearer header carrying your Chutes API key. The response body is the PNG image itself, not JSON, so write it straight to a file or blob.
Can it render text inside images?
Yes. Bilingual text rendering (English and Chinese) is one of the model card's headline capabilities. Quote the exact text you want in the prompt and keep it short for best fidelity.
What image sizes does it support?
The chute defaults to 1024x1024 and accepts width and height fields. Keep dimensions moderate while iterating; larger canvases cost more compute and take longer.
Is Z-Image Turbo an editing model?
No, it is text-to-image only. The Z-Image family includes a separate Z-Image-Edit variant for instruction-based editing, and Chutes hosts dedicated edit models such as Qwen-Image-Edit-2511.