API de descarga Free2
Descripción del endpoint
Free2 es un canal de descarga de pago independiente: resuelve archivos MP3/WAV/letra/metadatos a partir de un ID de canción (o de un enlace de canción de suno.com) y devuelve direcciones de descarga alojadas por la plataforma. Solo acepta una clave de API — no acepta una sesión de navegador — y la respuesta nunca contiene el origen de reproducción cifrado de Suno.
Endpoint: POST /api/music/free2
Facturación: Se cobra por canción resuelta con éxito, actualmente 0,2 CNY por canción por defecto. Elegir varios tipos de archivo en una misma petición no cuesta más; las canciones que no se resuelven no se cobran. Como máximo 10 canciones por petición (tras deduplicar); el importe realmente cobrado sigue la configuración de precios del back-office.
Modelo recomendado: suno-v6. Se pueden usar suno-v6, suno-v6-wild y suno-v6-mini.
Autenticación
| Parámetro | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Authorization | string | sí | Bearer YOUR_API_KEY |
| Content-Type | string | sí | application/json |
Parámetros de la petición
| Parámetro | Tipo | Obligatorio | Por defecto | Notas |
|---|---|---|---|---|
| song_id | string | no | - | Un ID de canción; también vale un enlace de canción de suno.com (incluido el enlace corto /s/) |
| song_ids | string[] | no | - | Forma para varias canciones (recomendada); como máximo 10 por petición |
| songs | string[] | no | - | Alias de song_ids |
| files | string[] | sí | - | Los tipos de archivo que necesitas: mp3, wav, lyrics, metadata; m4a no está soportado |
Indica al menos uno de song_id y song_ids; indica al menos un elemento en files.
Ejemplo de petición
curl -X POST https://www.suno-api.io/api/music/free2 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_ids": ["song_id_1", "song_id_2"],
"files": ["mp3", "wav", "lyrics"]
}'
Respuesta
{
"code": 200,
"message": "success",
"data": {
"songs": [
{
"song_id": "song_id_1",
"files": [
{"type": "mp3", "url": "https://media.suno-api.io/assets/song_id_1-free2-v1-mp3.mp3"}
]
},
{
"song_id": "song_id_2",
"files": [],
"error": {"code": "song_not_found", "message": "song not found or not owned by the current user"}
}
],
"requested_songs": 2,
"succeeded_songs": 1,
"price": 0.2
}
}
| Campo | Tipo | Notas |
|---|---|---|
| songs | array | Resultado por canción: song_id, files[] y error en caso de fallo |
| requested_songs | number | Número de canciones tras normalizar y deduplicar |
| succeeded_songs | number | Número de éxitos; la facturación se basa en este número |
| price | number | Importe realmente cobrado en esta llamada (yuanes) |
Cuando solo se pide una canción, la respuesta devuelve además song_id y files en el nivel superior, por compatibilidad con la forma antigua de una sola canción.
Reutilizar direcciones en caché (sin cargo)
Para una canción que ya has descargado, volver a descargarla no necesita una nueva resolución y no se cobra otra vez: usa POST /api/music/free2/cached para obtener las direcciones actuales de los archivos que esta cuenta descargó antes.
Endpoint: POST /api/music/free2/cached
Facturación: Gratis. Es una caché de solo lectura: no resuelve, no transcodifica y no cobra; solo devuelve direcciones ya preparadas y no reclamadas.
⚠️ Validez de la dirección de descarga: 7 días, guárdala a tiempo.
songs[].files[].urllo sirve el almacenamiento de objetos de la plataforma y caduca por defecto a los 7 días (los archivos se reclaman y la dirección antigua devuelve 404); guárdalos en tu propio almacenamiento dentro de esos 7 días. Cuando una dirección caduque, vuelve a llamar aPOST /api/music/free2para prepararla de nuevo y obtener una dirección válida (esa re-preparación se cobra según las reglas normales;/api/music/free2/cachedsolo devuelve direcciones de caché que siguen siendo válidas).
Parámetros de la petición: idénticos a POST /api/music/free2 (cualquiera de song_id / song_ids / songs, y al menos un elemento en files).
curl -X POST https://www.suno-api.io/api/music/free2/cached \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "song_ids": ["98ca3f1d-…", "a185b3d9-…"], "files": ["mp3"] }'
{
"success": true,
"data": {
"items": [
{ "song_id": "98ca3f1d-…", "type": "mp3", "url": "https://…/assets/98ca3f1d-…-free2-v1-mp3.mp3" }
],
"songs": [
{ "song_id": "98ca3f1d-…", "files": [ { "type": "mp3", "url": "https://…" } ], "missing_files": [] },
{ "song_id": "a185b3d9-…", "files": [], "missing_files": ["mp3"] }
],
"missing": ["a185b3d9-…"]
}
}
| Campo | Tipo | Notas |
|---|---|---|
| items | array | Lista de direcciones listas para descargar (song_id + type + url) |
| songs | array | Resultados por canción; missing_files son los formatos que no acertaron en la caché esta vez |
| missing | string[] | Esta canción no tiene ninguna caché utilizable (hay que volver a resolverla con POST /api/music/free2, y ese paso se cobra por canción) |
Solo se devuelven direcciones para canciones que has descargado antes; las canciones sin registro de descarga, o cuyos activos ya se han reclamado, aparecen solo en missing y no devuelven ninguna dirección.
Notas
POST /api/music/free2puede resolver cualquier canción pública de Suno (incluidas canciones que no están en esta plataforma); cuando una canción no se puede resolver se devuelve unerrorsolo para esa canción y las demás del mismo lote no se ven afectadas. En cambio,POST /api/music/free2/cachedsolo devuelve direcciones de canciones que esta cuenta ha descargado.- La primera resolución de una canción crea los archivos alojados, que después se reutilizan; no pases tipos duplicados en
files, el servidor deduplica automáticamente. - Diferencia con la API de descarga y previsualización de medios de canciones: Free2 es de pago, admite pasar enlaces de suno.com directamente y no ofrece tipos como timeline/MIDI más allá de la letra.
Obtener una clave de API
Crea una clave de API en la consola después de registrarte. Cada generación cuesta 0,6 ¥ y devuelve 2 pistas, las descargas son ilimitadas y no hace falta número de teléfono.
Obtener clave de API Volver al resumen