Seedance 2.5 Now Live | Try in Video Generator →
Home/Explore/Alibaba/Wan 2.6/Text To Image

alibaba/

WAN 2.6 Text-to-Image generates high-quality images from natural-language prompts with strong prompt adherence and clean composition. It supports multiple aspect ratios and size control, seed-based reproducibility, and flexible styles (photorealistic to illustrative) for ads, product shots, and social visuals. Built for stable production use with a ready-to-use REST API, no cold starts, and predictable pricing.

text-to-image
Input

Idle

$0.03per run·~33 / $1

Next:

Related Models

README

Wan 2.6 Text-to-Image

Wan 2.6 Text-to-Image (/wan-2.6/text-to-image) is ’s text-to-image generation model for creating high-quality visuals from a single natural-language prompt. It’s built for practical creative workflows—concept art, product visuals, portraits, and stylized imagery—where you want strong prompt adherence plus flexible custom sizing.

Why it stands out

  • Fast, one-shot text-to-image generation Generate an image in a single run for quick ideation and production workflows.

  • Custom width × height output Set width and height directly (within the endpoint’s limits) to match banners, thumbnails, posters, or social formats.

  • Prompt expansion for better results Enable prompt expansion to automatically enrich short prompts with useful detail for more coherent compositions.

  • Seeded iteration Use a fixed seed to refine style and layout with more repeatable variations.

Parameters

ParameterDescription
prompt*Text description of the image you want to generate.
widthOutput width (within allowed limits).
heightOutput height (within allowed limits).
enable_prompt_expansionToggle prompt expansion to enrich short prompts.
seedSet a fixed seed for more repeatable iterations (-1 for random).

How to use

  1. Write a clear prompt (subject + setting + style).
  2. Choose width and height that match your target aspect ratio.
  3. Turn on enable_prompt_expansion if your prompt is short or under-specified.
  4. Set a seed if you want repeatable iterations (keep the same seed while you tweak the prompt).
  5. Click Run, review the result, and iterate.

Prompt tips

  • Start with subject + environment + style: “A modern tea shop interior, warm afternoon light, minimalist wood design, cinematic photography.”
  • Add camera / composition when framing matters: “wide shot, shallow depth of field, 35mm film look.”
  • Keep instructions positive and specific (what you want to see, not what you fear).

Pricing

  • $0.03 per generated image

Notes

  • Output sizing is limited by the endpoint’s current constraints (for example, width/height bounds and aspect-ratio limits). If a size fails, reduce resolution or choose a more standard aspect ratio.
  • Enabling prompt expansion can improve quality for short prompts, but may add a little latency.
  • Returned image URLs may be time-limited—save outputs if you need long-term storage.

Related Models

  • Wan 2.5 Text-to-Image — A proven Wan text-to-image model for reliable, cost-stable AI image generation with a similar prompt-first workflow.
  • Seedream V4 Text-to-Image — A style-consistent text-to-image generator for posters, campaigns, and high-volume brand-friendly illustration batches.
  • FLUX.2 Turbo Edit — A fast natural-language image editing model for precise image-to-image transformations, brand color control, and iterative creative revisions.
  • Google Nano Banana Pro Edit — High-fidelity prompt-based image editing for composition-preserving changes, product visuals, and reliable on-image text handling.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Wan 2.6 Text To Image API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/text-to-image with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Wan 2.6 Text To Image below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "size": "1024*1024",
    "enable_prompt_expansion": false,
    "seed": -1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/text-to-image" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/text-to-image";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "size": "1024*1024",
        "enable_prompt_expansion": false,
        "seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "size": "1024*1024",
    "enable_prompt_expansion": False,
    "seed": -1
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/text-to-image", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Wan 2.6 Text To Image API — Frequently asked questions

What is the Wan 2.6 Text To Image API?

Wan 2.6 Text To Image is a Alibaba model for image generation, exposed as a REST API on WaveSpeedAI. WAN 2.6 Text-to-Image generates high-quality images from natural-language prompts with strong prompt adherence and clean composition. It supports multiple aspect ratios and size control, seed-based reproducibility, and flexible styles (photorealistic to illustrative) for ads, product shots, and social visuals. Built for stable production use with a ready-to-use REST API, no cold starts, and predictable pricing. You can call it programmatically or try it from the playground above.

How do I call the Wan 2.6 Text To Image API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/alibaba/alibaba-wan-2.6-text-to-image.

How much does Wan 2.6 Text To Image cost per run?

Wan 2.6 Text To Image starts at $0.030 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Wan 2.6 Text To Image accept?

Key inputs: `prompt`, `size`, `seed`, `enable_prompt_expansion`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/alibaba/alibaba-wan-2.6-text-to-image.

How long does Wan 2.6 Text To Image take to generate?

Median end-to-end generation time on WaveSpeedAI is around 7 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Wan 2.6 Text To Image outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Alibaba). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Wan 2.6 Text to Image | High-Quality Text-to-Image API on WaveSpeedAI