Qwen Image Text To Image 2512 API Documentation
Playground
Try it on WaveSpeedAI!Qwen Image 2512 is Qwen’s latest text-to-image model with enhanced prompt understanding, superior text rendering, and versatile aspect ratio support. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Qwen Image 2512 is latest text-to-image generation model from the Qwen AI family. It excels at understanding natural language prompts and producing high-quality images with exceptional text rendering capabilities — perfect for creating posters, signage, logos, and designs requiring readable text.
Why Choose This?
-
Superior text rendering Accurately generates legible text within images, including multiple languages, fonts, and layouts. Ideal for designs requiring readable text elements.
-
Enhanced prompt understanding Interprets complex, detailed prompts with better comprehension of subject relationships, spatial arrangements, and stylistic nuances.
-
Flexible sizing Supports custom width and height configurations for various use cases — social media, presentations, print, and web content.
-
Consistent quality across styles Produces high-quality results whether you’re creating photorealistic images, illustrations, concept art, or abstract designs.
-
Prompt Enhancer Built-in tool to automatically improve your prompts for better generation results.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Describe the image you want to create |
| width | No | Image width in pixels (default: 1024) |
| height | No | Image height in pixels (default: 1024) |
| seed | No | Random seed for reproducible results (-1 for random) |
| output_format | No | Output format: jpeg, png, or webp |
Output Format Options
- jpeg — Smaller file size, good for photos and web use
- png — Lossless quality, supports transparency, best for graphics with text
- webp — Modern format with better compression, good browser support
How to Use
- Write your prompt — describe the image you want, including style, composition, lighting, and mood.
- Adjust size — set width and height for your desired dimensions.
- Set seed — use -1 for random results, or specify a number for reproducibility.
- Choose output format — select jpeg, png, or webp based on your needs.
- Run — click Run, preview the result, and iterate if needed.
Pricing
| Item | Cost |
|---|---|
| Per image | $0.02 |
Simple flat-rate pricing regardless of image size.
Best Use Cases
- Marketing and Advertising — Create eye-catching visuals with text for ads, posters, and promotional materials.
- Social Media Content — Generate engaging images optimized for different platform formats.
- Product Design — Visualize concepts, mockups, and packaging designs with integrated text.
- Branding and Identity — Design logos, signage, and branded visuals with readable text elements.
- Editorial and Publishing — Produce illustrations, cover art, and visual content for articles.
Pro Tips
- Be specific in your prompts — include subject, style, lighting, camera angle, and atmosphere for best results.
- For text in images, explicitly specify the exact text, font style, and placement (e.g., “poster with the text SUMMER SALE in bold red letters at the top”).
- Use the same seed with the same prompt to reproduce identical outputs.
- This model is specifically optimized for generating readable text within images.
Notes
- Please ensure your prompts comply with content guidelines. If an error occurs, review your prompt and try again.
Related Models
- Qwen Image Edit 2511 — Image editing model from the Qwen family for precise visual modifications.
- Qwen Image Edit Plus — Enhanced editing model with dual-mode editing and precise bilingual text editing.
- Qwen Image Edit 2511 LoRA — LoRA-enabled version for custom style and character fine-tuning.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"size": "1024*1024",
"seed": -1,
"output_format": "jpeg"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/qwen-image/text-to-image-2512" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; 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 type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
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
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Describe the image you want to create. Be specific about subject, style, composition, and mood for best results. | |
| size | string | No | 1024*1024 | - | The size of the generated image in pixels (width*height) |
| seed | integer | No | -1 | - | Random seed for reproducible results (same seed + prompt = same output) |
| output_format | string | No | jpeg | jpeg, png, webp | The format of the generated image |
| enable_sync_mode | boolean | No | false | - | If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models. |
| enable_base64_output | boolean | No | false | - | If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |