Music Video 1.0 turns a song into a finished music video. You upload an MP3 of 10 to 300 seconds plus 1 to 7 style or character reference images, and it produces a video synced to the track, with the output length following the song. It renders at 540P, 720P or 1080P in five aspect ratios (1:1, 16:9, 9:16, 4:3, 3:4). An optional prompt of up to 3,000 characters steers the visuals. The vendor also offers burned-in lyric subtitles, but Jantaris does not expose that option yet.
Best for
- Full-length music videos for independent artists
- Vertical 9:16 versions of a song for Reels and TikTok
- Promo videos for songs made with Mureka V9
- Quick visual drafts for a label or client pitch
Prompting tips
- Use references that share one look: the same singer, palette and setting.
- Fill in
titleto label the track. - Describe the visual arc section by section in the prompt: verse, chorus, bridge.
- Render at 540P (the default) to check timing, then go to 1080P.
FAQ
How much does the Music Video 1.0 API cost?
The rate is from $0.11 per second, and the length of the song sets the length of the video. Failed generations are not charged.
How long can the song be?
Between 10 and 300 seconds, supplied as an MP3.
Can I add lyrics to the video?
Not in Jantaris yet. The model supports burned-in lyric subtitles, but that option is not exposed, so add subtitles in your editor.
How to call Music Video 1.0 via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "music-video-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "540P",
"audio_url": "https://example.com/input.mp3"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "music-video-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "540P",
"audio_url": "https://example.com/input.mp3"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "music-video-1.0",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "540P",
"audio_url": "https://example.com/input.mp3"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 3000 chars | |
title | string | ||
aspect_ratio | string | 1:1 16:9 9:16 4:3 3:4 | 16:9 |
resolution | string | 540P 720P 1080P | 540P |
image_urls | array | max 7 | |
audio_url * | string |
The same schema is available from GET /v1/models/music-video-1.0.









