API de canción completa (Get Full Song)
Descripción del endpoint
La unión de canción completa junta "la canción original + el fragmento recién generado" en una sola canción completa: tras Extend añade el tramo siguiente, y tras Replace Section cose el nuevo fragmento de vuelta en la original. La interfaz web oficial llama a esta capacidad Get Full Song.
Endpoint: POST /api/music/concat
Facturación: De pago, 0,05 CNY fijos por llamada. La unión está desacoplada del precio de generación y no participa en Max Mode ni en los multiplicadores de perfil de voz; el importe realmente cobrado sigue la configuración de precios del back-office.
Tiempos de espera y timeouts (importante): es un endpoint síncrono — el pedido solo se acepta y se entrega a la unión cuando llega la respuesta. Configura el timeout del cliente en 300 segundos o más; no recibir respuesta no significa que no se haya unido nada, y no reintentes justo después de un timeout (eso duplica el pedido y vuelve a cobrar). Si la conexión se cayó, confírmalo más tarde con
GET /api/music/songs.
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 | sí | - | El song_id del fragmento que se va a unir (resultado de Extend o de Replace Section); debe estar completado |
| is_infill | boolean | no | false | false = unión de extensión; true = unión de reemplazo (infill) |
| source_audio_url | string | no | - | Dirección del audio de origen, cuando el fragmento viene de una cuenta externa |
| source_file_name | string | no | - | Nombre del archivo de origen, cuando el fragmento viene de una cuenta externa |
| source_title | string | no | - | Título de origen, cuando el fragmento viene de una cuenta externa |
audio_id, source_clip_id y sourceClipId son formas equivalentes de song_id; usa cualquiera de ellas.
Ejemplo de petición
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 después de reemplazar un tramo, pon is_infill en true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Respuesta
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Título de la canción original",
"status": "queued"
}
]
}
}
La unión devuelve solo 1 resultado (no produce 2 canciones de una vez). Guarda clips[].song_id y sondea la API de consulta de canciones hasta complete antes de descargar el audio.
De dónde sale la duración del resultado
La unión no pega dos archivos uno tras otro sin más; recorta la canción de origen según los puntos de tiempo registrados en el historial del fragmento:
| Modo | Composición del resultado |
|---|---|
is_infill: false |
canción de origen [0 .. continue_at] + la longitud completa del fragmento de extensión |
is_infill: true |
canción de origen [0 .. inicio] + el nuevo fragmento reemplazado + canción de origen [fin .. final de la pista] |
Por eso el audio original posterior al punto de continuación se descarta y no aparece ningún tramo duplicado.
Notas
- Solo se pueden unir fragmentos completados; si un fragmento aún se está generando, espera a que termine.
- El resultado es un registro nuevo; el fragmento original se conserva y sigue siendo utilizable.
- Para combinar dos canciones distintas en una, usa la API de mashup; para quedarte solo con un tramo, usa la API de recorte.
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