Minimax H3 Singularity Reference To Video LoRA API Documentation
Playground
Try it on WaveSpeedAI!MiniMax H3 Singularity Open Weights Reference to Video with custom LoRA support 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. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
MiniMax H3 Singularity Reference-to-Video LoRA combines multimodal reference guidance with LoRA customization for more controlled video generation. Use reference images, videos, and audio to guide identity, appearance, motion, camera behavior, or sound, then apply up to three LoRA weights to further influence the generated result.
This open-weights endpoint runs on WaveSpeedAI infrastructure and supports 480p, 540p, 768p, and 1080p output, native stereo audio generation, multiple aspect ratios, and videos from 3 to 15 seconds.
Why Choose This?
-
Multimodal reference guidance
Combine image, video, and audio references in the same generation workflow. -
LoRA customization
Load up to3LoRA weights per request, each with its own scale. -
Up to 9 reference images
Use multiple image references for characters, objects, environments, appearance, or visual style. -
Up to 3 reference videos
Guide motion, pacing, action, or camera behavior with video references. -
Standalone audio references
Add up to3reference audio tracks for voice, music, rhythm, ambience, or sound direction. -
Native stereo audio
Generate video and synchronized stereo audio together in a single workflow. -
Reference-aware prompting
Address inputs directly with tags such as<Picture 1>,<Video 1>, and<Audio 1>. -
Four resolution tiers
Generate at480p,540p,768p, or1080p.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text instructions describing the desired video. Refer to supplied inputs using tags such as <Picture 1>, <Video 1>, and <Audio 1>. |
| reference_images | No | Up to 9 reference image URLs. |
| reference_videos | No | Up to 3 reference video URLs. They can be used at any supported output resolution, and their soundtracks are used automatically. |
| reference_audios | No | Up to 3 standalone reference audio URLs. |
| aspect_ratio | No | Output aspect ratio: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, or 9:21. Default: 16:9. |
| resolution | No | Output resolution: 480p, 540p, 768p, or 1080p. Default: 480p. |
| duration | No | Output duration in seconds. Range: 3–15. Default: 5. |
| seed | No | Fixed seed for reproducible generation. |
| loras | No | Up to 3 LoRA weights. Each item uses {path, scale}, where path points to the LoRA file. |
At least one of reference_images or reference_videos is required. reference_audios can provide additional audio guidance but cannot be used as the only reference input.
How to Use References
Address each reference directly in the prompt:
- Images:
<Picture 1>,<Picture 2>, … - Videos:
<Video 1>,<Video 2>, … - Audio:
<Audio 1>,<Audio 2>, …
Assign a clear role to each reference instead of leaving the model to infer its purpose.
For example:
> Use the character from <Picture 1>, the visual style from <Picture 2>, and follow the motion and camera pacing of <Video 1>. Use <Audio 1> as the voice reference.
Reference video soundtracks are used automatically.
Reference Rules
- At least one reference image or reference video is required.
- Reference audio cannot be used as the only reference type.
- Up to
9reference images are supported. - Up to
3reference videos are supported. - Up to
3standalone reference audio inputs are supported. - Reference video soundtracks are used automatically.
- Total reference-video duration is capped at
15seconds. - Longer reference-video inputs may be trimmed to fit the shared duration budget.
How to Use
- Add reference media — Provide image or video references, plus optional standalone audio references.
- Write the prompt — Use
<Picture N>,<Video N>, and<Audio N>tags to assign each reference a clear role. - Choose aspect ratio — Select the output composition that fits your target format.
- Choose resolution — Select
480p,540p,768p, or1080p. - Set duration — Choose an output length from
3to15seconds. - Add LoRAs optional — Supply up to
3LoRA files with individual scale values. - Set seed optional — Use a fixed seed when reproducibility is needed.
- Submit — Generate the final reference-guided video with audio.
Pricing
Pricing is based on generated output duration, total billed reference-video duration, selected resolution, and the number of reference images and standalone audio inputs.
Video Pricing
The generated output and reference-video duration use the same resolution-based rate.
| Resolution | Per 5s | Per Second |
|---|---|---|
| 480p | $0.30 | $0.06 |
| 540p | $0.45 | $0.09 |
| 768p | $0.60 | $0.12 |
| 1080p | $1.20 | $0.24 |
Reference Pricing
| Reference Type | Price |
|---|---|
| Reference image | $0.02 each |
| Standalone reference audio | $0.02 each |
| Reference video | Same per-second rate as the selected output resolution |
Output duration and total reference-video duration are each capped at 15 seconds for pricing. Reference-video duration is rounded up to the next whole second.
Example Cost
| Component | Cost |
|---|---|
| 10s output video | $0.60 |
| 2 reference images | $0.04 |
| 5s reference video | $0.30 |
| Total | $0.94 |
Best Use Cases
- LoRA-guided character generation — Combine character references with LoRA weights for stronger subject control.
- Style customization — Apply LoRAs alongside reference images to guide a specific visual direction.
- Motion-guided generation — Use reference videos to influence movement, pacing, gestures, or camera behavior.
- Multi-reference scenes — Combine characters, environments, motion, and audio references in one request.
- Audio-guided workflows — Use standalone audio to guide voice, music, ambience, or rhythm.
- Creative experimentation — Compare different LoRA combinations, scales, references, and prompts.
Pro Tips
- Give every reference a specific role in the prompt.
- Use exact tags such as
<Picture 1>,<Video 1>, and<Audio 1>. - Use reference images for identity, appearance, objects, environments, or visual style.
- Use reference videos when motion, gesture, pacing, or camera behavior matters.
- Use reference audio when voice, rhythm, music, or ambience matters.
- Keep LoRA combinations focused; several high-scale LoRAs may compete with each other.
- Use
480pfor lower-cost testing before moving to higher resolutions. - Set a fixed
seedwhen comparing LoRA scale or reference changes.
Notes
promptis required.- At least one reference image or reference video is required.
- Up to
9reference images are supported. - Up to
3reference videos are supported. - Up to
3standalone reference audio inputs are supported. - Up to
3LoRA weights can be loaded per request. - Total reference-video duration is capped at
15seconds. - Reference video soundtracks are used automatically.
durationsupports3–15seconds.resolutiondefaults to480p.aspect_ratiodefaults to16:9.
Related Models
- MiniMax H3 Singularity Reference-to-Video — Generate videos with multimodal image, video, and audio reference guidance.
- MiniMax H3 Singularity Reference-to-Video LoRA — Add LoRA customization to the Singularity reference-to-video workflow.
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-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="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
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | 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_images | array<string> | No | - | 0 ~ 9 items | Reference image URLs (up to 9). At least one reference input is required. |
| reference_videos | array<string> | No | - | 0 ~ 3 items | Reference 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_audios | array<string> | No | - | 0 ~ 3 items | Standalone reference audio URLs (up to 3, trimmed to 15 seconds each). |
| aspect_ratio | string | No | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21 | Output aspect ratio. |
| resolution | string | No | 480p | 480p, 540p, 768p, 1080p | Output 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). |
| duration | integer | No | 5 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | Output video duration in seconds. |
| loras | array<object> | No | 0 ~ 3 items | List of LoRAs to apply (max 3). | |
| seed | integer | No | - | - | The random seed to use for the generation. -1 means a random seed will be used. |
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.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| 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.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| 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 |