Docs
Get an API key

Get Music

GET /v1/music/{id} View .md

The job's status, estimated progress while it renders, and once completed its outputs, unsigned_urls (index-aligned with outputs) and usage.

Guides: Write songs for MiniMax Music 3, Make songs with ACE-Step 1.5

  • id string required

    The music job's ID, music_ followed by 24 hex characters.

OK

application/json · music-job-payload

20 fields
  • id string required
  • object string required
    music
  • model string required
  • task string required
  • status string required
    pendingin_progresscompletedfailedcancelledexpired
  • progress integer required

    Estimated percent while rendering.

  • created_at integer required
  • completed_at integer
  • expires_at integer

    When the audio is deleted (7 days after completion).

  • polling_url string required
  • stream_url string

    While pending or in_progress on a model that streams (streaming.progressive): the song as WAV as it renders, from its first byte (GET /v1/music/{id}/stream; ?index=N for another output). Send your API key.

  • timestamps_stream_url string

    While pending or in_progress on a model that streams, for a song asked for with timestamps: true: its lyric lines as they settle while it renders, then the finished timing, as server-sent events (GET /v1/music/{id}/timestamps/stream; ?index=N for another output). Send your API key.

  • queue_position integer

    Jobs ahead of this one for the same model, while pending.

  • outputs array of objects
    12 fields
    • index integer

      Its place in outputs and in unsigned_urls; GET /v1/music/{id}/content?index=N.

    • kind string
    • role string

      What the audio is; mix is the whole song.

    • candidate integer

      Which of the n songs it belongs to.

    • content_type string
    • format string
    • duration_seconds number
    • sample_rate integer
    • channels integer
    • seed integer
    • metadata object

      With best_of, candidates: every take in the order rendered, {seed, score}, where score is the mean confidence aligner-1 placed its lyric lines with (0 to 1; null for a take it could not align). The output is the take with the highest score.

      1 field
      • candidates array of objects
        2 fields
        • seed integer
        • score number or null
    • timestamps object

      When each word and line of the lyrics is sung in this output, in seconds from the start of the file. The same lines, words and unaligned lines POST /v1/audio/alignments answers with (docs/alignments), made by aligner-1 from the output's own audio and the lyrics you sent. Present only on a job that sent timestamps set to true, and only on an output that was timed; an output that could not be has none, and the job says so in warnings (timestamps_unavailable).

      4 fields
      • separated boolean required

        Whether the vocal was separated from the music before it was timed. Always true for a song.

      • lines array of objects required

        The lines of the lyrics that were placed, in order. Section labels such as [Chorus] are not lines; they are each line's tag.

        8 fields
        • index integer required

          Which line of text this is, counting from 0 and skipping section labels and blank lines.

        • section integer required

          Which section the line is in, counting from 0, so a chorus that repeats stays two sections.

        • tag string or null required

          The label of the section (Chorus for [Chorus]), or null for lines before the first label or in text with none.

        • text string required

          The line as you wrote it.

        • start number required

          Seconds from the start of the audio to the first word.

        • end number required

          Seconds from the start of the audio to the end of the last word.

        • score number required

          Median confidence of the line's words. Higher is better; use it to judge by, not to filter on.

        • certain boolean required

          The aligner's judgement that the line is placed right. False where a word was held so long that the search plainly parked it across a gap. True is not a guarantee.

      • words array of objects required

        Every word of the lines above, in order, as written in the lyrics.

        5 fields
        • line integer required

          The index of the line the word is in.

        • text string required

          The word as you wrote it.

        • start number required

          Seconds from the start of the audio.

        • end number required

          Seconds from the start of the audio.

        • score number required

          The aligner's confidence in this word.

      • unaligned array of objects required

        Lines the model could not place, listed instead of left out.

        3 fields
        • line integer required

          The index of the line.

        • text string required
        • reason string required

          Why the line was not placed.

  • written object

    A job sent write: true, once completed: the song the writer wrote from the brief, as the model was sent it.

    5 fields
    • prompt string required

      The style caption.

    • lyrics string required
    • bpm integer required
    • key string required
    • time_signature string required
  • unsigned_urls array of strings

    outputs[N] is at unsigned_urls[N]; send your API key.

  • warnings array of objects required
    3 fields
    • code string

      advisory_control (a hint the model may not follow exactly), ignored_parameter (accepted and not used), unknown_parameter (not a music request field) timestamps_unavailable (the song is complete, but this output could not be timed; nothing was billed for the timing) or best_of_unranked (no take could be aligned, so the first take is returned; every take was rendered and is billed, no alignment is).

    • field string
    • message string
  • usage object
    7 fields
    • cost number

      Dollars, billed_seconds times the model's price, plus timestamps.cost when the lyrics were timed, best_of.cost when takes were ranked and write.cost when the song was written.

    • duration_seconds number
    • billed_seconds integer

      Seconds of song billed at the model's price, every take's with best_of. The timing of the lyrics is billed apart, in timestamps or best_of.

    • outputs integer
    • timestamps object

      The timing of the lyrics, billed against aligner-1 as POST /v1/audio/alignments bills it. Present only when at least one output was timed; an output that could not be is not billed.

      2 fields
      • billed_seconds integer required

        The seconds of audio that were timed, each output rounded up to a whole second.

      • cost number required

        Dollars for billed_seconds at aligner-1's price.

    • best_of object

      A job sent best_of above 1: how many takes were rendered, and the alignment that ranked them, billed against aligner-1 as POST /v1/audio/alignments bills it. With timestamps, the kept take's timing is this alignment, billed here once and not in timestamps. A take that could not be aligned is not billed.

      3 fields
      • takes integer required
      • billed_seconds integer required

        The seconds of audio aligned, each take rounded up to a whole second.

      • cost number required

        Dollars for billed_seconds at aligner-1's price.

    • write object

      A job sent write: true: the writer's tokens, every attempt's, billed at its row's prices as POST /v1/chat/completions bills them.

      4 fields
      • model string required
      • prompt_tokens integer required
      • completion_tokens integer required
      • cost number required

        Dollars for the tokens at the writer's prices.

  • error string

    The failure, when failed.

  • error_code string

    Why the job failed: invalid_request, payload_too_large, timeout, provider_error, server_error, or write_failed (write: true and no draft met the rules; not billed).

curl https://api.vultrinference.com/v1/music/{id} \
  -H "Authorization: Bearer $VULTR_INFERENCE_API_KEY"
Response · 200
{
    "id": "music_0123456789abcdef01234567",
    "object": "music",
    "model": "string",
    "task": "string",
    "status": "pending",
    "progress": 0,
    "created_at": 1790000000,
    "polling_url": "string",
    "warnings": [
        {
            "code": "string",
            "field": "string",
            "message": "string"
        }
    ]
}