Skip to main content
Score-first is the AudioMusic mode for shaping a song before it is recorded. Every job here returns a score (melody, chords and sections, as ABC notation plus MIDI) alongside — or, for plan and revise jobs, instead of — the audio. Not sure which mode you need? See Choosing how to make music. All routes live under /api/v1/music/v3 and take the usual X-API-Key header. Check GET /api/v1/music/v3/availability before showing a Score-first option in your own product:
available says whether Score-first is offered; revise whether plain-English revision is enabled for your account.

Pricing

Credits are reserved when you call and refunded if the job fails or the request is refused.

Write a score

POST /api/v1/music/v3/plan

Writes a score only — no audio. Send a description and AudioPod writes the lyrics first, within the same charge; or send your own lyrics.
The response is a job with workflow: "plan", plus:
  • lyrics_source — audiopod (written from your description) or user (you supplied them); absent for instrumentals.
  • target_seconds — the length you asked for, if any.
  • score.duration_seconds — the score’s own length once it is written. Song length follows the amount of lyrics, so this can differ from target_seconds; use Song mode when you need an exact length.

Revise a score in plain words

POST /api/v1/music/v3/revise

Available when plain-English revision is enabled for your account (revise: true from /availability); otherwise this route answers 404.
Applies a change described in words and returns a new score-only job linked to the one you revised; the original is kept. Parts of the score you did not ask about are kept exactly as they were, and the tempo only changes when allow_tempo_change is true. Revise as often as you like, then record the version you want. Send an Idempotency-Key header (up to 200 characters) to make a retry safe: the same key from you within 10 minutes returns the first result and is not charged again.
The job has workflow: "revise" and its source_job_id. note says in one sentence what changed, and score_comparison.changed_bars says where — the changed bar ranges per voice. Errors — nothing is charged for any of these:

Record a score

POST /api/v1/music/v3/edit

Records a score as a finished track. Send the score to perform — usually the latest revision’s score from GET /music/v3/jobs/{job_id}/score — and optionally a new style or new words to perform the same tune differently.
A recording is a new performance of the whole piece: sections you did not change will still sound different from an earlier take. An identical request for the same score while one is still recording is refused with 409 (SCORE_ALREADY_RECORDING, with the job_id already in progress) and nothing is charged.

Jobs

Job response

audio_url is null for plan and revise jobs — they are scores. Poll until status is COMPLETED or FAILED.