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

# Asset Operations

> persona vocal extraction, createVoice cloning, createModel custom training, vox (legacy)

Asset operations produce upstream asset IDs (`persona_id` / `voice_id` / `model_id`) reusable in later requests.

```
POST https://toapis.com/v1/music/generations/{operation}
```

<ParamField body="model" type="string" required>Fixed `"suno"`</ParamField>

## persona — vocal persona (\$0.004)

Extract a vocal persona from an existing song; reuse via `persona_id` in `generation` etc.

<ParamField body="task_id" type="string" required>Source task ID</ParamField>
<ParamField body="name" type="string" required>Persona name</ParamField>
<ParamField body="describe" type="string">Persona description (optional)</ParamField>

## createVoice — voice cloning (\$0.016)

<ParamField body="audio_url" type="string" required>Source audio URL — <b>clean vocal stems only</b>; full mixes are rejected upstream</ParamField>
<ParamField body="name" type="string">Voice name</ParamField>

## createModel — custom model training (\$0.96)

Train a custom model on 6-24 tracks; use the resulting `custom_model_id` in `generation` (omit `version` and `persona_id` when using a custom model).

<ParamField body="name" type="string" required>Model name</ParamField>
<ParamField body="audio_urls" type="array" required>6-24 public audio URLs</ParamField>

```bash theme={null}
curl --request POST \
  --url https://toapis.com/v1/music/generations/createModel \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{"model":"suno","name":"my-voice-model","audio_urls":["https://.../a.mp3","https://.../b.mp3","..."]}'
```

## vox — vocal extraction (\$0.004, legacy)

<ParamField body="task_id" type="string" required>Source task ID</ParamField>
<ParamField body="vocal_start_s" type="number">Vocal range start (seconds, optional)</ParamField>
<ParamField body="vocal_end_s" type="number">Vocal range end (seconds, optional)</ParamField>
<ParamField body="styles" type="string">Style (optional)</ParamField>

<Tip>Deprecated — upstream recommends `persona`.</Tip>

## Response

<ResponseField name="task_id" type="string">Task ID</ResponseField>
<ResponseField name="status" type="string">`submitted`</ResponseField>


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