API de download e pré-visualização de mídia de músicas

Atualizado em 2026-09-18 · equipe Suno-API

Descrição do endpoint

Este grupo de endpoints separa "obter um endereço de mídia" de "baixar o arquivo de fato":

Cobrança: Tudo grátis. Download e pré-visualização apenas leem mídia que a plataforma já hospeda; não chamam o Suno e não geram cobrança.

Modelo recomendado: suno-v6. Você pode usar suno-v6, suno-v6-wild ou suno-v6-mini.

Autenticação

Parâmetro Tipo Obrigatório Observações
Authorization string sim Bearer YOUR_API_KEY (GET /api/music/download também aceita sessão de navegador)
Content-Type string sim application/json

Tipos de mídia suportados (kind)

kind Observações
song Áudio (mp3 é o alias e o padrão; nas respostas é sempre devolvido como song)
wav Arquivo WAV; é preciso preparar antes com a API de geração/obtenção de WAV
video Vídeo (mp4 é um alias)
midi MIDI por stem; válido apenas para stems cuja separação já terminou — veja a API de obtenção de MIDI
cover Imagem de capa (image é um alias)
lyrics Texto da letra (.txt); só pode ser obtido com download-file / GET /api/music/download — o download-url não devolve endereço de letra
timestamped_lyrics Arquivo de letra com marcas de tempo (.lrc, alias lrc). Atualmente só algumas músicas são suportadas; quando devolve success:false, use a API de letras com marcas de tempo para obter a linha do tempo e gerar o arquivo você mesmo

1) Obter um endereço de mídia

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": "song_id", "kind": "song"}'
{
  "code": 200,
  "message": "success",
  "data": {
    "song_id": "song_id",
    "kind": "song",
    "url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
    "nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
  }
}
Parâmetro Tipo Obrigatório Observações
song_id string sim O ID da sua própria música
kind string não Ver a tabela acima; padrão song
refresh boolean não Passar true força a preparar o recurso de novo (por exemplo, depois que o arquivo na CDN foi recuperado)

url serve para reproduzir ou copiar por conta própria; nav_url traz Content-Disposition: attachment, o que permite colar direto na barra de endereços do navegador para baixar (útil quando alguns navegadores móveis não suportam download por blob).

⚠️ Validade do endereço: 7 dias — copie o arquivo a tempo

url / nav_url apontam para o armazenamento de objetos da plataforma e expiram por padrão após 7 dias (os arquivos são recuperados e o endereço antigo devolve 404). Copie os arquivos para o seu próprio armazenamento dentro desses 7 dias.

Depois de expirar, não é preciso gerar a música de novo: basta chamar POST /api/music/download-url novamente (ou passar refresh: true) para obter endereços novos e válidos dessa música. Este grupo de endpoints é gratuito e não acrescenta cobrança.

2) Baixar um único arquivo diretamente

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}' \
  -o song.mp3

O corpo da resposta é um fluxo de arquivo (não JSON) e o Content-Disposition já traz o nome do arquivo. A letra e a letra com marcas de tempo só podem ser obtidas com este endpoint (o download-url devolve apenas endereços de mídia, não a letra). O arquivo .lrc atualmente só é suportado em algumas músicas; se devolver success:false, gere o .lrc você mesmo com a API de letras com marcas de tempo conforme a próxima seção, e não repita a chamada.

Como obter letras com marcas de tempo (.lrc)

Recomendamos dois passos, que servem para qualquer música:

Passo 1: obter a linha do tempo palavra por palavra (grátis)

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "suno-v6", "song_id": "song_id"}'

A resposta é um array direto (sem invólucro data); cada elemento tem a forma {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}. O word já contém quebras de linha, então dá para separar por linha; para o significado dos campos, o filtro de trechos instrumentais e outras ressalvas veja os "Campos" e as "Notas de uso" da API de letras com marcas de tempo.

Passo 2: montar o .lrc você mesmo a partir de start_s (formato de tempo [mm:ss.cc])

def to_lrc(segments):
    lines = []
    for seg in segments:
        text = seg["word"].strip()
        if not text:
            continue
        start = max(0.0, float(seg["start_s"]))
        cs = int(start * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

GET /api/music/download?song_id=<id>&kind=lrc também baixa diretamente o .lrc gerado pelo servidor, mas atualmente só algumas músicas são suportadas: se devolver success:false, gere você mesmo como acima — não é preciso repetir a chamada e a cobrança não é afetada.

3) Download em pacote

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}' \
  -o songs.zip

Use song_id (um único) ou song_ids (lote, até 50 itens). O corpo da resposta é um fluxo ZIP.

4) Endereço de download estável

GET /api/music/download?song_id=<id>&kind=<kind> é o ponto de entrada de download que aparece diretamente nas respostas de música. Aceita tanto uma chave de API quanto uma sessão de navegador, tem o mesmo comportamento do download-file e é adequado para fixar em um cliente ou player de terceiros.

5) Pré-escuta durante a geração

curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
  "code": 200,
  "message": "success",
  "data": {
    "items": [
      {
        "song_id": "song_id_1",
        "url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
        "expires_at": 0,
        "content_type": "audio/mpeg",
        "playable_until_completed": false,
        "mode": "mp3",
        "ranges": true
      }
    ]
  }
}
Parâmetro Tipo Obrigatório Observações
song_id string não Um único ID de música
song_ids string[] não Lote, até 24 itens (o máximo de stems de um lote de separação automática)

Um playable_until_completed igual a true indica um endereço temporário de pré-escuta de uma música em geração; troque pelo endereço definitivo quando a música terminar. Se uma música falhar, esse item traz um campo error e as demais são devolvidas normalmente.

Observações

PróximoAPI de download Free2

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