Z Image Base LoRA

Z Image Base LoRA

Playground

Try it on WaveSpeedAI!

Z-Image-Base LoRA (6B) enables high-quality text-to-image generation with full CFG support and external LoRA support. Supports applying up to 3 LoRAs for custom styles. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Z-Image Base LoRA is a 6-billion parameter text-to-image model from Tongyi-MAI with full LoRA support. Apply up to 3 custom LoRA adapters simultaneously to generate images with personalized styles, characters, or brand aesthetics — all while maintaining fast generation speeds.


Why Choose This?

  • Triple LoRA support Apply up to 3 custom LoRA adapters at once for layered style control — combine character, style, and aesthetic LoRAs in a single generation.

  • Flexible output sizing Customize width and height up to 1024px for any aspect ratio you need.

  • Prompt Enhancer Built-in tool to automatically improve your prompts for better results.

  • LoRA ecosystem compatibility Load LoRA weights from popular sources like Civitai and Hugging Face, or train your own custom LoRAs.

  • Affordable pricing Just $0.012 per image — perfect for high-volume generation with custom styles.


Parameters

ParameterRequiredDescription
promptYesText description of the image you want to generate
lorasNoUp to 3 LoRA adapters to apply (click ”+ Add Item”)
sizeNoPreset size options
widthNoOutput width in pixels (default: 1024)
heightNoOutput height in pixels (default: 1024)
seedNoRandom seed for reproducibility (default: -1 for random)
output_formatNoOutput format: jpeg, png (default: jpeg)
enable_sync_modeNoAPI only: wait for result before returning response

How to Use

  1. Write your prompt — describe the image you want to create, including your LoRA trigger words.
  2. Add LoRAs — click ”+ Add Item” to add up to 3 LoRA adapters with their weights.
  3. Set dimensions — adjust width and height for your needs.
  4. Run — submit and download your image.

Pricing

OutputCost
Per image$0.012

Best Use Cases

  • Character Consistency — Use character LoRAs to maintain identity across multiple generations.
  • Brand Aesthetics — Apply brand-specific style LoRAs for consistent marketing visuals.
  • Art Style Transfer — Generate images in specific artistic styles trained into LoRAs.
  • Combined Styles — Layer multiple LoRAs for unique style combinations.
  • Rapid Iteration — Test different LoRA combinations quickly at low cost.

Pro Tips

  • Include your LoRA trigger words in the prompt for best activation.
  • Start with LoRA weight around 0.7-1.0, then adjust based on results.
  • Combine complementary LoRAs (e.g., character + style + lighting) for richer outputs.
  • Use the Prompt Enhancer to automatically improve your descriptions.
  • Keep the same seed when comparing different LoRA combinations.

Train Your Own LoRA

Want to create custom LoRAs for Z-Image? Use the Z-Image LoRA Trainer:

Guidance


  • Z-Image Base — Base model without LoRA support at $0.01 per image.
  • Z-Image Turbo — Faster generation optimized for sub-second inference.

Notes

  • Maximum of 3 LoRAs can be applied per generation.
  • LoRA weights typically range from 0.5 to 1.0 for best results.
  • enable_sync_mode is only available through the API, not in the web interface.

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",
  "strength": 0.6,
  "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/z-image/base-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.
imagestringNo-URL of the reference image to guide the generation.
lorasarray<object>No0 ~ 3 itemsList of LoRAs to apply (maximum 3).
sizestringNo1024*1024-The size of the generated media in pixels (width*height).
strengthnumberNo0.60 ~ 1Controls the strength of the transformation. Higher values produce outputs more different from the input image.
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.