Music Video Maker
Bring a song to life with automatic visuals or direct every scene in Studio.
Advanced creation
Choose a generation mode, or build your video scene by scene in Studio.
POST https://api.omnapi.com/api/v1/mv/preflight -> POST https://api.omnapi.com/api/v1/mv
# Requires Bash and jq. Preflight validates media without charging credits.
api_key='om_demo_xxxxxxxxxxxxxxxx'
body=$(cat <<'JSON'
{
"mode": "fast",
"source": {
"type": "suno",
"clipId": "<suno clip id>"
},
"title": "Music video title",
"prompt": "cinematic, real-world, expressive",
"referenceImages": [],
"aspectRatio": "9:16",
"resolution": "540p",
"subtitles": true,
"subtitle": {
"mode": "auto",
"language": "auto",
"fallback": "continue_without_subtitles"
},
"language": "auto",
"lipSync": false,
"generation": {
"managedVersion": "oneclick-v1",
"referenceStrategy": "synthesize",
"subtitleMode": "custom",
"visualBoard": {
"imageProvider": "gpt-image-2"
},
"quality": "standard"
}
}
JSON
)
preflight=$(curl -fsS -X POST "https://api.omnapi.com/api/v1/mv/preflight" \
-H "Content-Type: application/json" \
-H "x-api-key: $api_key" \
--data "$body")
preflight_id=$(jq -r '.preflightId // empty' <<<"$preflight")
max_credits=$(jq -r '.creditsRequired // empty' <<<"$preflight")
test -n "$preflight_id" && test -n "$max_credits"
create_body=$(jq -c \
--arg preflightId "$preflight_id" \
--argjson maxCredits "$max_credits" \
'. + {preflightId: $preflightId, maxCredits: $maxCredits}' <<<"$body")
idempotency_key="mv-$(date +%s)-$$-$RANDOM"
created=$(curl -fsS -X POST "https://api.omnapi.com/api/v1/mv" \
-H "Content-Type: application/json" \
-H "x-api-key: $api_key" \
-H "Idempotency-Key: $idempotency_key" \
--data "$create_body")
task_id=$(jq -r '.taskId' <<<"$created")
while :; do
task=$(curl -fsS "https://api.omnapi.com/api/v1/tasks/$task_id" -H "x-api-key: $api_key")
status=$(jq -r '.status' <<<"$task")
case "$status" in COMPLETED|FAILED|CANCELLED) break ;; esac
sleep 10
done
jq . <<<"$task"
if [ "$status" = COMPLETED ]; then
mv_id=$(jq -r '.outputResults.projectId // .outputResults.storyboardId // .outputResults.mvProjectId // .outputResults.mvId // .outputResults.finalMvId // empty' <<<"$task")
test -n "$mv_id"
curl -fsS "https://api.omnapi.com/api/v1/mv/$mv_id?historyLimit=5" -H "x-api-key: $api_key" | jq .
if [ "$(jq -r '.autoFinalize' <<<"$created")" = true ]; then
curl -fsS "https://api.omnapi.com/api/v1/mv/$mv_id/final" -H "x-api-key: $api_key" | jq .
fi
fiReplace the placeholder with your API key.
USD estimates include the selected package purchase fee. Credits are the billing unit.
Modes, controls, and current pricing contract
Fast is the one-request production path. Studio Beta exposes storyboard, scene-render, selection, and finalization steps for products that need review.
| Mode | Use when | Control surface | Billing |
|---|---|---|---|
| Fast | A finished MV is the required output | Availability, quote, preflight, create, status, final URL | Dynamic quote by duration, resolution, and options |
| Studio Beta | Users review and revise scene decisions | Storyboard, stills, scene renders, selections, finalize | Fixed workflow steps plus quoted scene renders |
Fixed catalog operations
Quoted operations
standard 540p: 6 Vidu credits/sec; lip-sync unsupported · 60s example: 720 credits
standard 720p: 8 Vidu credits/sec, optional lip-sync +4/sec · 60s example: 960 credits
standard 1080p: 10 Vidu credits/sec, optional lip-sync +4/sec · 60s example: 1,200 credits
high 720p: 24 Vidu credits/sec · 60s example: 2,880 credits
high 1080p: 29 Vidu credits/sec · 60s example: 3,480 credits
managedVersion=premium-v2, performanceMode=sing, 720p, 1-2 ordered singer portraits · 60s example: 2,880 credits
managedVersion=premium-v2, performanceMode=sing_perform, 720p, 1-2 ordered singer portraits · 60s example: 2,880 credits
managedVersion=premium-v2, performanceMode=perform, 720p, 1-6 scene or performance references · 60s example: 2,520 credits
managedVersion=premium-v2, performanceMode=dance, 720p, 1-6 scene or dance references · 60s example: 2,880 credits
Adds 4 Vidu credits/sec to Fast MV duration · 60s example: +480 credits
expectedVersion, videoProvider, videoModel, resolution, fps, duration
POST /api/v1/mv/quote → POST /api/v1/mvView the complete MV price table