Saltar al contenido principal
POST
Referenciar la pista de origen: la pista de origen debe ser audio propio subido mediante uploadTask; pasa el task_id + audio_index de esa tarea de subida (qué canción dentro del resultado music[], basado en 1, por defecto 1). Usar una pista generada como origen fallará: solo puedes referenciar pistas que hayas subido tú mismo.
custom determina qué campos surten efecto: los campos escritos en el modo equivocado el proveedor los ignora silenciosamente (sin error). Con custom=true surten efecto prompt (letra), title, tags, negative_tags, style_weight, weirdness_constraint y audio_weight, y gpt_description se ignora; con custom=false solo se lee gpt_description (obligatorio en ese caso — si falta, se devuelve un 400 en el momento del envío). vocal_gender funciona en ambos modos. Si no se pasa custom, el backend lo infiere en este orden: hay prompttrue; no hay prompt pero hay gpt_descriptionfalse; en otro caso, hay tags/titletrue.

Authorizations

Authorization
string
requerido
Todas las interfaces requieren autenticación mediante Bearer TokenObtener la API Key:Visita la página de gestión de API Keys para obtener tu API KeyAl usarla, añade en la cabecera de la petición:

Body

model
string
predeterminado:"suno"
Modelo de audio. Actualmente se pasa suno (si no se pasa, por defecto suno).
task_id
string
requerido
El task_id de la tarea de subida de uploadTask que contiene la pista de origen (debe ser una pista que hayas subido tú mismo; usar una pista de una tarea de generación como origen fallará). Si falta o no se puede resolver la fuente, se devuelve un 400 en el momento del envío.
audio_index
integer
predeterminado:"1"
Qué canción dentro de data.music[] del resultado de la tarea de origen (basado en 1; por defecto 1; una generación suele producir 2 canciones: índices 1 y 2).
version
string
predeterminado:"v5.5"
Versión de generación: solo v5 / v5.5; por defecto v5.5 si no se pasa. Cualquier otro valor devuelve 400 directamente en el momento del envío.
custom
boolean
true=modo personalizado (prompt se usa como letra); false=modo inspiración (usa gpt_description); si no se pasa, se infiere del contenido (ver el Warning más arriba).
prompt
string
Letra. Surte efecto cuando custom=true (se ignora en modo inspiración).
gpt_description
string
Prompt de inspiración. Obligatorio cuando custom=false — si falta, la petición falla con 400 en el envío (no se llama al proveedor y no se cobra nada).
title
string
Título. Solo tiene efecto cuando custom=true.
tags
string
Etiquetas del estilo objetivo. Solo tiene efecto cuando custom=true.
negative_tags
string
Etiquetas de estilo a excluir. Solo tiene efecto cuando custom=true.
style_weight
number
Peso del estilo, 0.00-1.00 (los valores fuera de rango devuelven 400 directamente en el momento del envío). Solo tiene efecto cuando custom=true.
weirdness_constraint
number
Creatividad, 0.00-1.00 (alias weirdness). Solo tiene efecto cuando custom=true.
audio_weight
number
Peso del audio, 0.00-1.00. Solo tiene efecto cuando custom=true.
vocal_gender
string
Género de la voz: Male / Female. Funciona en ambos modos.
Obtener el resultado: esta interfaz es una tarea asíncrona. Tras enviarla obtienes un task_id; consulta GET /v1/music/tasks/{task_id} cada 3-5 s hasta que status sea completed o failed (la generación de música suele tardar 30-120 s; durante la generación, status es pending y progress avanza en cola 10 → listo 50 → completado 100). Al completarse, toma el audio_url de data.result.music[]. En caso de fallo, data.error.message indica la razón y la cuota reservada se reembolsa automáticamente.

Response

code
integer
Código de estado de la respuesta
data
array
Array de datos devueltos