Seedance 2.5 Now Live | Try in Video Generator →

pixverse/

PixVerse Music MV Agent is a fast AI music video generation model that creates music videos from uploaded audio with optional character reference images, music style, MV style, aspect ratio, and quality controls. Ready-to-use REST inference API for audio-to-video generation, music videos, artist visuals, social media clips, promotional content, creative storytelling, and professional MV production workflows with simple integration, no coldstarts, and affordable pricing.

audio-to-video
Input

Idle

$0.08per run·~12 / $1

Next:

ExamplesView all

Related Models

README

PixVerse Music MV Agent

PixVerse Music MV Agent generates a music video from an input audio track, with optional reference images, lyrics, music-style controls, visual-style controls, aspect ratio selection, and resolution options. It is designed for AI music videos, lyric-driven visuals, artist promos, character-led MV concepts, and other audio-to-video workflows.

Why Choose This?

  • Audio-to-music-video generation
    Turn a song or audio track into a full music video from a single workflow.

  • Optional reference image guidance
    Add up to 5 reference images to guide character appearance or visual direction.

  • Music and MV style controls
    Set both music_style and mv_style to better match the tone of the final output.

  • Flexible aspect ratios
    Supports widescreen, vertical, and square outputs for different publishing platforms.

  • Lyrics-aware workflow
    Optionally provide lyric_text to better align visuals with the song content.

  • Production-ready API
    Suitable for music promotion, social content, creator workflows, visualizer-style generation, and AI MV prototyping.

Parameters

ParameterRequiredDescription
audioYesInput audio URL used to generate the music video.
image_referencesNoOptional reference images for characters or visual guidance. Supports up to 5 entries.
music_styleNoMusic style, such as Pop, Rock, Hip Hop, R&B, Jazz, Reggae, Country, Ambient, or Others. Default: Pop.
mv_styleNoMusic video visual style, such as Cinematic, Lo-fi, Dreamscape, Vintage, or Painting. Default: Cinematic.
aspect_ratioNoGenerated video aspect ratio. Default: 16:9.
qualityNoGenerated video quality. Supported values: 720p, 1080p. Default: 720p.
lyric_textNoOptional lyrics text.
instrumental_switchNoEnable this if the input audio is instrumental or has no vocals. Default: true.

Reference Image Format

Each item in image_references supports:

FieldRequiredDescription
imageYesReference image URL.
ref_nameNoReference image label sent to PixVerse. Default: character.

How to Use

  1. Upload your audio — provide the song or audio track you want to turn into a music video.
  2. Add reference images (optional) — upload character or style references if you want more visual control.
  3. Set the music style — choose the genre or overall music direction.
  4. Set the MV style — choose the visual style for the generated video.
  5. Choose aspect ratio and quality — select the final video format and resolution.
  6. Add lyrics (optional) — provide lyric_text if you want stronger lyric-aware visual guidance.
  7. Set instrumental mode (optional) — enable instrumental_switch when the audio has no vocals.
  8. Submit — run the model and download the generated music video.

Example Use Case

Generate a cinematic 16:9 AI music video from a pop track, with character reference images, lyric guidance, and 1080p quality for social media release or artist promotion.

Pricing

Pricing depends on audio duration and quality.

Billing Rules

  • 720p costs $0.08 per billed second
  • 1080p costs $0.12 per billed second
  • Audio duration is billed in whole seconds, rounded up
  • Minimum billed duration is 10 seconds
  • Maximum billed duration is 360 seconds
  • image_references, music_style, mv_style, aspect_ratio, lyric_text, and instrumental_switch do not affect pricing

Example Costs

Quality10s30s60s120s360s
720p$0.80$2.40$4.80$9.60$28.80
1080p$1.20$3.60$7.20$14.40$43.20

Best Use Cases

  • AI music videos — Generate full MV-style visuals from a song.
  • Artist promotion — Create visual promos for track launches and teasers.
  • Lyric-driven content — Pair song lyrics with matching visual storytelling.
  • Character-led music content — Use references to maintain a more stable cast or visual identity.
  • Social media releases — Produce vertical or widescreen clips for modern distribution platforms.

Pro Tips

  • Use image_references when identity, style, or recurring characters matter.
  • Add lyric_text when you want visuals to better follow the song content.
  • Leave instrumental_switch enabled for instrumental tracks or beat-only audio.
  • Use 720p for testing and iteration, then switch to 1080p for final-quality output.
  • Keep reference images visually consistent when you want more stable character appearance.

Notes

  • audio is required.
  • Audio duration is billed with a minimum of 10 seconds and a maximum of 360 seconds.
  • Billing uses whole seconds and rounds duration up.
  • quality defaults to 720p.
  • aspect_ratio defaults to 16:9.
  • instrumental_switch defaults to true.

Related Models

  • MiniMax Music 3.0 — Generate complete songs with vocals and instrumentals from text prompts and lyrics.
  • Music Video Generator — Generate music-video-style visuals from audio or soundtrack-driven inputs.
  • Vidu One-Click V2 MV — Create music video clips with one-click MV generation workflows.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Music Mv Agent API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/pixverse/music-mv-agent with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Music Mv Agent below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "aspect_ratio": "16:9",
    "quality": "720p",
    "caption_switch": false,
    "instrumental_switch": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/pixverse/music-mv-agent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/pixverse/music-mv-agent";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
        "aspect_ratio": "16:9",
        "quality": "720p",
        "caption_switch": false,
        "instrumental_switch": false
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "aspect_ratio": "16:9",
    "quality": "720p",
    "caption_switch": False,
    "instrumental_switch": False
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/pixverse/music-mv-agent", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Music Mv Agent API — Frequently asked questions

What is the Music Mv Agent API?

Music Mv Agent is a Pixverse model for AI inference, exposed as a REST API on WaveSpeedAI. PixVerse Music MV Agent is a fast AI music video generation model that creates music videos from uploaded audio with optional character reference images, music style, MV style, aspect ratio, and quality controls. Ready-to-use REST inference API for audio-to-video generation, music videos, artist visuals, social media clips, promotional content, creative storytelling, and professional MV production workflows with simple integration, no coldstarts, and affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Music Mv Agent API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/pixverse/pixverse-music-mv-agent.

How much does Music Mv Agent cost per run?

Music Mv Agent starts at $0.080 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Music Mv Agent accept?

Key inputs: `audio`, `aspect_ratio`, `caption_switch`, `image_references`, `instrumental_switch`, `lyric_text`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/pixverse/pixverse-music-mv-agent.

How do I get started with the Music Mv Agent API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use Music Mv Agent outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Pixverse). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

PixVerse Music MV Agent API on WaveSpeedAI