API de cover desde un clip de origen

Actualizado el 2026-09-18 · equipo de Suno-API

Descripción del endpoint

El cover desde un clip de origen reutiliza un clip de origen que ya has subido, o que ya existe, y genera a partir de él una nueva versión de cover.

Endpoint: POST /api/music/generate-from-source

Facturación: De pago, actualmente 0,6 ¥ por llamada por defecto. Subir el audio de origen en sí es gratis; el cargo se aplica al generar un cover a partir del clip de origen. El importe realmente cobrado sigue la configuración de precios actual del back-office.

Max Mode / Variety: este endpoint admite los parámetros opcionales max_mode y variety (0-4). Con max_mode activado, esta llamada se factura al doble (0,6 → 1,2 ¥ por llamada); variety no cuesta nada extra. Qué significan y cómo enviarlos está en la sección «Parámetros avanzados» del Resumen de la nueva API.

Tiempos de espera y timeouts (importante): es un endpoint síncrono — el pedido solo se acepta y se entrega a generación cuando llega la respuesta. Según lo medido, la mayoría de las peticiones responden en 1-3 segundos, alrededor del 10% tardan más de 30 segundos y la más lenta ronda los 230 segundos. Configura el timeout del cliente en 300 segundos o más; no recibir respuesta no significa que no se haya generado 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. Consulta «Tiempos de espera y configuración de timeout» en el Resumen de la nueva API.

Uso recomendado: es el paso 2 del «cover en dos pasos». En el paso 1, sube con la API de subida de audio de origen (gratis) y guarda el clip_id; en el paso 2, llama a este endpoint para lanzar el cover. Así el audio solo aparece en el paso gratuito: si la subida sale mal, basta con reintentar y no se cobra nada, mientras que el cuerpo de la petición del paso que sí se cobra tiene solo unos cientos de bytes, así que difícilmente fallará porque el transporte se haya cortado. La API de subida y cover en un paso mete el audio completo en el cuerpo de la petición, así que en cuanto el audio supera unos 8 MB es fácil que se trunque en tránsito y devuelva unexpected end of JSON input (consulta «Archivos grandes y peticiones truncadas» en esa página).

Además, el mismo clip_id puede reutilizarse para Extend, Replace Section, separación y otras acciones posteriores, sin necesidad de volver a subir el audio.

Parámetros de la petición

Headers

Parámetro Tipo Obligatorio Notas
Authorization string sí Bearer YOUR_API_KEY
Content-Type string sí application/json

Parámetros del body

Parámetro Tipo Obligatorio Por defecto Notas
model string no suno-v6 Nombre de modelo de cara al cliente: suno-v6, suno-v6-wild o suno-v6-mini
sourceClipId string sí - ID del clip de origen; puedes usar el clip_id que devuelve la subida de audio de origen, el song_id real de una canción que ya tengas, o el song_id real que devuelve una subida reforzada al completarse
sourceAudioUrl string no - URL del audio de origen
sourceTitle string no - Título del audio de origen
prompt string no - Letra nueva o dirección creativa
customMode boolean no true Si se usa el modo personalizado
style string no - Etiquetas de estilo
title string no - Título
negativeTags string no - Estilo negativo
instrumental boolean no false Si la canción es instrumental
waitAudio boolean no false Si se espera a que el audio termine
vocalGender string no - Género de la voz
lyricsMode string no - Modo de letra
weirdnessConstraint number no - Aleatoriedad
styleWeight number no - Influencia del estilo
audio_weight number no - Dependencia del audio de referencia, rango 0.0-1.0; solo puede enviarse cuando se facilita un clip de origen o un audio de referencia

weirdnessConstraint, styleWeight y audio_weight toman un decimal de proporción entre 0.0 y 1.0, no un entero de porcentaje; por ejemplo, 50 % se escribe 0.5. 0 es un valor válido; solo omitir el campo significa "no especificado". audio_weight se corresponde con metadata.control_sliders.audio_weight de Suno y controla cuánto se apoya el resultado en el audio de referencia; solo puede incluirse cuando la petición lleva un sourceClipId válido o un audio de referencia, así que no lo envíes en una generación normal de solo texto. Con customMode=true, escribe la letra nueva en prompt y facilita style y title a la vez; con customMode=false, escribe la descripción creativa en prompt. instrumental y waitAudio deben usar los booleanos JSON true/false.

Este endpoint devuelve de forma asíncrona por defecto. Mientras el status devuelto sea pending, que audio_url esté vacío es normal; espera a que termine antes de usar la dirección del audio. sourceClipId debe ser un ID real de canción/clip de origen: no uses un task_id, un client_request_id ni un ID de relleno con pending:.

Qué tipo de ID es sourceClipId

sourceClipId es el identificador real de clip de Suno que se usa como origen de este cover. El objeto de canción de cara al cliente de la plataforma suele llamar a este identificador song_id, mientras que los parámetros de la petición de cover mantienen el nombre sourceClipId; aquí los dos significan el mismo ID real de canción.

Si el origen es una subida reforzada, consulta primero la tarea de subida reforzada y espera a que status pase a completed; después pon el song_id real devuelto en sourceClipId. Se recomienda poner también el audio_url y el title de ese resultado en sourceAudioUrl y sourceTitle.

No pongas el task_id, el client_request_id ni un ID de relleno pending:enhanced-upload:* de la subida reforzada en sourceClipId.

Ejemplo de petición

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 del audio original",
    "prompt": "Letra nueva o dirección creativa",
    "customMode": true,
    "style": "Mandopop, warm vocal",
    "title": "Título del cover",
    "negativeTags": "noise",
    "audio_weight": 0.5,
    "instrumental": false,
    "waitAudio": false
  }'

Respuesta

{
  "code": 200,
  "message": "success",
  "data": {
    "clips": [
      {
        "song_id": "new_clip_id",
        "song_title": "Título del cover",
        "status": "pending"
      }
    ],
    "source_update": {}
  }
}

Notas

Este endpoint intenta resolver a qué cuenta pertenece el clip de origen. Si el clip de origen no puede usarse directamente, el servidor puede volver a subirlo a partir de la información del audio de origen y generar después.

SiguienteAPI de Extend (extensión)

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