Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
rreAPI Docs

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_KEY

Endpoint

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, width or height outside 256–2560, seed outside its range, or an unknown field such as content_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 failed and 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: true and the upstream converts it into this style for you, at the cost of less control over the wording.
  • Pin seed while you iterate on width / height or 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.


Table of Contents