Mureka AI Create Upload Id API Documentation

Mureka AI Create Upload Id API Documentation

Playground

Try it on WaveSpeedAI!

Mureka AI Upload Audio is a fast audio upload utility that creates a reusable Mureka upload ID from an audio URL via the official Mureka API. Ready-to-use REST inference API for audio asset preparation, AI song generation, vocal cloning workflows, reference audio management, music production, creative audio projects, and professional music workflows with simple integration, no coldstarts, and affordable pricing.

Features

Mureka AI Create Upload ID is a utility workflow that uploads an audio file to the Mureka system and returns a reusable Mureka asset ID for downstream generation tasks. It is designed for preparing reference audio, melody inputs, vocal inputs, remix assets, and other reusable audio resources across the Mureka model ecosystem.


Why Choose This?

  • Reusable Mureka asset IDs Upload an audio file once and reuse the returned ID in compatible Mureka workflows.

  • Purpose-based asset preparation Choose the intended asset type with purpose, such as audio, instrumental, melody, reference, remix, vocal, or voice.

  • Simple upload workflow Provide one audio file, choose a purpose, and receive a reusable ID with minimal setup.

  • Useful across Mureka pipelines Helps prepare audio inputs for song generation, vocal workflows, melody guidance, and reference-based music tasks.

  • Production-ready API Suitable for asset preparation, reusable audio management, and larger Mureka music production pipelines.


Parameters

ParameterRequiredDescription
audioYesSource audio file to upload into the Mureka system.
purposeNoIntended asset type for the uploaded audio. Supported values: audio, instrumental, melody, reference, remix, vocal, voice. Default: audio.

How to Use

  1. Upload your audio — provide the source audio file you want to register in Mureka.
  2. Choose the purpose — select the asset type that best matches how the uploaded file will be used later.
  3. Submit — run the upload request.
  4. Save the returned ID — reuse the returned Mureka upload ID in compatible downstream Mureka workflows.

Example Output

{ “id”: “140567225040898”, “purpose”: “audio”, “audio_id”: “140567225040898” }


Pricing

Just $0.01 per request.

Billing Rules

  • Each upload ID creation request costs $0.01
  • Pricing is fixed per request
  • purpose does not affect pricing

Best Use Cases

  • Audio asset preparation — Upload reusable audio assets for downstream Mureka workflows.
  • Melody-guided generation — Prepare melody inputs for compatible music generation models.
  • Reference audio workflows — Register reference clips for style or structure guidance.
  • Vocal and voice workflows — Prepare vocal assets for compatible clone or generation tasks.
  • Remix pipelines — Store reusable source audio for remix-oriented workflows.

Pro Tips

  • Choose the correct purpose so the returned asset is easier to reuse in the right downstream workflow.
  • Keep the returned ID saved somewhere reliable, since it may be needed later in generation requests.
  • Use clean audio files for better downstream compatibility.
  • Create upload IDs ahead of time if you are building a multi-step Mureka workflow.

Notes

  • audio is required.
  • purpose defaults to audio.
  • The returned ID is intended for Mureka-related workflows only.
  • This utility creates a reusable uploaded asset ID rather than generating music directly.
  • The exact returned field name may reflect the selected purpose in downstream usage patterns.


Upload Requirements

  • This model accepts public audio file URLs through the audio field. Keep the field name as audio for API compatibility.

  • Supported formats: .mp3, .m4a.

  • Available purposes: audio, instrumental, melody, reference, remix, vocal, voice.

  • melody can also support .mid in the backend, but the frontend uploader is configured for audio files only. Non-audio purposes such as lyrics-video and soundtrack are not exposed here because they require image or video uploads.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
  "purpose": "audio"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/mureka-ai/create-upload-id" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
audiostringYes--Public audio file URL to upload to Mureka. The API field name must remain audio.
purposestringNoaudioaudio, instrumental, melody, reference, remix, vocal, voiceMureka upload purpose.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.