Minimax H3 Singularity Reference To Video API Documentation

Minimax H3 Singularity Reference To Video API Documentation

Playground

Try it on WaveSpeedAI!

MiniMax H3 Singularity Open Weights Reference to Video generates coherent 480P / 540P / 768P videos from prompts and multimodal references, guided by up to 9 reference images, 3 reference videos, and 3 reference audios, with native stereo audio and flexible reference-based video generation on WaveSpeedAI infrastructure. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Run the open-weights edition of MiniMax H3 Singularity on WaveSpeedAI’s own GPU infrastructure. This endpoint is independently hosted and provides 480p, 540p, 768p, and 1080p output tiers with resolution-based per-second pricing.


Why Choose This?

  • Multimodal reference-to-video generation
    Guide video generation with images, videos, audio, or combinations of multiple reference types.

  • Up to 9 reference images
    Use multiple visual references for characters, objects, environments, composition, or style.

  • Up to 3 reference videos
    Provide motion and video context through multiple reference clips.

  • Reference video audio support
    Soundtracks from reference videos are used automatically during generation.

  • Standalone audio references
    Add up to 3 separate audio references for additional voice, music, or sound guidance.

  • Native audio generation
    Audio is generated together with the video rather than requiring a separate generation step.

  • Four resolution tiers
    Choose 480p, 540p, 768p, or 1080p depending on cost and output requirements.

  • Up to 15 seconds of generated video
    Generate clips from 3 to 15 seconds.


How to Use References

Address references directly in the prompt using angle-bracket tags:

  • Images: <Picture 1> through <Picture 9>
  • Videos: <Video 1> through <Video 3>
  • Standalone audio: <Audio 1> through <Audio 3>

Tags should be written with the angle brackets exactly as shown.

Assigning a clear purpose to each reference helps make the generation instruction easier to interpret.

For example:

> Use the character from <Picture 1>, place them in the environment from <Picture 2>, and follow the camera movement of <Video 1>.

Reference numbering follows the order in which inputs are supplied within each reference type.

Reference video soundtracks are used automatically.


How to Write a Strong Prompt

For more controlled generation, structure the prompt around the scene progression:

  1. Define references — State which image, video, or audio reference should guide each part of the generation.
  2. Describe the timeline — Explain how the action develops throughout the clip.
  3. Specify camera movement — Describe pans, tracking, zooms, or static camera behavior.
  4. Describe audio direction — Explain the desired dialogue, music, ambience, or sound behavior.
  5. Specify visible text carefully — Put exact on-screen wording in quotes when readable text matters.

Example:

> Use the character from <Picture 1> and the environment from <Picture 2>.
> [0s-3s] The character stands on the balcony while the camera slowly moves forward.
> [3s-6s] They turn toward the camera and smile.
> Match the camera movement of <Video 1>.
> Audio: quiet city ambience with natural environmental sound.


Parameters

ParameterRequiredDescription
promptYesText description of the desired video. Reference inputs can be addressed as <Picture 1>–<Picture 9>, <Video 1>–<Video 3>, and <Audio 1>–<Audio 3>. Audio is generated natively together with the video.
reference_imagesNoUp to 9 reference image URLs.
reference_videosNoUp to 3 reference video URLs. Reference videos can be used at any output resolution. Their soundtracks are used automatically. Total reference-video duration is limited to a 15-second budget; longer inputs are truncated fairly.
reference_audiosNoUp to 3 standalone reference audio URLs. Each audio input is trimmed to a maximum of 15 seconds.
aspect_ratioNoOutput aspect ratio: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, or 9:21. Default: 16:9.
resolutionNoOutput resolution: 480p, 540p, 768p, or 1080p. Default: 480p.
durationNoOutput video duration in seconds. Supported values: 3–15 whole seconds. Default: 5.
seedNoRandom seed for generation. Use -1 for a random seed.

Pricing

The generated output video and reference-video duration use the same resolution-dependent per-second rate.

ResolutionPer 5sPer Billed Second
480p$0.25$0.05
540p$0.375$0.075
768p$0.50$0.10
1080p$1.00$0.20

Reference Pricing

Reference TypePrice
Reference image$0.02 each
Standalone reference audio$0.02 each
Reference videoSame per-second rate as the selected output resolution

Total reference-video duration is capped at 15 seconds for billing and rounded up to the next whole second.

Standalone reference_audios are charged by count, not duration.

Example

ComponentCost
10s output video$0.50
2 reference images$0.04
5s reference video$0.25
Total$0.79

Best Use Cases

  • Character consistency — Use reference images to guide recurring characters or subjects.
  • Motion guidance — Use reference videos to guide movement, action, or camera behavior.
  • Voice and audio reference workflows — Add standalone audio references alongside visual guidance.
  • Multi-reference storytelling — Combine characters, environments, motion, and audio from different inputs.
  • Cinematic video generation — Coordinate visual references, camera direction, timeline, and native audio in one generation.
  • Creative prototyping — Experiment with combinations of visual, motion, and audio references.

Pro Tips

  • Explicitly assign a purpose to each reference in the prompt.
  • Use tags such as <Picture 1> and <Video 1> instead of vague descriptions like “the first image.”
  • Keep the timeline clear when multiple actions need to happen in sequence.
  • Use reference videos when motion or camera behavior matters more than a static visual reference.
  • Keep total reference-video content focused because only up to 15 seconds is used.
  • Use 480p for lower-cost testing before moving to 768p or 1080p.
  • Set a fixed seed when comparing prompt or reference changes.

Notes

  • prompt is the only schema-required parameter.
  • Up to 9 reference images are supported.
  • Up to 3 reference videos are supported.
  • Up to 3 standalone reference audio inputs are supported.
  • Total reference-video duration is limited to 15 seconds.
  • Each standalone reference audio input is trimmed to a maximum of 15 seconds.
  • Reference video soundtracks are used automatically.
  • duration supports integer values from 3 to 15.
  • resolution defaults to 480p.
  • aspect_ratio defaults to 16:9.
  • seed=-1 selects a random seed.

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": "16:9",
  "resolution": "480p",
  "duration": 5
}
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-singularity/reference-to-video" \
  -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-Text description of the desired video. Refer to reference inputs as <Picture 1>..<Picture 9>, <Video 1>..<Video 3>, and <Audio 1>..<Audio 3>. Audio is generated natively together with the video.
reference_imagesarray<string>No-0 ~ 9 itemsReference image URLs (up to 9). At least one reference input is required.
reference_videosarray<string>No-0 ~ 3 itemsReference video URLs (up to 3, usable at any output resolution). Their soundtracks are used automatically. Total reference video duration is budgeted to 15 seconds; longer inputs are truncated fairly.
reference_audiosarray<string>No-0 ~ 3 itemsStandalone reference audio URLs (up to 3, trimmed to 15 seconds each).
aspect_ratiostringNo16:916:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21Output aspect ratio.
resolutionstringNo480p480p, 540p, 768p, 1080pOutput video resolution. 768p is the model's native canvas; 480p is a faster, lower-cost tier; 540p is a mid tier at 1.5x the 480p price. 1080p is the highest-quality full-HD tier at 2x the 768p price (generation takes longer).
durationintegerNo53, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15Output video duration in seconds.
seedintegerNo--The random seed to use for the generation. -1 means a random seed will be used.

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.