---
title: "Get a song"
method: GET
path: "/music/{id}"
tags: ["Music"]
---

# Get a song

`GET /music/{id}`

Returns a song you generated. Poll every 10-15 seconds after `POST /music` until `status` is `completed` (then use `audioUrl`, or the `id` as `musicId` in `POST /music-videos`) or `failed` (credits are refunded automatically).

## Path parameters

- `id` string, uuid, required — Song ID from `POST /music`.

## Response `200`

OK

- object
  - `id` string, uuid, required
  - `status` 'pending' | 'processing' | 'completed' | 'failed', required
  - `title` string, nullable, required — The song title when ready.
  - `durationSeconds` number, nullable, required — Track length in seconds when ready.
  - `audioUrl` string, nullable, required — The finished audio URL when `status` is `completed`.
  - `errorMessage` string, nullable, required — Why generation failed, when `status` is `failed`.

## Other responses

- `401` — 401
- `402` — 402
- `403` — 403

## Changes

- **2026-08-15** `ac1de8fd0dfc` — 1 breaking, 2 info
  - the `oneOf[subschema #1]/data` response's property type/format changed from ``/`` to `object`/`` for status `403`
  - the response property `oneOf[subschema #1]/data` became required for the status `403`
  - added the required property `oneOf[subschema #1]/data/feature` to the response with the `403` status

[Change history](https://skmtc.dev/aituber/apis/aituber-api/changes/music/:id/get.md)

---

[API](https://skmtc.dev/aituber/apis/aituber-api.md) · [All operations](https://skmtc.dev/aituber/apis/aituber-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/aituber/aituber-api/revisions/f2531c657594/schema)
