Mureka V9 API - AI Song Generator API with Your Own Lyrics
Generate songs with vocals via the Mureka V9 API: lyrics with [Verse] and [Chorus] tags, a style prompt, price per song, Python and JavaScript examples.
The Mureka V9 API turns your lyrics into a full song with vocals. You send one request to POST /v1/generate with model: "mureka-v9", the lyrics in lyrics (required, tagged with [Verse], [Chorus] and so on) and an optional style description in prompt. On Jantaris the price is $0.124 per song regardless of length, and a failed generation costs nothing. This guide covers the parameters, working code, cost math and the audio tools that pair with it.
What Mureka V9 does
Mureka V9 is the March 2026 song model from Mureka, part of Kunlun Tech's Skywork AI. It is lyrics-first: it does not write words for you, it sings the ones you give it, and arranges the music around the structure you mark up.
Parameters on Jantaris:
| Field | Type | Limit | Required |
|---|---|---|---|
lyrics | string | up to 3,000 characters | yes |
prompt | string | up to 1,024 characters | no |
That is the whole input schema. There is no duration and no instrumental flag; sending either returns 422 invalid_request. The song's length follows from the lyrics, and you get the instrumental by post-processing (see below). You can always fetch the live schema from GET /v1/models/mureka-v9.
Your first song through the API
curl
curl "https://jantaris.com/v1/generate?wait=120" \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mureka-v9",
"input": {
"lyrics": "[Verse]\nNeon lights on the empty street\nI keep the rhythm, I keep the beat\n[Chorus]\nDrive all night, never look back\nCity hums along the track",
"prompt": "synthwave pop, female vocal, 110 bpm, warm analog bass, night drive mood"
}
}'?wait=120 makes the server hold the connection for up to 120 seconds and return the finished task if it completes in time. If not, you get 202 with a task id and poll_url.
Python
import os, time, requests
API = "https://jantaris.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
lyrics = """[Verse]
Neon lights on the empty street
I keep the rhythm, I keep the beat
[Chorus]
Drive all night, never look back
City hums along the track"""
task = requests.post(
f"{API}/generate",
params={"wait": 120},
headers=HEADERS,
json={
"model": "mureka-v9",
"input": {"lyrics": lyrics, "prompt": "synthwave pop, female vocal, 110 bpm"},
},
timeout=150, # longer than wait
).json()
while task["status"] not in ("succeeded", "failed"):
time.sleep(5)
task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
if task["status"] == "succeeded":
song = task["output"][0]
print(song["url"], song.get("duration"), task["cost"])
else:
print("failed:", task["error"])JavaScript
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?wait=120`, {
method: "POST",
headers,
body: JSON.stringify({
model: "mureka-v9",
input: {
lyrics: "[Verse]\nNeon lights on the empty street\nI keep the rhythm, I keep the beat\n[Chorus]\nDrive all night, never look back",
prompt: "synthwave pop, female vocal, 110 bpm",
},
}),
})).json();
while (!["succeeded", "failed"].includes(task.status)) {
await new Promise((r) => setTimeout(r, 5000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.output?.[0]?.url ?? task.error);Output URLs are temporary. Download the file to your own storage as soon as the task succeeds. If you generate songs in batches, swap the polling loop for a webhook: add webhook_url to the request and Jantaris POSTs the finished task to you, signed with x-jantaris-signature.
Style prompt vs lyrics
Keep the two fields apart. Mixing them is the most common reason a song comes back with stage directions sung as words.
prompt (style) | lyrics | |
|---|---|---|
| Purpose | how the song should sound | what gets sung |
| Example | indie pop, melancholic, mid-tempo, female vocal, acoustic guitar | [Verse] lines, [Chorus] lines |
| Avoid | words you want sung | style notes between lines |
A style prompt that works is a comma-separated list built from:
- genre:
synthwave pop,lo-fi hip hop,pop punk,bossa nova, - mood:
uplifting,melancholic,dark,nostalgic, - tempo: a BPM value or
slow,mid-tempo,fast, - vocal:
female vocal,male vocal,raspy,breathy,choir, - two or three core instruments:
warm Rhodes, upright bass, brushed drums.
Section tags in the lyrics
Mark sections with [Verse], [Chorus], [Bridge] and [Outro]. The model plans the arrangement around them. My habits:
- write the chorus out in full every time it repeats instead of "chorus x2",
- spell out numbers and abbreviations the way they should be sung,
- keep lines inside a section at a similar syllable count,
- in JSON, line breaks are
\n.
Languages
Published material on Mureka V9 lists ten singing languages: English, Chinese, Japanese, Korean, Spanish, Portuguese, French, German, Italian and Russian. Other languages are accepted as text, but pronunciation is less predictable, so test before you commit to a batch.
Generating songs in Jantaris Studio
If you want to hear the model before writing code, the Studio form maps one-to-one to the API: Prompt is prompt, Lyrics is lyrics. The cost shows before you press Generate.


Pricing: what an AI song costs
| Item | Unit | Price |
|---|---|---|
| Mureka V9 | per song | $0.124 per song |
| Music Extractor | per started minute of source audio | $0.50 per minute |
| Vocal Remover | per started minute of source audio | $0.50 per minute |
| Multistem Splitter | per started minute of source audio, all three stems | $1.50 per minute |
| Music Video 1.0 | by song length and resolution | from $0.11 per second |
Because Mureka V9 bills per song, a 40-second jingle and a three-minute track cost the same. The formula for a batch:
cost = songs generated × song price
+ (optional) minutes of audio × tool priceEvery request returns estimated_cost before it runs, the amount is held on your balance, and a task that ends failed releases the hold in full. The pricing page has a calculator, and the balance never expires.

Instrumentals, stems and music videos
Mureka V9 on Jantaris always needs lyrics. To get a backing track without vocals, chain two calls:
- Generate the song with
mureka-v9. - Send its URL to
music-extractorinaudio_url. It returns the instrumental bed with the vocal removed.
inst = requests.post(
f"{API}/generate",
headers=HEADERS,
json={"model": "music-extractor", "input": {"audio_url": song["url"]}},
timeout=30,
).json()The same audio_url input works for the other tools:
- Vocal Remover returns the isolated vocal, useful for remixes or lip sync,
- Multistem Splitter splits the song into vocals, drums and bass, so you can remix it or duck the vocal under a voiceover,
- Music Video 1.0 takes the finished song plus 1 to 7 reference images and renders a video synced to the track.
If your song is the soundtrack for a short video, my AI product ad workflow shows how the image, video and music steps fit together, and what AI video costs per second covers the budget side.
Rights and commercial use
The model page states it plainly: outputs are yours as far as the law and Mureka's terms allow. Read Mureka's terms before releasing songs, and check your distributor's rules on AI-generated music, since streaming distributors set their own policies. Stem and vocal tools do not change the rights to a recording: only process songs you own or have permission to use.
FAQ
How much does the Mureka V9 API cost?
On Jantaris: $0.124 per song, regardless of length. The estimate appears before the task runs, and failed generations are not charged.
Can I set the song length?
No. There is no duration parameter. Length follows the lyrics: more sections make a longer song. For short-form video, write one verse and one chorus and trim in your editor.
Can Mureka V9 generate instrumentals?
Not directly on Jantaris, since lyrics is required. Generate the song, then run it through music-extractor to remove the vocal and keep the backing track.
How long can the lyrics and style prompt be?
Up to 3,000 characters of lyrics and up to 1,024 characters of style prompt.
Is there a free tier for the AI music API?
No. Jantaris has no free plan or signup credits. You top up from $10, the balance does not expire, and you pay per song generated.
Can I use the songs commercially?
Outputs are yours within the law and Mureka's terms. Check those terms and your distributor's AI music policy before publishing.











