Saltar al contenido principal
POST
Referenciar pistas de origen: mashup requiere exactamente 2 pistas de origen: especifícalas con task_ids (un array de exactamente 2 de tus task_id), con audio_indexes opcional (un array paralelo que indica qué elemento de music[] de cada tarea, basado en 1, por defecto 1).
custom determina qué campos surten efecto: los campos escritos en el modo incorrecto son ignorados silenciosamente por el proveedor (sin error). Con custom=true, surten efecto prompt (letra), title, tags, negative_tags, auto_lyrics, style_weight, weirdness_constraint, audio_weight y persona_id, 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 se omite 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_ids
string[]
requerido
Array de tus task_id para las 2 pistas de origen (deben ser exactamente 2; cualquier otra cantidad devuelve 400 directamente en el momento del envío).
audio_indexes
integer[]
Array paralelo a task_ids, que indica qué elemento del music[] resultante de cada tarea (basado en 1, por defecto 1).
instrumental
boolean
predeterminado:"false"
Si es puramente instrumental (true=sin voces); si no se pasa, por defecto false (con voces).
version
string
predeterminado:"v5.5"
Versión de generación: v3.5 / v4 / v4.5 / v4.5+ / v4.5-all / v5 / v5.5, afecta a la calidad de audio y a la facturación; si no se pasa, por defecto v5.5, y un valor no válido 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 la advertencia anterior).
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 surte efecto cuando custom=true.
tags
string
Etiquetas de estilo. Solo surte efecto cuando custom=true.
negative_tags
string
Etiquetas de estilo a excluir. Solo surte efecto cuando custom=true.
auto_lyrics
boolean
true=reescribe la letra proporcionada de forma creativa. Solo surte efecto cuando custom=true.
style_weight
number
Peso de estilo, 0.001.00 (los valores fuera de rango devuelven 400 directamente en el momento del envío). Solo surte efecto cuando custom=true.
weirdness_constraint
number
Peso de creatividad, 0.001.00 (alias weirdness). Solo surte efecto cuando custom=true.
audio_weight
number
Peso de audio, 0.001.00. Solo surte efecto cuando custom=true.
vocal_gender
string
Género vocal: Male / Female. Funciona en ambos modos.
persona_id
string
Id de estilo de persona. Solo surte efecto cuando custom=true.
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; mientras se genera, status es pending y progress avanza en cola 10 → listo 50 → hecho 100). Al completarse, toma audio_url de data.result.music[]. En caso de fallo, data.error.message indica el motivo y la cuota reservada se reembolsa automáticamente.

Response

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