Visão geral da documentação da Suno API
Basta registrar-se com um e-mail para criar uma chave de API. Cada geração custa ¥0,6 e devolve 2 músicas, cobrindo download em MP3/WAV, covers, Extend, separação de stems e clonagem de voz. URL base: https://www.suno-api.io.
Esta página apresenta os modelos disponíveis, todos os endpoints de geração e edição, como funciona a cobrança e a ordem recomendada de leitura. Se é a sua primeira integração, leia de cima para baixo; os roteiros de investigação de 401/403/429 também estão aqui.
Respostas rápidas
Como obtenho uma chave de API? Registe-se com um e-mail, abra o console, vá a gestão de tokens e crie um token. Não é preciso número de telefone nem cartão.
Quanto custa cada chamada? Uma geração custa ¥0,6 e devolve 2 músicas. Consultas de estado, WAV, letras com marcação temporal e sugestões de prompt não têm custo adicional.
Que modelos são suportados? suno-v6 (predefinido), suno-v6-wild e suno-v6-mini. Os modelos de geração normal v5.5 e anteriores foram retirados; os trabalhos existentes não são afetados.
Qual é a URL base? https://www.suno-api.io, com o cabeçalho Authorization: Bearer YOUR_API_KEY.
Modelos disponíveis neste momento
Os modelos que o cliente pode indicar na geração normal de músicas são suno-v6, suno-v6-wild e suno-v6-mini. Se model for omitido, é usado suno-v6.
Os modelos normais suno-v2, suno-v3, suno-v3-5, suno-v4, suno-v4-5, suno-v4-5-all, suno-v4-5-plus, suno-v5 e suno-v5-5 foram retirados. Tarefas históricas podem ainda mostrar esses nomes, mas isso é apenas histórico e não significa que o modelo possa ser usado em novos pedidos. A separação de stems é a exceção — ver API de stems (separação de voz/acompanhamento).
Autenticação
Todos os endpoints públicos com chave de API usam os mesmos cabeçalhos:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
URL base:
https://www.suno-api.io
Convenções gerais dos parâmetros
- Um
numberno corpo do pedido tem de ser um número JSON, nunca uma percentagem em texto. Uma intensidade de 50% escreve-se0.5, nunca50ou50%. - Um
booleantem de sertrueoufalse. Não envietrue,false,0ou1como substitutos. - Os campos marcados como "não" podem ser omitidos por completo. Quando não tiver a certeza do que um parâmetro faz, omita-o e deixe o serviço usar o comportamento predefinido; não envie uma string vazia,
nullou0em vez de "não enviado", porque0é um valor válido em alguns campos numéricos. - Os nomes dos campos são sensíveis à grafia. Cada página de endpoint lista o campo recomendado e os aliases compatíveis; envie exatamente como a tabela mostra. Onde a documentação diz que snake_case e camelCase são ambos aceites, não envie os dois ao mesmo tempo.
- Todos os campos de duração terminados em
_souSecondsestão em segundos e aceitam decimais. Os timestamps Unix são descritos em separado, incluindo se estão em segundos ou milissegundos. - Um ID que começa por
pending:é um marcador de posição da plataforma, não um ID real de música. Use-o apenas onde o endpoint documenta explicitamente esse suporte; caso contrário, aguarde osong_idreal.
Limites de campos de texto
Exceder um limite devolve HTTP 400 diretamente: nada é gerado, nada é pré-cobrado e nenhum registo de tarefa é criado. A contagem é feita por caracteres Unicode (um caractere chinês conta como 1) e os espaços no início e no fim também contam.
| Campo (incluindo os aliases documentados em cada endpoint) | Limite |
|---|---|
prompt / lyrics / description / theme / gpt_description_prompt |
3000 caracteres |
style_tags / tags / style / original_tags |
1000 caracteres |
negative_tags |
1000 caracteres |
song_title / title |
100 caracteres |
A message de erro indica o campo em falta e o comprimento medido, por isso esses dois números bastam para ajustar o texto:
{
"error": {
"message": "style_tags must not exceed 1000 characters; received 2772",
"type": "invalid_request_error"
}
}
Aplica-se a: /api/music/create, /api/music/create/custom, /api/music/extend, /api/music/upload-cover, /api/music/generate-from-source, /api/music/add-instrumental, /api/music/add-vocal, /api/music/add-stem, /api/music/mashup, /api/music/sample, /api/music/inspo, /api/music/crop, /api/music/remove-section, /api/music/fade, /api/music/reverse, /api/music/speed, /api/music/replace-section, /api/music/generate-with-voice.
Uma exceção: o campo description de POST /api/music/sounds está limitado a 100 caracteres, porque o caminho dos efeitos sonoros usa o limite mais curto da plataforma.
Geração assíncrona e endereços de áudio
Os endpoints de geração musical funcionam de forma assíncrona por predefinição. Quando a primeira resposta traz status igual a pending, submitted ou processing, um audio_url, video_url ou cover_url vazio é normal e não significa que a tarefa falhou. Guarde o song_id real (ou o client_request_id devolvido) e faça polling no endpoint de consulta correspondente; só leia e descarregue um endereço de áudio quando o estado estiver concluído.
⚠️ Os endereços de áudio expiram em 7 dias — transfira os ficheiros a tempo
audio_url,wav_url,video_urle os endereços devolvidos pelos endpoints de download são servidos pelo armazenamento de objetos da plataforma e expiram por predefinição após 7 dias (os ficheiros são reciclados; um endereço antigo devolve 404 / falha o download).
- Nesses 7 dias, mova os ficheiros para o seu próprio armazenamento (o seu armazenamento de objetos, uma CDN ou um disco de servidor). Não trate os nossos endereços como ligações de longa duração.
- Um endereço expirado não exige regenerar a música e não custa nada extra: volte a chamar a API de consulta de músicas (ou a API de download de media) para obter um endereço novo e válido para essa música.
Tempos de espera e configuração de timeout
Os endpoints de geração são síncronos: o pedido só é aceite e entregue à plataforma quando a resposta chega. Antes disso, o serviço tem de agendar uma conta e passar a verificação de segurança necessária, e não existe resposta intermédia — nenhum outro endpoint consegue ver o pedido. Por isso, a única prova fiável de que "algo foi gerado" é a própria resposta, não aquilo que se observa enquanto se espera.
Tempos de espera medidos (produção, família /api/music/create, 2026-09-18 a 2026-09-20)
| Percentil | Espera |
|---|---|
| p50 | cerca de 1,2–1,6 s |
| p75 | cerca de 2–6 s |
| p90 | cerca de 42–49 s |
| p95 | cerca de 48–76 s |
| p99 | cerca de 109–160 s |
| máximo | cerca de 230 s |
- Cerca de 10% dos pedidos demoram mais de 30 segundos e cerca de 1% demora 1–2 minutos. Um pedido lento costuma significar que este teve de passar primeiro por uma verificação de segurança.
- Os campos do pedido, a forma da resposta, os códigos de erro e a cobrança não mudaram, pelo que as integrações existentes só precisam de aumentar o timeout do cliente — nenhuma outra alteração de código.
Requisitos de integração
- Defina o timeout do cliente para 300 segundos ou mais. Clientes com 30, 60 ou 120 segundos por predefinição desligam-se durante a espera.
- Não receber resposta não significa que nada foi gerado. Com um timeout ou ligação caída, o pedido pode já ter sido aceite e estar a gerar.
- Não repita imediatamente após um timeout: uma submissão duplicada cria um segundo pedido e volta a cobrar.
- Se a ligação caiu, liste as suas músicas com
GET /api/music/songs(mais recentes primeiro) um pouco mais tarde — os pedidos aceites aparecem normalmente. Só volte a submeter depois de confirmar que o pedido não existe. - Ao reportar um problema, inclua o cabeçalho de resposta
X-Oneapi-Request-Idpara que o pedido exato possa ser localizado.
Prefere não manter uma ligação longa? Use o modo de recibo de aceitação. POST /api/music/create e POST /api/music/create/custom aceitam um recibo opcional: acrescente "accept_mode": "async" ao corpo (ou o cabeçalho X-Accept-Mode: async) e o endpoint devolve 202 de imediato com um número de recibo, enquanto a geração continua em segundo plano; consulte o progresso em GET /api/music/requests/{request_id}. Um cliente com apenas algumas dezenas de segundos de timeout deixa de poder confundir "sem resposta" com "nada gerado" e deixa de poder cobrar duas vezes por repetições. Ver "Modo de recibo de aceitação" na API de geração em modo simples.
Para referência:
python requestsusatimeout=300,urllibusaurlopen(..., timeout=300), Node usareq.setTimeout(300000), curl usa--max-time 300.
Lista de endpoints recomendados
| Capacidade | Método | Caminho | Nota de cobrança | Documentação |
|---|---|---|---|---|
| Saldo da conta | GET | /api/user/balance |
Grátis | Ver |
| Geração em modo simples | POST | /api/music/create |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Geração em modo personalizado | POST | /api/music/create/custom |
Pago; suporta género vocal, influência de estilo e aleatoriedade | Ver |
| Geração de fala (Speech) | POST | /api/music/speech |
Pago, atualmente ¥0,6 por chamada por predefinição; música de fundo opcional | Ver |
| Progresso do recibo de aceitação | GET | /api/music/requests/{request_id} |
Grátis; usado com accept_mode=async |
Ver |
| Efeitos sonoros | POST | /api/music/sounds |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Geração de letras | POST | /api/lyrics/generate |
Grátis dentro da quota (10/min, 300/dia), depois ¥0,1 por chamada | Ver |
| Criação de perfil de voz (recomendado) | POST | /api/music/voice-profile/create |
Grátis (enhanced=true é cobrado ao preço de clone reforçado) |
Ver |
| Cover com a sua voz (recomendado) | POST | /api/music/voice-profile/cover |
¥1,2 por chamada; ¥2,4 com Max Mode | Ver |
| Lista / detalhe / eliminar vozes (recomendado) | GET/POST | /api/music/voice-profile/list, /{voice_id}, /delete |
Grátis | Ver |
| Clone de voz (cadeia antiga, não recomendado) | POST | /api/voice/clone/validate |
Grátis | Ver |
| Consultar uma tarefa de clone de voz | GET | /api/voice/clone/tasks/:voice_task_id |
Grátis | Ver |
| Regenerar o texto de verificação | POST | /api/voice/clone/tasks/:voice_task_id/regenerate |
Grátis | Ver |
| Submeter o áudio de verificação e criar a voz | POST | /api/voice/clone/tasks/:voice_task_id/generate |
Cobrado pelas regras de clone de voz | Ver |
| Verificar se a voz clonada é utilizável | POST | /api/voice/clone/tasks/:voice_task_id/check |
Grátis | Ver |
| Eliminar uma voz clonada | DELETE | /api/voice/clone/voices/:voice_task_id |
Grátis | Ver |
| Gerar com uma voz escolhida | POST | /api/music/generate-with-voice |
Pago, ¥1,2 por chamada; ¥2,4 com Max Mode | Ver |
| Consultar resultados de uma voz escolhida | GET | /api/music/generate-with-voice/results |
Grátis | Ver |
| Reforço de estilo | POST | /api/music/boost-style |
Grátis dentro da quota (10/min, 300/dia), depois ¥0,1 por chamada | Ver |
| Sugestões de prompt | POST | /api/prompts/suggestions |
Grátis dentro da quota (10/min, 300/dia), depois ¥0,1 por chamada | Ver |
| Carregar áudio de origem | POST | /api/music/upload-source |
Grátis | Ver |
| Submeter upload reforçado | POST | /api/music/enhanced-upload |
Pago, ¥10 por chamada | Ver |
| Listar tarefas de upload reforçado | GET | /api/music/enhanced-upload |
Grátis | Ver |
| Consultar uma tarefa de upload reforçado | GET | /api/music/enhanced-upload/:id |
Grátis | Ver |
| Cancelar uma tarefa de upload reforçado | POST | /api/music/enhanced-upload/:id/cancel |
Grátis; só as fases canceláveis são reembolsadas | Ver |
| Carregar e fazer cover | POST | /api/music/upload-cover |
Pago, atualmente ¥0,6 por chamada por predefinição; para áudio grande prefira o fluxo em dois passos upload-source + generate-from-source |
Ver |
| Cover a partir de um clip de origem | POST | /api/music/generate-from-source |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Extend | POST | /api/music/extend |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Substituir secção | POST | /api/music/replace-section |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Get Full Song | POST | /api/music/concat |
Pago, fixo ¥0,05 por chamada | Ver |
| Remaster | POST | /api/music/remaster |
Pago, atualmente ¥0,6 por chamada por predefinição | Ver |
| Adicionar instrumental | POST | /api/music/add-instrumental |
Pago, cobrado pelo modelo pedido | Ver |
| Adicionar vocal | POST | /api/music/add-vocal |
Pago, cobrado pelo modelo pedido | Ver |
| Adicionar faixa | POST | /api/music/add-stem |
Pago, cobrado pelo modelo pedido | Ver |
| Mashup | POST | /api/music/mashup |
Pago, cobrado pelo modelo pedido | Ver |
| Sample | POST | /api/music/sample |
Pago, cobrado pelo modelo pedido | Ver |
| Inspo | POST | /api/music/inspo |
Pago, cobrado pelo modelo pedido | Ver |
| Crop | POST | /api/music/crop |
Pago, cobrado pelo modelo pedido | Ver |
| Remover secção | POST | /api/music/remove-section |
Pago, cobrado pelo modelo pedido | Ver |
| Fade in/out | POST | /api/music/fade |
Pago, cobrado pelo modelo pedido | Ver |
| Reverse | POST | /api/music/reverse |
Pago, cobrado pelo modelo pedido | Ver |
| Speed | POST | /api/music/speed |
Pago, cobrado pelo modelo pedido | Ver |
| Stems (separação de voz/acompanhamento) | POST | /api/music/separate |
Pago; two ¥0,6 por chamada por predefinição, twelve ¥3,0 |
Ver |
| Remoção de voz | POST | /api/music/vocal-removal |
Grátis | Ver |
| Eliminar stems | POST | /api/music/stem-delete |
Grátis | Ver |
| Gerar/obter WAV | POST | /api/music/wav |
Grátis | Ver |
| Obter MIDI | POST | /api/music/download-file (kind=midi) |
Grátis | Ver |
| Endereço de media / stream de pré-visualização | POST | /api/music/download-url, /api/music/generation-stream-url |
Grátis | Ver |
| Download de ficheiro da música | POST | /api/music/download-file |
Grátis | Ver |
| Download do pacote da música | POST | /api/music/download-all |
Grátis | Ver |
| Endereço de download estável | GET | /api/music/download |
Grátis | Ver |
| Download Free2 | POST | /api/music/free2 |
Pago, ¥0,2 por música com sucesso | Ver |
| Consultar o estado de uma música | POST | /api/music/query |
Grátis | Ver |
| Histórico de músicas da conta | GET | /api/music/songs |
Grátis | Ver |
| Parâmetros de geração da música | GET | /api/music/songs/:song_id |
Grátis | Ver |
| Letras com marcação temporal | POST | /api/lyrics/timeline |
Grátis | Ver |
| Elegibilidade e identidade de licença | GET | /api/music/authorization/context |
Grátis | Ver |
| Associar identidade de licença | POST | /api/music/authorization/identity |
Grátis; não pode ser alterada após confirmação | Ver |
| Listar músicas licenciáveis | GET | /api/music/authorization/songs |
Grátis; exige identidade associada | Ver |
| Emitir licença comercial | POST | /api/music/authorization/certificates |
Grátis; exige elegibilidade | Ver |
| Histórico de licenças | GET | /api/music/authorization/certificates |
Grátis | Ver |
| Detalhe da licença | GET | /api/music/authorization/certificates/:id |
Grátis | Ver |
| Descarregar o PDF da licença | GET | /api/music/authorization/certificates/:id/download |
Grátis | Ver |
Os endpoints
/api/voice/clone/*e/api/music/generate-with-voicepertencem à cadeia inicial de clonagem de voz e não são recomendados para novas integrações; use antes a 【Recomendado】 API de perfil de voz.
Parâmetros avançados: Max Mode e Variety
Os endpoints de geração suportam estes dois parâmetros opcionais (omitir mantém o comportamento e o preço anteriores):
| Parâmetro | Tipo | Intervalo | Notas |
|---|---|---|---|
| max_mode | boolean | true / false |
Usa mais capacidade de cálculo para melhorar a consistência da música inteira; este pedido é cobrado ao dobro do preço |
| variety | integer | 0-4 |
Grau de variação estilística: 0=Off, 1=Normal, 2=High, 3=Extra, 4=Max. Omitir usa o nível predefinido do modelo (a família v6 usa 1); sem custo adicional |
Endpoints que os suportam: POST /api/music/create, POST /api/music/create/custom,
POST /api/music/extend, POST /api/music/upload-cover, POST /api/music/generate-from-source,
POST /api/music/add-instrumental, POST /api/music/add-vocal, POST /api/music/add-stem,
POST /api/music/mashup, POST /api/music/sample, POST /api/music/inspo,
POST /api/music/replace-section, POST /api/music/voice-profile/cover, POST /api/music/speech.
- O dobro do preço na prática: um endpoint que custa ¥0,6 por chamada passa a ¥1,2 com
max_mode; gerar com uma voz escolhida custa ¥1,2 por chamada e ¥2,4 com Max Mode; o cover de voz da 【Recomendado】 API de perfil de voz também custa ¥1,2 por chamada (¥2,4 commax_mode). varietysó se aplica à famíliasuno-v6(suno-v6,suno-v6-wild,suno-v6-mini); enviá-lo com qualquer outro modelo devolve 400.- Efeitos sonoros, stems, concat, WAV e as ações de edição do Studio (crop, remover secção, fade, reverse, speed e afins) não aceitam estes parâmetros — enviá-los explicitamente devolve 400, para que um parâmetro nunca seja ignorado em silêncio.
varietyé o inteiro 0-4;style_weighteweirdness_constraintsão decimais de 0 a 1, portanto as escalas são diferentes.
Campos de resposta comuns das músicas
Os endpoints de geração, cover, extend, separação e consulta devolvem normalmente um array de músicas com estes campos:
| Campo | Tipo | Notas |
|---|---|---|
song_id |
string | ID da música ou da tarefa |
song_title |
string | Título da música |
status |
string | Estado como pending, completed, failed |
audio_url |
string | Endereço do áudio, devolvido quando a geração termina |
video_url |
string | Endereço do vídeo, pode estar vazio |
cover_url |
string | Endereço da imagem de capa |
lyrics |
string | Texto da letra |
style_tags |
string | Etiquetas de estilo |
duration |
number | Duração do áudio em segundos |
created_at |
string | Data de criação |
model_version |
string | Versão do modelo |
generation_type |
string | Tipo de geração |
error_message |
string | Motivo da falha |
Quatro passos para integrar (exemplo mínimo)
Com estes quatro passos obtém a sua primeira música; a lista completa de campos de cada passo está na página correspondente da lista de endpoints recomendados.
# 1) Submeter uma geração: ¥0,6, devolve 2 músicas
curl -X POST https://www.suno-api.io/api/music/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "bright Brazilian pop, piano intro, warm female vocal", "model": "suno-v6"}'
# 2) Fazer polling até status ser completed (3-5 segundos é um bom intervalo)
curl -X POST https://www.suno-api.io/api/music/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "o song_id devolvido no passo 1"}'
# 3) Obter um endereço de media: os endpoints de leitura são grátis; song / wav / video / cover / midi
curl -X POST https://www.suno-api.io/api/music/download-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "o mesmo song_id", "kind": "song"}'
Quando algo falha: 401 / 402 / 403 / 429 estão no guia de erros; timeouts e cobranças duplicadas na secção "Tempos de espera e configuração de timeout" acima; o detalhe de cada endpoint na lista de endpoints recomendados abaixo.
Recomendações
- Novas integrações devem usar
suno-v6em todos os pedidos. - Nos endpoints que indicam um preço predefinido, o valor cobrado segue a configuração de preços atual do back office e o modelo pedido.
- Os endpoints de geração devolvem normalmente uma tarefa primeiro; leia o áudio final através de
/api/music/query. wait_completion=truebloqueia até terminar e serve para testes de baixo volume; em produção prefira o polling.- Os endpoints de geração podem demorar bastante a responder — defina o timeout do cliente para 300 segundos ou mais e lembre-se de que "sem resposta" não é o mesmo que "nada gerado"; ver acima "Tempos de espera e configuração de timeout".
- As capacidades de upload, cover, substituição e WAV dependem das contas da plataforma e das permissões do clip de origem; quando falham, leia primeiro o
messageou oerror_messagedevolvido.
Sobre esta documentação
Esta página foi reorganizada em torno das capacidades que a Create UI expõe na prática, e as novas integrações devem lê-la primeiro. A documentação antiga da API continua disponível na secção "Documentação antiga da API (compatível)" para quem quiser manter o método anterior.
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