6 min read • October 18, 2026

Table of contents

  1. Introduction
  2. Before you start
  3. Pick the source: a song, a YouTube link or an audio file
    1. A song on your Mureka account
    2. A YouTube link
    3. An audio file you upload
  4. Make the score: one call, no job to poll
  5. What’s in the zip
    1. Open the MusicXML in MuseScore
  6. Limits and costs
  7. The same from an AI assistant
  8. Examples
  9. Frequently asked questions
  10. 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.

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.

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.musicxml is a MusicXML 4.0 score with two parts. Vocal carries the melody with the lyrics under the notes, and Chords carries the chord symbols. Ours came out in A major, 4/4, at 88 BPM, 112 measures long.
  • <title>_staff.pdf is the same score in staff notation, ready to print. Ours ran to 4 pages.
  • <title>_numbered_notation.pdf is the melody in numbered notation (jianpu, where 1 is the tonic, here 1=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:

  1. Choose File → Open and pick <title>_staff.musicxml.
  2. The score opens with the Vocal and Chords staves, the lyrics and the chord symbols.
  3. 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.

Mureka API sheet music: Coffee Makes My Day in staff notation, Vocal and Chords staves with lyrics, page 1 of 4
Staff notation, page 1 of 4
Mureka API sheet music: Coffee Makes My Day in numbered (jianpu) notation with chords and lyrics, page 1 of 3
Numbered notation, page 1 of 3

All three files from the zip: staff PDF · numbered notation PDF · MusicXML

A score made from a YouTube link, from our Mureka characters, remix and sheet music post, which also scores three more songs:

Who Is It, from the YouTube link, page 1 of 8
"Who Is It", from the YouTube link, page 1 of 8

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 url to POST /music/score. The API fetches the audio, and the zip uses the video’s title unless you pass title. 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 url to POST /music/score. The <title>_staff.musicxml file in the zip is the MusicXML.
  • Is it free? No. Each score costs 10 Mureka Gold from your Mureka account, and the API answers 412 when 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.