Create Music: POST /create-music

Turn a text prompt into a complete original song, with vocals, melody and full arrangement, delivered as a finished MP3 rather than a loop or preview. One call costs $0.50 in USDC on Base.

What it is for

Describe the genre, mood, instrumentation and tempo, supply your own lyrics, ask for an instrumental, or pin a style tag. The discovery document names soundtracks under video, release-ready artist tracks, podcast and game themes, and demo sketches as uses.

At a glance

EndpointPOST https://app.suedeai.ai/create-music
Price$0.50, amount 500000 USDC base units
Paymentx402 exact on eip155:8453 to 0x10FF767043A1723E0BB5B9207bC37D3442cC9E4F, or a Skyfire token
Paid response202 Accepted with songId and pollUrl
PollGET https://app.suedeai.ai/api/songs/{songId}, free
IdentifiersOpenAPI operationId, A2A skill and MCP tool: create_music

Request body

FieldTypeRequiredDescription
promptstringYesThe song you want: genre, mood, instruments and any specific vibe. Examples from the schema: "Upbeat 80s synthwave with driving bass and neon atmosphere", "A melancholic acoustic guitar ballad about rain".
stylestringNoA style or genre tag, such as Hip Hop, Ambient or Rock.
custom_modebooleanNotrue to sing the lyrics you supply in lyrics.
lyricsstringWhen custom_mode is trueYour lyrics.
make_instrumentalbooleanNotrue for a track without vocals.
vocal_genderstringNom or f.
tagsstringNoComma-separated keywords to tag the generated file.
asyncModebooleanNoSwitches asynchronous mode on, never off. Paid calls are already asynchronous.

Example: your own lyrics

First send the request without PAYMENT-SIGNATURE to get the 402 challenge (amount 500000, priceUsd $0.50), sign it as shown in the quickstart, then send:

curl -i -X POST https://app.suedeai.ai/create-music \
  -H 'Content-Type: application/json' \
  -H "PAYMENT-SIGNATURE: $PAYMENT" \
  -H 'X-Idempotency-Key: rain-ballad-0001' \
  -d '{
    "prompt": "A melancholic acoustic guitar ballad about rain",
    "style": "Ambient",
    "custom_mode": true,
    "lyrics": "Your lyrics here",
    "vocal_gender": "f"
  }'

For a track without vocals, drop custom_mode and lyrics and send "make_instrumental": true.

Response to a paid call: 202 Accepted

FieldDescription
statusprocessing or queued.
shareUrlThe browser share URL the track will have once the job completes.
songIdThe id of the song row, and the {songId} in pollUrl. It can be null when the job is queued before that row exists.
pollUrlThe absolute URL of GET /api/songs/{songId}. No further payment.

With ?async=false the call blocks and answers 200 with shareUrl (a public page to listen to and download the track), title and imageUrl (cover art). Renders take minutes and payment clients time out in about 30 seconds, so the default asynchronous mode suits most callers.

Polling: GET /api/songs/{songId}

Music returns the song row, not the jobId and status shape the video and image polls use. Read model_version:

  • pending: the track is queued or rendering. Poll again.
  • failed: generation failed. This is final; stop polling.
  • Any version label, such as v4.5: the track is ready and audio_url is the finished MP3.

Until the track is ready, audio_url holds the placeholder cover-image URL the row was created with. It is a reachable image, not audio, so a present audio_url does not mean the track is finished.

FieldDescription
idThe songId you polled.
model_versionThe job state, as above.
audio_urlThe finished MP3 once ready; a placeholder image URL before that.
title, prompt, genreTrack title, the prompt it was generated from, and the style label from the request.
image_urlCover art URL.
durationLength in seconds; 0 until the render finishes.
share_idPublic share identifier for the listener page.
is_publictrue for x402 and Skyfire paid jobs, which are created public so the buyer can fetch them.
created_atCreation time, ISO 8601.

An unknown songId answers 404 with {"error":"Song not found"}. Because paid jobs are created public, a 404 means the id is wrong, not that the track is still rendering.

Sources

  • app.suedeai.ai/.well-known/x402: description, price, payment requirement and input schema (resource entry last updated 2026-08-30).
  • app.suedeai.ai/openapi.json: operations create_music and create_music_result.
  • Live requests on 2026-10-11: the unpaid 402 challenge and the 404 for an unknown songId.