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

# Suno Upload

> Import your own audio as a Suno source track. $0.006 per request.

`suno-upload` imports a public audio file as a Suno track, so later operations can use it as a source.

| Property | Value |
| - | - |
| Model ID | `suno-upload` |
| Endpoint | `POST /v1/music/generations` (asynchronous task) |
| Group | Suno > Upload |
| Input | One public audio URL |
| Result | Tracks in `result.tracks` with `audio_url` |
| Price | \$0.006 per request (0.6 credits) |

Confirm live rates on the [SnapGen models page](https://snapgen.org/models). Failed tasks are not charged.

<ParamField body="model" type="string" required>
  Set to `suno-upload`.
</ParamField>

<ParamField body="audio_url" type="string" required>
  Public `http` or `https` URL of the audio to import.
</ParamField>

<ParamField body="webhook" type="string">
  Optional public `https` URL that receives one signed event when the task finishes. See [Task webhooks](/api-reference/webhooks).
</ParamField>

<ParamField body="webhook_secret" type="string">
  Required with `webhook`: 16 to 256 characters, used to sign the delivery.
</ParamField>

## Request

```bash theme={null}
curl https://api.snapgen.org/v1/music/generations \
  -H "Authorization: Bearer $SNAPGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-upload",
    "audio_url": "https://example.com/my-track.mp3"
  }'
```

The response is HTTP `202` with a task object and a `Location: /v1/tasks/{id}` header. Poll [`GET /v1/tasks/{id}`](/api-reference/task-status) every 10 to 20 seconds until `status` is `succeeded` or `failed`.

## Result

`result.tracks[0]` is the imported track. It may carry only its `id` and no `audio_url`; it still works as a source. Pass this task's `id` as `source_task_id`, with `source_index` `1`, to edit the track.

```json theme={null}
{
  "urls": [
    "https://cdn.example.com/music/my-track.mp3"
  ],
  "tracks": [
    {
      "index": 1,
      "id": "clip_4c7e1a",
      "audio_url": "https://cdn.example.com/music/my-track.mp3"
    }
  ]
}
```

<Note>
  Result URLs are kept for about 72 hours. Download the files you want to keep.
  See [Music generation tasks](/api-reference/music-generations) for the task lifecycle, result fields, webhooks, and errors.
</Note>
