Minimax H3 Text To Image API Documentation

Minimax H3 Text To Image API Documentation

Playground

Try it on WaveSpeedAI!

MiniMax H3 Open Weights Text-to-Image generates photorealistic, cinema-grade stills from a text prompt at 1K or 2K resolution with fifteen aspect ratios. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.

Features

Run the open-weights edition of MiniMax H3 as a still-image generator on WaveSpeedAI’s own GPU infrastructure. MiniMax H3 is a cinema-grade omni-modal generation model; this endpoint taps the same generator to produce a single photorealistic image from a text prompt, natively at 1k or 2k resolution.


Why Choose This?

  • Cinematic realism
    Film-quality lighting, skin, fabric and depth of field from a video-grade generator, with strong prompt adherence.

  • Native 2K output
    Generate up to ~4 megapixels directly, no separate upscaling step.

  • Flexible aspect ratios
    Fifteen presets from square to tall, wide and cinematic formats.

  • Fast and affordable
    Distilled sampling keeps generation to seconds per image at a flat per-image price.


Parameters

ParameterRequiredDescription
promptYesText description of the desired image.
aspect_ratioNoOutput aspect ratio. Options: 1:1, 1:2, 2:1, 1:3, 3:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 9:21, or 21:9. Default 1:1.
resolutionNoOutput resolution: 1k (default) or 2k.
output_formatNojpeg (default), png or webp.
seedNoRandom seed. -1 picks a random seed.

How to Use

  1. Write your prompt — Describe the subject, setting, lighting, lens and mood as you would brief a cinematographer.
  2. Pick an aspect ratio — Match the layout of your target format.
  3. Choose resolution1k for fast iteration, 2k for final assets.
  4. Submit — Receive the generated image URL.

Pricing

Pricing is based on the selected resolution.

ResolutionCost per image
1k$0.02
2k$0.06

Best Use Cases

  • Portraits and lifestyle — Photorealistic people, expressions and skin detail.
  • Key art and thumbnails — Cinematic stills that match your video content.
  • Concept exploration — Iterate on scenes, costumes and moods before generating video.
  • Marketing visuals — Campaign images, product scenes and social content.

Pro Tips

  • Prompt like a film still: subject, action, environment, lighting, lens (e.g. 85mm, shallow depth of field), time of day.
  • Use 2k for prints and hero images; 1k is usually enough for social and previews.
  • Fix the seed to compare prompt variations on the same composition.

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",
  "aspect_ratio": "1:1",
  "resolution": "1k",
  "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/minimax-h3/text-to-image" \
  -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="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 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|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
aspect_ratiostringNo1:11:1, 1:2, 2:1, 1:3, 3:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 9:21, 21:9The aspect ratio of the generated image.
resolutionstringNo1k1k, 2kTotal output resolution tier: 1k (~1 megapixel) or 2k (~4 megapixels).
output_formatstringNojpegjpeg, png, webpThe format of the output image.
seedintegerNo--The random seed to use for the generation. -1 means a random seed will be used.
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.
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.

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.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
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.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
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.