API de música completa (Get Full Song)
Descrição do endpoint
A união de música completa junta "a música original + o fragmento recém-gerado" numa única música completa: após Extend acrescenta a parte seguinte, e após Replace Section cose o novo fragmento de volta na original. A interface web oficial chama a esta capacidade Get Full Song.
Endpoint: POST /api/music/concat
Cobrança: Pago, 0,05 CNY fixos por chamada. A união está desacoplada do preço de geração e não participa no Max Mode nem nos multiplicadores de perfil de voz; o valor realmente debitado segue a configuração de preços do back-office.
Tempos de espera e timeouts (importante): este é um endpoint síncrono — o pedido só é aceito e entregue à união quando a resposta chega. Defina o timeout do cliente em 300 segundos ou mais; não receber resposta não significa que nada foi unido, e não repita logo após um timeout (isso duplica o pedido e cobra de novo). Se a conexão caiu, confirme depois com
GET /api/music/songs.
Autenticação
| Parâmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
| Authorization | string | sim | Bearer YOUR_API_KEY |
| Content-Type | string | sim | application/json |
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Padrão | Observações |
|---|---|---|---|---|
| song_id | string | sim | - | O song_id do fragmento a unir (resultado de Extend ou de Replace Section); precisa estar concluído |
| is_infill | boolean | não | false | false = união de extensão; true = união de substituição (infill) |
| source_audio_url | string | não | - | Endereço do áudio de origem, quando o fragmento vem de outra conta |
| source_file_name | string | não | - | Nome do arquivo de origem, quando o fragmento vem de outra conta |
| source_title | string | não | - | Título de origem, quando o fragmento vem de outra conta |
audio_id, source_clip_id e sourceClipId são formas equivalentes de song_id; use qualquer uma.
Exemplo de requisição
curl -X POST https://www.suno-api.io/api/music/concat \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "extended_or_replaced_clip_id",
"is_infill": false
}'
Para unir depois de substituir um trecho, defina is_infill como true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Resposta
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Título da música de origem",
"status": "queued"
}
]
}
}
A união devolve apenas 1 resultado (não produz 2 músicas de uma vez). Salve clips[].song_id e faça polling na API de consulta de músicas até complete antes de buscar o áudio.
De onde vem a duração do resultado
A união não cola dois arquivos simplesmente um atrás do outro; recorta a música de origem segundo os pontos de tempo registados no histórico do fragmento:
| Modo | Composição do resultado |
|---|---|
is_infill: false |
música de origem [0 .. continue_at] + o comprimento total do fragmento de extensão |
is_infill: true |
música de origem [0 .. início] + o novo fragmento substituído + música de origem [fim .. final da faixa] |
Por isso o áudio original posterior ao ponto de continuação é descartado e não aparece nenhum trecho duplicado.
Observações
- Só é possível unir fragmentos concluídos; se o fragmento ainda estiver a ser gerado, espere que termine.
- O resultado é um novo registo; o fragmento original mantém-se e continua utilizável.
- Para combinar duas músicas diferentes numa só, use a API de mashup; para ficar só com um trecho, use a API de corte.
Obter uma chave de API
Crie uma chave de API no console após o cadastro. Cada geração custa ¥0,6 e devolve 2 faixas, os downloads são ilimitados e não é preciso número de telefone.
Obter chave de API Voltar à visão geral