Z-Image Turbo
z-image-turboOur GPUsText to image
Tongyi-MAI's 8-step distilled Z-Image Turbo on VelvetAPI's own GPUs: fast, photorealistic text to image.
Inputs
Send these in the task's input object. Only required fields are needed; GET /v1/models/z-image-turbo returns them as a JSON Schema.
| Field | Type | Default | Details |
|---|---|---|---|
promptrequired | string | — | What to draw. Z-Image Turbo reads the first ~512 tokens (about 2,000 characters of English) and ignores the rest. up to 20,000 characters |
width | integer | — | Multiple of 16, 512-2048. Defaults to 1024. 512 to 2,048 · multiple of 16 |
height | integer | — | Multiple of 16, 512-2048. Defaults to 1024. 512 to 2,048 · multiple of 16 |
steps | integer | — | Sampling steps (default 8). 4 to 16 |
seed | integer | — | 0 to 2,147,483,647 |
num_images | integer | 1 | 1 to 4 |
output_format | string | "jpeg" | one of jpeg, png, webp |
Example
Create a task with your API key, then poll it or pass a webhook_url. user is your own id for the end user who asked for the image.
curl https://api.velvetapi.dev/v1/tasks \
-H "Authorization: Bearer $VELVET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "z-image-turbo",
"user": "user-123",
"input": {
"prompt": "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain."
}
}'import { VelvetAPI } from "@velvetapi/sdk";
const velvet = new VelvetAPI({ apiKey: process.env.VELVET_API_KEY });
const task = await velvet.tasks.create({
model: "z-image-turbo",
user: "user-123",
input: {
prompt: "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain.",
},
});
const done = await velvet.tasks.wait(task.id);
console.log(done.state, done.outputs.map((output) => output.url));import os
from velvetapi import VelvetAPI
client = VelvetAPI(api_key=os.environ["VELVET_API_KEY"])
task = client.tasks.create(
model="z-image-turbo",
user="user-123",
input={
"prompt": "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain.",
},
)
done = client.tasks.wait(task["id"])
print(done["state"], [output["url"] for output in done["outputs"]])Response 202 Accepted
{
"id": "0b9c6c2e-4d3f-4a51-9a8e-2f7d1c3b5a90",
"object": "task",
"model": "z-image-turbo",
"state": "queued",
"user": "user-123",
"price_usd": 0.006,
"outputs": [],
"error": null,
"meta": {},
"created_at": "2026-10-20T06:31:00.000Z",
"started_at": null,
"finished_at": null
}Next: tasks and webhooks, errors and the API reference.