> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Music Task Status

> Query the status and result of a Suno music task

* Query async music task status and results
* Real-time progress tracking
* Retrieve audio, cover, and video URLs (mirrored to our CDN) on completion
* Failed tasks are refunded automatically

All music tasks run asynchronously. Poll this endpoint after submission.

## Authorizations

<ParamField header="Authorization" type="string" required>
  Bearer Token. Get your API Key: [API Key management](https://toapis.com/console/token)
</ParamField>

## Path Parameters

<ParamField path="task_id" type="string" required>
  Task ID returned by the music generation API (`tsk_aud_` prefix)
</ParamField>

## Response

<ResponseField name="id" type="string">Task ID</ResponseField>

<ResponseField name="status" type="string">
  `submitted` / `queued` / `in_progress` / `completed` / `failed`
</ResponseField>

<ResponseField name="progress" type="integer">Progress 0-100</ResponseField>

<ResponseField name="cost" type="number">Actual upstream cost (USD)</ResponseField>

<ResponseField name="created" type="integer">Created timestamp (Unix)</ResponseField>

<ResponseField name="completed" type="integer">Completed timestamp (Unix)</ResponseField>

<ResponseField name="result" type="object">
  Task result; structure varies by operation:

  <Expandable title="result structure">
    <ResponseField name="music" type="array">
      Tracks with `audio_url`, `image_url`, `title`, `tags`, `lyrics`, `duration`
    </ResponseField>

    <ResponseField name="instruments" type="array">
      `midi` result: per-instrument `name`/`program`/`is_drum`/`notes[]`
    </ResponseField>

    <ResponseField name="files" type="array">
      `download` result: multi-format file URLs
    </ResponseField>

    <ResponseField name="videoUrl" type="string">
      `generateMp4` result: video URL
    </ResponseField>

    <ResponseField name="avg_bpm" type="number">
      `bpm` result (also `max_bpm`/`min_bpm`)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="error" type="object">Error info on failure (`code`/`message`)</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://toapis.com/v1/music/tasks/tsk_aud_01M3EXAMPLE \
    --header 'Authorization: Bearer <token>'
  ```

  ```python Python theme={null}
  import time
  import requests

  task_id = "tsk_aud_01M3EXAMPLE"
  while True:
      resp = requests.get(
          f"https://toapis.com/v1/music/tasks/{task_id}",
          headers={"Authorization": "Bearer <token>"}
      ).json()["data"]
      if resp["status"] in ("completed", "failed"):
          break
      time.sleep(5)
  print(resp["result"])
  ```
</RequestExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.