Qwen Image Text To Image 2512 LoRA API Documentation

Qwen Image Text To Image 2512 LoRA API Documentation

Playground

Try it on WaveSpeedAI!

Qwen-Image-2512 LoRA is an enhanced 20B MMDiT text-to-image model with LoRA support for fast customization and refined image generation. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.

Features

Qwen Image 2512 LoRA is an enhanced version of the 20B MMDiT text-to-image model with LoRA support for fine-tuned control over style, characters, or artistic domains. Combine world-class text rendering with personalized generation through custom LoRA weights.


Why Choose This?

  • LoRA integration Import external.safetensors LoRA weights and control blending strength via scale parameter. Stack up to 3 LoRAs for hybrid results.

  • Superior text rendering Rivals GPT-4o in English and is best-in-class for Chinese typography. Text is seamlessly integrated into images, not overlaid.

  • Bilingual support Handles Chinese and English with diverse fonts and complex layouts.

  • Style versatility Photorealistic, anime, impressionist, or minimalist styles — all supported with consistent quality.

  • Reproducible results Lock the seed to maintain subject consistency when experimenting with different LoRAs.


Parameters

ParameterRequiredDescription
promptYesDescribe the image you want to create
widthNoImage width in pixels (up to 1536)
heightNoImage height in pixels (up to 1536)
lora_pathNoLoRA path (owner/model-name) or external.safetensors URL
lora_scaleNoLoRA strength (default: 1.0)
seedNoRandom seed for reproducible results (-1 for random)
output_formatNoOutput format: jpeg, png, or webp

How to Use

  1. Enter your prompt — describe the image with detailed narrative and any embedded text.
  2. Set size — adjust width and height up to 1536x1536 pixels.
  3. Add LoRAs — paste the path or URL of the LoRA.safetensors file (maximum 3 LoRAs).
  4. Adjust scale — set LoRA strength (0.5 for subtle, 1.0 for full effect).
  5. Set seed (optional) — use -1 for random, or specify a number for reproducibility.
  6. Choose output format — select jpeg, png, or webp.
  7. Run — preview results and iterate with different LoRA scales.

Pricing

ItemCost
Per image$0.025

Simple flat-rate pricing regardless of image size or LoRA count.


Best Use Cases

  • Character Consistency — Use character LoRAs to maintain identity across multiple generations.
  • Style Transfer — Apply specific art style LoRAs for consistent visual branding.
  • IP Creation — Combine multiple LoRAs for unique hybrid aesthetics.
  • Marketing Materials — Create on-brand visuals with custom trained styles.
  • Typography Design — Generate posters, logos, and signage with readable bilingual text.

Pro Tips

  • Use specific LoRAs for characters, art styles, or IP consistency.
  • Combine multiple LoRAs for hybrid results (e.g., anime + steampunk).
  • Adjust scale carefully — too high may distort, too low may fade.
  • Lock the seed to maintain subject consistency when swapping LoRAs.

Notes

  • Use Qwen Image LoRA Trainer to create compatible LoRAs for this model.
  • LoRAs from official platforms (Civitai or Hugging Face) are also supported.
  • Processing speed is approximately 6-10 seconds per image.


Reference

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-lora" \
  -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
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
sizestringNo1024*1024-The size of the generated media in pixels (width*height).
lorasarray<object>No0 ~ 3 itemsList of LoRAs to apply (max 3).
seedintegerNo-1-The random seed to use for the generation. -1 means a random seed will be used.
output_formatstringNojpegjpeg, png, webpThe format of the output image.
enable_sync_modebooleanNofalse-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_outputbooleanNofalse-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

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.