API de cover a partir de um clip de origem
Descrição do endpoint
O cover a partir de um clip de origem reutiliza um clip de origem que você já enviou, ou que já existe, e gera a partir dele uma nova versão de cover.
Endpoint: POST /api/music/generate-from-source
Cobrança: Pago, atualmente ¥0,6 por chamada por padrão. Enviar o áudio de origem em si é gratuito; a cobrança acontece ao gerar um cover a partir do clip de origem. O valor realmente cobrado segue a configuração de preços atual do back-office.
Max Mode / Variety: este endpoint aceita os parâmetros opcionais max_mode e variety (0-4). Com
max_mode ligado, esta chamada é cobrada em 2× o preço (0,6 → 1,2 ¥ por chamada); variety não custa nada
a mais. O que significam e como enviá-los está na seção "Parâmetros avançados" da
Visão geral da nova API.
Tempos de espera e timeouts (importante): este é um endpoint síncrono — o pedido só é aceito e entregue à geração quando a resposta chega. Pelo medido, a maioria das requisições responde em 1-3 segundos, cerca de 10% leva mais de 30 segundos e a mais longa fica em torno de 230 segundos. Defina o timeout do cliente em 300 segundos ou mais; não receber resposta não significa que nada foi gerado, 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. Veja "Tempos de espera e configuração de timeout" na Visão geral da nova API.
Uso recomendado: é o passo 2 do «cover em duas etapas». No passo 1, envie com a API de upload de áudio de origem (grátis) e guarde o
clip_id; no passo 2, chame este endpoint para iniciar o cover. Assim o áudio só aparece na etapa gratuita: se o envio falhar, basta tentar de novo e nada é cobrado, enquanto o corpo da requisição da etapa cobrada tem apenas algumas centenas de bytes, então dificilmente falhará por causa de um transporte interrompido. A API de upload e cover em uma etapa coloca o áudio inteiro no corpo da requisição, então assim que o áudio passa de cerca de 8 MB ele tende a ser truncado em trânsito e a retornarunexpected end of JSON input(veja "Arquivos grandes e requisições truncadas" naquela página).Além disso, o mesmo
clip_idpode ser reutilizado para Extend, Replace Section, separação e outras ações seguintes, sem precisar enviar o áudio de novo.
Parâmetros da requisição
Headers
| Parâmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
| Authorization | string | sim | Bearer YOUR_API_KEY |
| Content-Type | string | sim | application/json |
Parâmetros do body
| Parâmetro | Tipo | Obrigatório | Padrão | Observações |
|---|---|---|---|---|
| model | string | não | suno-v6 | Nome de modelo de cara ao cliente: suno-v6, suno-v6-wild ou suno-v6-mini |
| sourceClipId | string | sim | - | ID do clip de origem; você pode usar o clip_id devolvido pelo upload de áudio de origem, o song_id real de uma música que já tem, ou o song_id real devolvido quando um upload reforçado é concluído |
| sourceAudioUrl | string | não | - | URL do áudio de origem |
| sourceTitle | string | não | - | Título do áudio de origem |
| prompt | string | não | - | Letra nova ou direção criativa |
| customMode | boolean | não | true | Se usa o modo personalizado |
| style | string | não | - | Tags de estilo |
| title | string | não | - | Título |
| negativeTags | string | não | - | Estilo negativo |
| instrumental | boolean | não | false | Se a música é instrumental |
| waitAudio | boolean | não | false | Se espera o áudio terminar |
| vocalGender | string | não | - | Gênero vocal |
| lyricsMode | string | não | - | Modo de letra |
| weirdnessConstraint | number | não | - | Aleatoriedade |
| styleWeight | number | não | - | Influência do estilo |
| audio_weight | number | não | - | Dependência do áudio de referência, faixa 0.0-1.0; só pode ser enviado quando um clip de origem ou um áudio de referência é fornecido |
weirdnessConstraint, styleWeight e audio_weight usam um decimal de proporção de 0.0 a 1.0, não um inteiro de porcentagem; por exemplo, 50% é 0.5. 0 é um valor válido; só omitir o campo significa "não especificado". audio_weight é mapeado para o metadata.control_sliders.audio_weight do Suno e controla o quanto o resultado se apoia no áudio de referência; só pode ser incluído quando a requisição traz um sourceClipId válido ou um áudio de referência, então não o envie numa geração comum só de texto. Com customMode=true, escreva a letra nova em prompt e forneça style e title juntos; com customMode=false, escreva a descrição criativa em prompt. instrumental e waitAudio devem usar os booleanos JSON true/false.
Este endpoint devolve de forma assíncrona por padrão. Enquanto o status devolvido for pending, um audio_url vazio é normal; espere terminar antes de usar o endereço do áudio. sourceClipId deve ser um ID real de música/clip de origem: não use um task_id, um client_request_id nem um ID de preenchimento pending:.
Que tipo de ID é sourceClipId
sourceClipId é o identificador real de clip do Suno usado como origem deste cover. O objeto de música de cara ao cliente da plataforma costuma nomear esse identificador como song_id, enquanto os parâmetros da requisição de cover mantêm o nome sourceClipId; aqui os dois significam o mesmo ID real de música.
Se a origem for um upload reforçado, consulte primeiro a tarefa de upload reforçado e espere o status virar completed; depois coloque o song_id real devolvido em sourceClipId. Recomenda-se colocar também o audio_url e o title desse resultado em sourceAudioUrl e sourceTitle.
Não coloque o task_id, o client_request_id nem um ID de preenchimento pending:enhanced-upload:* do upload reforçado em sourceClipId.
Exemplo de requisição
curl -X POST https://www.suno-api.io/api/music/generate-from-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"sourceClipId": "uploaded_or_existing_clip_id",
"sourceAudioUrl": "https://example.com/source.mp3",
"sourceTitle": "Título do áudio original",
"prompt": "Nova letra ou direção criativa",
"customMode": true,
"style": "Mandopop, warm vocal",
"title": "Título do cover",
"negativeTags": "noise",
"audio_weight": 0.5,
"instrumental": false,
"waitAudio": false
}'
Resposta
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "new_clip_id",
"song_title": "Título do cover",
"status": "pending"
}
],
"source_update": {}
}
}
Observações
Este endpoint tenta resolver a qual conta o clip de origem pertence. Se o clip de origem não puder ser usado diretamente, o servidor pode enviá-lo de novo com base nas informações do áudio de origem e só então gerar.
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