Z-Image Pro
Z-Image Pro on reAPI — the uncensored text-to-image channel of the Z-Image family. Pixel-exact width and height from 256 to 2560, seed control, optional prompt rewriting, flat price per image. API-key access only.
Z-Image Pro is the uncensored text-to-image channel of the Z-Image
family on reAPI. Set the output size in pixels (256–2560 on each side),
pin a seed for reproducible results, and optionally let the upstream rewrite
your prompt. Submit returns a task_id; poll until ready. See current
pricing on the model page.
API access and content filtering
This model is available only through an API key. Playground generation is disabled for all users; session-cookie requests are rejected before a task is created or credits are charged.
Content filtering is always off on this model, and there is no filter
parameter: the request schema has no content_filter field, and a request
that includes it is rejected with 400. To
generate with upstream moderation enabled, use Z-Image
instead.
Generated images are stored in an isolated bucket and their URLs stay valid for 30 days. Mirror the files to your own storage if you need them longer.
Quick example
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "z-image-pro",
"prompt": "A close photograph of a lighthouse keeper on a spiral stair at dawn, cold window light across a wool coat, salt spray drying on the glass behind her, shallow depth of field.",
"width": 1536,
"height": 1024
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/images/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "z-image-pro",
"prompt": "A close photograph of a lighthouse keeper on a spiral stair at dawn, cold window light across a wool coat, salt spray drying on the glass behind her, shallow depth of field.",
"width": 1536,
"height": 1024,
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "z-image-pro",
prompt: "A close photograph of a lighthouse keeper on a spiral stair at dawn, cold window light across a wool coat, salt spray drying on the glass behind her, shallow depth of field.",
width: 1536,
height: 1024,
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "z-image-pro",
"prompt": "A close photograph of a lighthouse keeper on a spiral stair at dawn, cold window light across a wool coat, salt spray drying on the glass behind her, shallow depth of field.",
"width": 1536,
"height": 1024,
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/images/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "z-image-pro",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} (see the Tasks reference) until
status === "completed". The completed payload's output.image_urls holds the
generated image URL.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/images/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; the task
endpoint returns the same envelope until completion. Polling does not consume
credits.
Z-Image Pro is text-to-image only — there is no image input. Each request
produces exactly one image (no n parameter).
Request body
model — string, required
Must be z-image-pro.
prompt — string, required
At least one character; there is no documented maximum length. Z-Image Pro responds best to one continuous paragraph of dense, concrete English rather than a list of tags — see Tips for the structure it was trained on. Put any text you want rendered in the image inside straight double quotes.
width — integer, default 1024
Output width in pixels, 256 to 2560. Set independently of height; there
is no aspect-ratio field.
height — integer, default 1024
Output height in pixels, 256 to 2560.
seed — integer or null, optional
0 to 2147483647. Pin a seed to reproduce a result for the same prompt and
size. 0, null, or omitting the field all mean a random seed.
prompt_extend — boolean or null, optional, default false
When true, the upstream rewrites and expands your prompt into the dense
caption style the model was trained on before generating. null or omission
keeps the default (false): your prompt is used as written.
Pricing
Z-Image Pro bills a flat rate per generated image, independent of
width, height, seed, and prompt_extend. Each request produces one image:
credits = ceil(per_image_usd × 1000)where 1 credit = $0.001 USD. Failed and rejected requests are not charged.
The exact per-image credit cost surfaces on the model page.
Response
The poll envelope returns the image URL in output.image_urls:
{
"id": "task_019dfd44b7fd74168541552a3260a623",
"model": "z-image-pro",
"status": "completed",
"output": {
"image_urls": [
"https://...png"
]
}
}Output URLs are valid for 30 days — mirror them to your own storage if you need long-term retention.
Errors
Failures return the standard reAPI envelope { error: { code, message, request_id } }. Common cases:
- Invalid input (empty
prompt,widthorheightoutside 256–2560,seedoutside its range, or an unknown field such ascontent_filter) →400. - A website session submitting this model →
400(API keys only). - Insufficient credits →
402. - Rate limited →
429. - Upstream rejected the prompt or failed to generate → the task ends
failedand the reserved credits are refunded.
See the full catalog at /docs/api/errors.
Tips
Z-Image Pro was trained on dense, grounded, natural-language image captions, so prompts written the same way work best:
- One continuous English paragraph, roughly 90–170 words in 3–6 flowing sentences. No JSON, no key-value fields, no bullet lists, no labels such as "Prompt:" or "Negative prompt:".
- Follow the caption order: medium or visual style → how many subjects and how they are arranged → the main action or pose → appearance, clothing, orientation and interaction → setting and spatial layout → camera angle, framing, lighting, focus and colour palette.
- State the main action once, then spend the remaining sentences on appearance, environment and visual treatment instead of repeating it.
- Use camera-visible language, not quality slogans: "soft window light from the left catches the wool texture" beats "masterpiece, best quality, 8K". Drop sampler, steps, CFG and lens-model jargon; describe the visible effect (tight framing, shallow focus, high contrast) instead.
- Keep photographic and illustration vocabulary apart unless a hybrid is intentional: skin texture and depth of field for photographs; clean linework, cel shading and flat colour blocks for anime or digital art.
- Visible lettering goes in straight double quotes, exactly as it should appear, followed by where it sits and how it is rendered.
- Prefer a tag-style input? Set
prompt_extend: trueand the upstream converts it into this style for you, at the cost of less control over the wording. - Pin
seedwhile you iterate onwidth/heightor small prompt edits to compare like with like.
Example prompt in this style:
A close photograph of a single lighthouse keeper climbing a spiral iron staircase at dawn. She wears a heavy charcoal wool coat with the collar turned up, one gloved hand on the rail, her face turned toward the tall window where cold blue light enters from the left. Salt spray has dried in pale streaks across the glass behind her, and the painted steps show worn patches of rust. The framing is tight on her upper body, with the stair curving away into shadow below; shallow depth of field keeps her expression sharp while the window softens, and the palette stays cool grey-blue with a single warm note from the lamp room above.
Related
- Z-Image — the moderated Z-Image channel with aspect-ratio sizing
- Qwen Image 3
- Tasks API
- Error codes