---
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

---

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