How to Turn a Song or YouTube Link into Sheet Music with the Mureka API
6 min read • October 18, 2026
Table of contents
- Introduction
- Before you start
- Pick the source: a song, a YouTube link or an audio file
- Make the score: one call, no job to poll
- What’s in the zip
- Limits and costs
- The same from an AI assistant
- Examples
- Frequently asked questions
- Conclusion
Introduction
The useapi.net Mureka API turns a song into sheet music with one call: send one of your Mureka songs, a YouTube link or an uploaded MP3 to POST /music/score and get back a zip with a MusicXML file, a staff-notation PDF and a numbered-notation PDF of the melody, chords and lyrics, for 10 Mureka Gold. It is the Score tool from mureka.ai, made callable from code, for songwriters who want a lead sheet of a song they made, teachers who need a melody on paper, and developers building music apps. useapi.net is a third-party API, not affiliated with Mureka or Kunlun Tech, and it runs on your own Mureka account.
This guide is one real run. We scored a 2:30 indie-pop song made earlier on the same account. The call answered in about 10 seconds, took 10 Gold off the balance (52 to 42), and the zip held a 4-page staff score, a 3-page numbered-notation score and a MusicXML file that opens in MuseScore. Every response below is from that run, with the account ids replaced.
Before you start
You need a useapi.net API token and a Mureka account connected through Setup Mureka, with at least 10 Gold left on it. The steps use curl, jq and two shell variables:
export USEAPI_TOKEN="user:1234-..." # your useapi.net API token
export ACCOUNT="12345678901234" # your Mureka account id, from GET /accounts
account can be left out when you have one Mureka account connected, or when you score a song_id, which already names its account. GET /accounts lists the ids.
Pick the source: a song, a YouTube link or an audio file
The score endpoint takes exactly one source: a song_id or a url. The audio must be 10 seconds to 10 minutes long. Mureka recommends a solo song with clear vocals, a steady tempo and a consistent rhythm, and says songs with tempo changes or frequent rhythm changes are not supported well.
A song on your Mureka account
Any song you made on Mureka works, whether through the API or on mureka.ai. List your songs with GET /music to find its song_id:
curl -s "https://api.useapi.net/v1/mureka/music/?account=$ACCOUNT" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
| jq -r '.list[] | .songs[]? | "\(.song_id) \(.title)"'
user:1234-mureka:12345678901234-song:33445566 Coffee Makes My Day
user:1234-mureka:12345678901234-song:33445567 Coffee Makes My Day
Each generation makes two songs, so a title shows up twice. Pick the take you want. If you are making the song in the same script, see the job flow below.
A YouTube link
Pass the YouTube link as url. The API fetches the audio itself, which adds up to 15 seconds to the call. The files in the zip take the video’s title unless you set title.
To check the length before you spend Gold, GET /files/youtube returns the soundtrack’s duration in milliseconds:
curl -s "https://api.useapi.net/v1/mureka/files/youtube/?account=$ACCOUNT&url=https://www.youtube.com/watch?v=VIDEO_ID" \
-H "Authorization: Bearer $USEAPI_TOKEN" | jq '{name, duration}'
A video longer than 10 minutes needs trimming before you score it. That same call returns a cos_url link to the MP3. Download it, cut the part you want, and upload it as described next. Score music you have the rights to use.
An audio file you upload
Upload an MP3 with POST /files/vocal or POST /files, then pass the url from the response. Files uploaded with POST /files/vocal stay private to your account. Files uploaded with POST /files go into Mureka’s reference collection, which every Mureka user can see, and that call also needs a genre and a mood. For a recording you want to keep to yourself, use POST /files/vocal:
curl -s "https://api.useapi.net/v1/mureka/files/vocal/?account=$ACCOUNT&title=my-demo" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: audio/mpeg" \
--data-binary @my-demo.mp3 | jq -r .url
The url is a https://static-cos.mureka.ai/… link, and that is what the score call takes.
Make the score: one call, no job to poll
POST /music/score waits for the result and answers with the zip link, usually in 5 to 15 seconds. Unlike song creation, there is no jobid to poll. From a song:
curl -s --max-time 120 -X POST "https://api.useapi.net/v1/mureka/music/score" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "song_id": "user:1234-mureka:12345678901234-song:33445566" }'
Ours answered 200 in 10.4 seconds:
{
"title": "Coffee Makes My Day",
"url": "https://static-cos.mureka.ai/cos-prod/skm/music-staff/20261018/c8c500e3-....zip"
}
From a YouTube link or an uploaded file, send url instead, with an optional title for the file names (up to 100 characters):
curl -s --max-time 120 -X POST "https://api.useapi.net/v1/mureka/music/score" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"account": "'"$ACCOUNT"'",
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"title": "My Song"
}'
Then download and unpack the zip:
curl -s -o score.zip "https://static-cos.mureka.ai/cos-prod/skm/music-staff/20261018/c8c500e3-....zip"
unzip score.zip
The score call is a paid action, so do not retry it blindly after a timeout. Give curl a generous --max-time and read the answer once.
When the song comes from the same script, wait for its job before you score it. POST /music/create with async: true returns a jobid, and GET /jobs/jobid shows status: "completed" with the two songs in response.songs[]. Score the song_id of the take you want. The Mureka song tutorial covers that flow end to end.
What’s in the zip
Three files, named after the song’s title:
Coffee Makes My Day_staff.musicxml 224,420 bytes
Coffee Makes My Day_staff.pdf 88,308 bytes
Coffee Makes My Day_numbered_notation.pdf 57,602 bytes
<title>_staff.musicxmlis a MusicXML 4.0 score with two parts.Vocalcarries the melody with the lyrics under the notes, andChordscarries the chord symbols. Ours came out in A major, 4/4, at 88 BPM, 112 measures long.<title>_staff.pdfis the same score in staff notation, ready to print. Ours ran to 4 pages.<title>_numbered_notation.pdfis the melody in numbered notation (jianpu, where1is the tonic, here1=A), with the chords above and the lyrics below. Ours ran to 3 pages.
Page 1 of both PDFs is in Examples. The words under the notes are transcribed from the recording, so read them against your lyrics. Our second line came out as “Leave a head of dreams behind” where the song’s lyrics say “Leave the heavy dreams behind”.
Open the MusicXML in MuseScore
The MusicXML opens in MuseScore, Sibelius, Finale, Dorico and most other notation software. In MuseScore Studio:
- Choose File → Open and pick
<title>_staff.musicxml. - The score opens with the
VocalandChordsstaves, the lyrics and the chord symbols. - Press play to hear the melody, fix any notes or words, transpose it with Tools → Transpose, and export it with File → Export as PDF, MIDI or audio.
Keep the zip’s PDFs for a quick print, and use the MusicXML when you want to edit.
Limits and costs
| Limit | Value |
|---|---|
| Cost | 10 Mureka Gold per score, from your Mureka account |
| Audio length | 10 seconds to 10 minutes |
| Time | About 5 to 15 seconds, plus up to 15 seconds to fetch a YouTube link |
| Source | song_id or url, not both (sending both answers 400) |
url | A YouTube link, or a file URL from POST /files or POST /files/vocal, up to 2,048 characters |
title | Up to 100 characters, used when the source is a url. A song_id keeps the song’s own title |
| Not enough Gold | 412 with User balance is not enough to operate |
Scoring the same YouTube link again returned the earlier zip, with its original file names, and was not charged in our tests. API access is a flat useapi.net subscription for every supported service, with no per-call charge from us, and the Gold comes from your own Mureka plan.
The same from an AI assistant
The hosted Mureka MCP server gives Claude Code, Cursor, VS Code and other MCP clients the whole Mureka API as 40 tools, with nothing to install. In Claude Code:
claude mcp add --transport http useapi-mureka https://api.useapi.net/v1/mureka/mcp --header "Authorization: Bearer YOUR_API_TOKEN"
Then ask in plain words, for example “Turn this YouTube video into sheet music” or “Make sheet music of my last song”. The assistant calls mureka_get_sheet_music with a song_id or a url and hands back the zip link. It can also make the song itself, import a YouTube link with mureka_import_youtube, or upload an MP3 with mureka_upload_vocal. The server is listed in the official MCP Registry as net.useapi/mureka.
Examples
What this run made, with no edits.
Source » “Coffee Makes My Day”, Mureka V9, 2:30
POST /music/score » page 1 of each PDF
Click a page to open the full PDF.
All three files from the zip: staff PDF · numbered notation PDF · MusicXML
From a YouTube link » “Who Is It”
A score made from a YouTube link, from our Mureka characters, remix and sheet music post, which also scores three more songs:
Frequently asked questions
- Is there an audio to sheet music API? Yes. POST /music/score in the useapi.net Mureka API takes a song, a YouTube link or an uploaded MP3 and returns MusicXML plus staff and numbered-notation PDFs, in one call that answers in seconds.
- How do I turn a YouTube video into sheet music? Send the link as
urlto POST /music/score. The API fetches the audio, and the zip uses the video’s title unless you passtitle. The video’s audio must be 10 seconds to 10 minutes long, and GET /files/youtube shows its length beforehand. - How do I convert an MP3 to MusicXML? Upload the MP3 with POST /files/vocal, which keeps it private to your account, and pass the returned
urlto POST /music/score. The<title>_staff.musicxmlfile in the zip is the MusicXML. - Is it free? No. Each score costs 10 Mureka Gold from your Mureka account, and the API answers
412when the balance is too low. Scoring the same YouTube link twice returned the earlier zip without a second charge in our tests. API access is a flat useapi.net subscription, with no per-call charge from us. - What kind of music transcribes well? A solo song with clear vocals, a steady tempo and a consistent rhythm, per Mureka. Tempo changes and frequent rhythm changes are not supported well. The score holds the main melody, the chords and the lyrics, not every instrument.
- Can I get the stems or MIDI of every instrument instead? That is a different tool. POST /music/stems splits one of your songs into up to 12 stems with MIDI.
Conclusion
Visit our Discord Server or
Telegram Channel for any support questions and concerns.
The runnable version of this tutorial is in mureka-api/sheet-music: one Node.js or Python script that takes a song id, a YouTube link or an MP3 and saves the unzipped sheet music. The same GitHub repo has examples for songs, lyrics and instrumentals.
An AI assistant can make the sheet music for you too: the hosted Mureka MCP server works with Claude Code, Cursor and VS Code, on your own Mureka account.

