Skip to main content

Overview

Music to Video transcribes a song’s lyrics and builds a music video around them: a visual for each part of the song, cut to the beat, with the lyrics as captions. The song plays as the soundtrack. Send the song as a direct https:// link to the audio file in audioUrl (MP3, M4A, AAC, WAV or OGG, up to 10 MB; Hooked downloads it) or as a musicId from your library. The video follows the lyrics, so the song needs vocals.
The create call downloads the song and checks it is audio, then answers with the projectId and status processing. The transcription, the visuals and the render happen after that. If a step fails, the project becomes failed (the reason is in message), the credits come back and your webhook gets the failure.

AI images in a style

AI video clips, chained

Each clip starts on the last frame of the one before with isContinuous. language tells the transcription which language the lyrics are in (it is detected when omitted).

Over gameplay

A song already in Hooked

musicId takes a track from GET /v1/music/list or one of your team’s own audio files, instead of audioUrl. The file is copied for the video. Most library tracks are instrumental: use a song with vocals.

When the song is refused

Nothing is charged for any of these.

Getting the video

Wait for the webhook or poll GET /v1/project/{projectId} until video.status is COMPLETED, then download video.url.
Send an Idempotency-Key header to retry safely: if a request times out or answers 5xx, sending it again with the same key and body returns the first answer instead of creating (and charging) the project twice.
Teams in bring-your-own-keys mode are not charged credits, but need OpenRouter in Settings → AI keys (and Gemini for the Omni Flash model). No ElevenLabs key: nothing is narrated. A missing key answers 402 missing_credentials with the list in missingProviders, before anything is created.
See the Music to Video reference for every field and error.