> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Instrucciones de integración de la API de generación de canciones de Suno

> Suno Music Generation API guide - Ace Data Cloud

A medida que la aplicación de la IA se ha vuelto más amplia, diversos programas de IA se han popularizado gradualmente. La IA ha ido penetrando poco a poco en todos los aspectos del trabajo y la vida de las personas. Y las industrias que involucra la IA también son cada vez más numerosas, desde la escritura inicial, hasta la educación médica, y ahora la música.

Suno es una plataforma profesional y de alta calidad de creación de canciones y música con IA; los usuarios solo necesitan introducir simples palabras de indicación de texto para poder generar canciones con voces según el estilo de género y las letras. Este generador de música con IA fue desarrollado por miembros de equipos provenientes de conocidas empresas tecnológicas como Meta, TikTok, Kensho, etc., con el objetivo de no necesitar ninguna herramienta instrumental, para que todos puedan crear música maravillosa.

A continuación se muestra el progreso de las actualizaciones del modelo:

| Versión | model | Fecha de lanzamiento | Límite de lyric | Límite de style | Duración máxima de la canción |
| - | - | - | - | - | - |
| v6 | chirp-v6 | 2026.09.09 | — | — | — |
| v6 Wild | chirp-v6-wild | 2026.09.09 | — | — | — |
| v6 Mini | chirp-v6-mini | 2026.09.09 | — | — | — |
| v5.5 | chirp-v5-5 | 2026.03.27 | 5000 | 1000 | 8 minutos |
| v5 | chirp-v5 | 2025.09.23 | 5000 | 1000 | 8 minutos |
| v4.5+ | chirp-v4-5-plus | 2025.07.17 | 5000 | 1000 | 8 minutos |
| v4.5 | chirp-v4-5 | 2025.05.03 | 5000 | 1000 | 4 minutos |
| v4 | chirp-v4 | 2024.12.17 | 3000 | 200 | 150 segundos |
| v3.5 | chirp-v3-5 | --- | 3000 | 200 | 120 segundos |

> Los límites de `lyric` y `style` de la tabla anterior son los límites máximos en el modo personalizado (`custom` es `true`). El modo de inspiración no personalizado (`custom` es `false`) solo completa `prompt`, y su límite de longitud es de 500 caracteres (igual para todos los modelos).

Suno ahora admite `chirp-v6`, `chirp-v6-wild` y `chirp-v6-mini`. Se recomienda utilizar `chirp-v6`; los nombres de modelos antiguos siguen siendo compatibles.

Sin embargo, Suno oficialmente no proporciona una API; AceDataCloud proporciona un conjunto de API de Suno, simulando la integración oficial de Suno, que permite generar de forma cómoda y rápida la música deseada.

## Solicitud y uso

Para utilizar Suno Audios Generation API, primero obtenga su API Token en la [consola de Ace Data Cloud](https://platform.acedata.cloud/console/applications), para tenerlo de respaldo.

![](https://cdn.acedata.cloud/dvc3cg.jpg)

Si aún no ha iniciado sesión o no se ha registrado, será redirigido automáticamente a la página de inicio de sesión para invitarle a registrarse e iniciar sesión; al finalizar, volverá automáticamente a la página actual.

**Un API Token puede invocar todos los servicios de la plataforma, no es necesario solicitarlo por separado para cada servicio.** La primera solicitud otorgará cuota gratuita, que puede usarse para una experiencia gratuita; cuando la cuota sea insuficiente, puede recargar saldo general en la [consola](https://platform.acedata.cloud/console/coin).

> 📘 Documentación completa: [Suno Audios Generation API →](https://platform.acedata.cloud/documents/suno-audios)

## Uso básico

Qué canciones pensar, se puede introducir arbitrariamente un texto, por ejemplo, si quiero generar una canción sobre Navidad, puedo introducir `a song for Christmas`, como se muestra en la imagen:

![](https://cdn.acedata.cloud/2kuuup.png)

Aquí podemos ver que configuramos los Request Headers, incluyendo:

* `accept`: qué formato de resultado de respuesta se desea recibir; aquí se completa como `application/json`, es decir, formato JSON.
* `authorization`: la clave para invocar la API; después de solicitarla, puede seleccionarse directamente desde la lista desplegable.

Además, se configuró el Request Body, incluyendo:

* `action`: tipo de tarea de audio, el valor predeterminado es `generate`. Admite operaciones como generación, continuación, cover, concatenación, separación de pistas, adición de pistas de audio, extracción de pistas de audio especificadas, generación de efectos de sonido y ajuste de velocidad, todas invocadas de forma unificada mediante `POST /suno/audios`.
* `prompt`: palabras clave del modo de inspiración oficial de Suno (surte efecto cuando `custom` es `false`), máximo 500 caracteres.
* `model`: modelo para esta tarea de generación musical. La serie v6 incluye `chirp-v6`, `chirp-v6-wild` y `chirp-v6-mini`; los nombres de modelos antiguos siguen siendo compatibles.
* `max_mode`: modo de generación mejorado. `generate` solo se habilita cuando tanto `custom` como `max_mode` son `true`, con un costo de 1.12 Credits; `add_stem` puede habilitarse directamente, con un costo de 1.344 Credits. Cuando se desactiva o se omite, los costos son 0.56 y 0.672 Credits respectivamente.
* `variety`: intensidad de diversidad de los resultados generados, opcional entre `off`, `normal`, `high`, `extra`, `max`. Solo se utiliza para `generate` y `add_stem`; pasarla en otras action devolverá 400.
* `lyric`: contenido de la letra en el modo personalizado oficial de Suno. `chirp-v3-5` y `chirp-v4` tienen un máximo de 3000 caracteres; `chirp-v4-5` y superiores (incluidos `chirp-v5`, `chirp-v5-5`) tienen un máximo de 5000 caracteres.
* `custom`: si se utiliza el modo personalizado, el valor predeterminado es: `false`.
* `instrumental`: opción de música instrumental del modo de inspiración oficial de Suno.
* `title`: título de la música en el modo personalizado oficial de Suno. `chirp-v3-5`, `chirp-v4` tienen un máximo de 80 caracteres; `chirp-v4-5` y superiores tienen un máximo de 100 caracteres.
* `style`: estilo musical del modo personalizado oficial de Suno. `chirp-v3-5` y `chirp-v4` tienen un máximo de 200 caracteres; `chirp-v4-5` y superiores (incluidos `chirp-v5`, `chirp-v5-5`) tienen un máximo de 1000 caracteres.
* `negative_tags`: estilos musicales o géneros que se desea excluir de los resultados generados en el modo personalizado (`custom` es `true`).
* `audio_weight`: peso de influencia de las características de audio o voz, rango 0-1, `0` también es un valor válido. Puede utilizarse para operaciones como generación, continuación, cover, adición de pistas de audio y consistencia de voz; cuando no hay audio de referencia o características de voz, el modelo puede atenuar o ignorar este valor.
* `audio_id`: ID de la música de referencia.
* `overpainting_start`/`overpainting_end`: tiempo de inicio y fin para añadir voces a música instrumental existente, en segundos.
* `underpainting_start`/`underpainting_end`: tiempo de inicio y fin para añadir acompañamiento a canto a capela, en segundos.
* `persona_id`: ID de la canción del artista.
* `continue_at`: límite de continuación, en segundos. Por ejemplo, 213.5 indica que se comienza a generar el fragmento posterior desde los 3 minutos y 33.5 segundos. `lyric` y `style` solo guían el contenido nuevo después del límite, y no reemplazarán la letra ni el canto antes del límite en el audio de origen.
* `style_influence`: influencia del estilo en el modo personalizado, rango 0-1; cuanto mayor sea, normalmente más se ajustará al estilo seleccionado; `0` se transmitirá como un valor válido.
* `replace_section_end`: tiempo final del fragmento que se reemplazará.
* `replace_section_start`: tiempo de inicio del fragmento que se reemplazará.
* `vocal_gender`: controla la preferencia por voz femenina o masculina, voz femenina `f`, voz masculina `m`; válido para modelos 4.5 y superiores; es una opción de preferencia y no se garantiza un cumplimiento estricto.
* `weirdness`: grado de rareza en el modo personalizado, rango 0-1; cuanto mayor sea, normalmente será más creativo y experimental; `0` se transmitirá como un valor válido.
* `duration`: duración esperada de la canción, en segundos, debe ser un entero, con un rango de 10 a 360. Este parámetro se utiliza para la generación de canciones en modo personalizado (`custom` es `true`). Es una indicación de tendencia y no una restricción estricta: el modelo la tendrá en cuenta, pero no garantiza alcanzarla; la duración real del producto final se basará en el campo `duration` de la respuesta y normalmente será menor que el valor esperado.

### Ámbito de aplicación de parámetros avanzados

| Parámetro | Valores | action compatibles | Descripción |
| - | - | - | - |
| `weirdness` | 0-1 | Opcional | Ajusta la experimentalidad; `0` es un valor válido; el efecto depende de la operación, el modo y el modelo |
| `style_influence` | 0-1 | Opcional | Ajusta la tendencia a seguir el estilo; `0` es un valor válido; el efecto depende de la operación, el modo y el modelo |
| `audio_weight` | 0-1 | Opcional | Ajusta la influencia de las características de audio o voz; puede ser ignorado por el modelo si no hay información de referencia |
| `variety` | `off` / `normal` / `high` / `extra` / `max` | `generate`, `add_stem` | Ajusta la diversidad de estilos entre los resultados |
| `max_mode` | boolean | `generate` (requiere `custom=true`), `add_stem` | Mejora la consistencia y se factura según el modo mejorado |
| `vocal_gender` | `f` / `m` | Operaciones de generación compatibles con control de voz | Opción de preferencia, no se garantiza un cumplimiento estricto |
| `duration` | Entero 10-360 | Opcional | Duración esperada; la operación, modo o modelo específico puede ignorarla |

La plataforma validará los tipos de parámetros y los rangos numéricos, pero no rechazará estos elementos de ajuste opcionales únicamente porque la action sea diferente; el efecto específico depende de la operación, el modo y el modelo.

* `lyric_prompt`: prompt para generar letras, surte efecto si y solo si `custom` es `true` y no se proporciona `lyric`.
* `callback_url`: URL que requiere recibir el resultado mediante callback.
* `async`: opcional; cuando se establece en `true`, la interfaz devuelve inmediatamente `task_id`, no es necesario proporcionar `callback_url`, y posteriormente se obtiene el resultado mediante sondeo a través de la interfaz de consulta de tareas correspondiente.

El código generado es el siguiente:

![](https://cdn.acedata.cloud/1xehwl.png)

Puede hacer clic en el botón «Try» para probar directamente la API, espere 1-2 minutos y el resultado es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "e72fb249-bd5b-4e2a-b20c-8a06fea5ac14",
  "trace_id": "7dbc5b6a-b2c0-4d85-9d39-fa8a8a785ccf",
  "data": [
    {
      "id": "b481b17a-bf50-4e10-8adc-4d5635050893",
      "title": "Under the Mistletoe",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-001",
      "lyric": "[Verse]\nSnowflakes falling on the ground\nTwinkling lights all around\nThe scent of pine fills the air\nChristmas magic everywhere\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right\n[Verse 2]\nStockings hung by the fire’s glow\nWarmth inside while the cold winds blow\nCookies baking\nSweet delight\nA season of joy shining bright\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right\n[Bridge]\nCarols sung by candlelight\nStars above make the world feel tight\nPeace and love\nA season’s creed\nFilling hearts with all we need\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T15:59:32.468Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "prompt": "A song for Christmas",
      "style": "holiday, cheerful, male vocals",
      "duration": 154.92
    },
    {
      "id": "fbf22dab-5e2b-4e02-84c0-6d7605f14c3d",
      "title": "Under the Mistletoe",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-002",
      "lyric": "[Verse]\nSnowflakes falling on the ground\nTwinkling lights all around\nThe scent of pine fills the air\nChristmas magic everywhere\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right\n[Verse 2]\nStockings hung by the fire’s glow\nWarmth inside while the cold winds blow\nCookies baking\nSweet delight\nA season of joy shining bright\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right\n[Bridge]\nCarols sung by candlelight\nStars above make the world feel tight\nPeace and love\nA season’s creed\nFilling hearts with all we need\n[Chorus]\nUnder the mistletoe tonight\nHearts aglow in the soft moonlight\nLaughter echoes\nSpirits bright\nIt’s Christmas time\nIt feels so right",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T15:59:32.468Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "prompt": "A song for Christmas",
      "style": "holiday, cheerful, male vocals",
      "duration": 158.48
    }
  ]
}
```

Se puede ver que en este momento hemos obtenido el contenido de dos canciones, incluidos el título, la imagen de vista previa, la letra, el audio, el video y otros contenidos.

La descripción de los campos es la siguiente:

* success: si la generación se realizó correctamente; si tiene éxito, será `true`, de lo contrario será `false`
* data: es una lista que contiene la información detallada de las canciones generadas.
  * state: estado de generación de la canción, incluye principalmente cuatro tipos, específicamente los siguientes:
    * succeeded: generación exitosa
    * pending: en cola
    * running: en ejecución
    * error: error
  * id: ID de la canción
  * title: el título de la canción
  * image\_url: la imagen de portada de la canción
  * lyric: la letra de la canción
  * audio\_url: la dirección de audio final de la canción. La plataforma devolverá prioritariamente la dirección de Ace Data Cloud CDN; si la persistencia falla, puede devolver la dirección de medios original, descárguela a tiempo.
  * video\_url: el archivo de video de la canción; al abrirlo es un video mp4.
  * created\_at: la hora de creación
  * model: el modelo utilizado, generalmente el modelo v3 más reciente
  * style: el estilo

## Generación personalizada

Si desea generar letras de forma personalizada, puede ingresar la letra:

En este momento, el campo `lyric` puede recibir contenido similar al siguiente:

```
[Verse]\nSnowflakes falling all around\nGlistening white\nCovering the ground\nChildren laughing\nFull of delight\nIn this winter wonderland tonight\nSanta's sleigh\nUp in the sky\nRudolph's nose shining bright\nOh my\nHear the jingle bells\nRinging so clear\nBringing joy and holiday cheer\n[Verse 2]\nRoasting chestnuts by the fire's glow\nChristmas lights\nThey twinkle and show\nFamilies gathering with love and cheer\nSpreading warmth to everyone near
```

> Nota: en la letra aquí, `\n` es un salto de línea. Si no sabe cómo generar letras, puede utilizar la API de generación de letras proporcionada por AceDataCloud para generar letras mediante un prompt; la API es [Suno Lyrics Generation API](https://platform.acedata.cloud/documents/suno-lyrics).

A continuación, para generar una canción personalizada según la letra, el título y el estilo, puede especificar el siguiente contenido:

* lyric: texto de la letra
* custom: complete con `true`, lo que representa la generación personalizada; este parámetro es false de forma predeterminada, lo que representa la generación mediante `prompt`.
* title: el título de la canción.
* style: el estilo de la canción, opcional.

El ejemplo de llenado es el siguiente:

![](https://cdn.acedata.cloud/qp3iba.png)

Después de completar, el código se genera automáticamente de la siguiente manera:

![](https://cdn.acedata.cloud/o5haei.png)

El código correspondiente:

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/suno/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "prompt": "A song for Christmas",
  "model": "chirp-v4-5",
  "lyric": "[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near",
  "custom": true
}'
```

La prueba está permitida y el efecto generado es similar.

## Función de generación personalizada de estilo de cantante

Si desea utilizar un estilo de cantante para generar canciones, primero genere una canción mediante el uso básico anterior,\
finalmente se obtiene que es necesario configurar esta canción como estilo de cantante, luego debe ingresar a [Suno Persona API](https://platform.acedata.cloud/documents/suno-persona) para generar un parámetro de ID de estilo de cantante `persona_id` según el ID de música generado oficialmente `audio_id`; los parámetros específicos se muestran en la siguiente imagen:

![](https://cdn.acedata.cloud/pmzo3l.png)

Después de completar, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/a5g0nj.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/persona"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "audio_id": "97efc9f4-0e8d-4b3e-88df-14568fa1b11f",
    "name": "test"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Haga clic en ejecutar y podrá ver que se obtiene un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "7628b754-4fe7-4e79-bda4-806d0dd8bf6e",
  "data": {
    "persona_id": "e0d7319e-aa2a-44cb-b00a-916218d7cb0b"
  }
}
```

Tomamos los `audio_id` y `persona_id` anteriores, `97efc9f4-0e8d-4b3e-88df-14568fa1b11f` y `e0d7319e-aa2a-44cb-b00a-916218d7cb0b` respectivamente, como datos de ejemplo para esta ocasión. Luego puede establecer el parámetro `action` como `artist_consistency` (si se trata del nuevo estilo de cantante Persona-v2-vox, `action` debe establecerse como `artist_consistency_vox`), e introducir el ID de la canción que necesita seguir generándose y el ID del estilo de cantante; el ejemplo de llenado es el siguiente:

![](https://cdn.acedata.cloud/fukijq.png)

Después de completar, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/5uzk9d.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "artist_consistency",
    "prompt": "A song for Christmas",
    "model": "chirp-v4-5",
    "persona_id": "e0d7319e-aa2a-44cb-b00a-916218d7cb0b",
    "audio_id": "97efc9f4-0e8d-4b3e-88df-14568fa1b11f"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Haga clic en ejecutar y podrá ver que se obtiene un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "9b732b1a-bd67-48bc-95e4-90140e06836f",
  "trace_id": "30fcd88e-7687-4137-92d7-913b58115204",
  "data": [
    {
      "id": "727a36e2-8dce-4df7-99e5-14e44635c80f",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-003",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:27:33.979Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 244.4
    },
    {
      "id": "3b33301a-b17e-4b25-8842-09b46dab1a36",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-004",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:27:33.979Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 229.88
    }
  ]
}
```

Se puede observar que el contenido del resultado es consistente con el anterior, lo que permite implementar la función de generar canciones utilizando un estilo de cantante.

## Función de continuación de generación

Si desea continuar generando una canción de Suno ya generada, puede establecer el parámetro `action` como `extend` e introducir el ID de la canción que necesita seguir generándose. La obtención del ID de la canción se realiza según el uso básico; según lo anterior, en este momento puede ver que el ID de la canción es:

```
"id": "97efc9f4-0e8d-4b3e-88df-14568fa1b11f"
```

> Tenga en cuenta que el `id` en la letra aquí es el ID de la canción después de generarse. Si no sabe cómo generar una canción, puede consultar el uso básico anterior para generar una canción.

Si desea continuar generando una canción que haya subido usted mismo, puede establecer el parámetro `action` como `upload_extend` e introducir el ID de la canción personalizada subida que necesita seguir generándose. La obtención del ID de la canción se realiza mediante [Suno Upload Generation API](https://platform.acedata.cloud/documents/suno-upload), como se muestra en la siguiente imagen:

![](https://cdn.acedata.cloud/a0mn5e.png)

A continuación, debe completar la letra del fragmento de continuación y puede especificar el estilo:

* lyric: solo se utiliza para guiar la letra del nuevo fragmento generado después de `continue_at`; no reemplazará la letra anterior a ese punto temporal en el audio de origen.
* custom: complételo como `true`, lo que representa una generación personalizada; este parámetro es false por defecto, lo que representa la generación mediante `prompt`.
* style: el estilo de canción del fragmento de continuación, opcional.
* continue\_at: límite de continuación, en segundos. Por ejemplo, 213.5 indica que se generan los fragmentos posteriores a partir de los 3 minutos y 33.5 segundos.

> `extend` se utiliza para continuar creando a partir de una canción existente, no para cambiar la letra de toda la canción. Si desea utilizar una nueva letra desde el principio para toda la canción, utilice `generate` para volver a generar; si desea reinterpretar una canción existente como referencia, puede utilizar `cover`. Al introducir una letra nueva completa, la letra original anterior a `continue_at` seguirá sin reemplazarse.

El ejemplo de llenado es el siguiente:

![](https://cdn.acedata.cloud/zp9s42.png)

Después de completar, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/wwpw78.png)

Lo que se conserva a continuación es una instantánea de una llamada histórica real, en la que `continue_at` es de 2 segundos; por lo tanto, solo los primeros 2 segundos pertenecen al contenido original anterior al límite de continuación. Al continuar cerca del final de una canción, este valor debe establecerse en el segundo en el que se espera comenzar la continuación, y solo se debe proporcionar en `lyric` el nuevo fragmento que se cantará después del límite.

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "prompt": "A song for Christmas",
    "model": "chirp-v4-5",
    "audio_id": "97efc9f4-0e8d-4b3e-88df-14568fa1b11f",
    "continue_at": 2,
    "lyric": "[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near",
    "custom": True,
    "instrumental": False
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Haz clic en ejecutar y podrás ver que se obtiene un resultado, como el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "75b835d9-30d1-4641-8524-0aeedbdc9e1a",
  "trace_id": "44c41045-a2e1-4d19-aafc-7abd239d0d5c",
  "data": [
    {
      "id": "0a1e1b10-c36a-41c9-9bfb-b26d9d25db98",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-005",
      "lyric": "[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:38:35.509Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 165.92
    },
    {
      "id": "4334c5b4-0a44-4b26-a8f6-66cc4dbb8fc3",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-006",
      "lyric": "[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:38:35.509Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 158.84
    }
  ]
}
```

Se puede observar que `lyric` en el resultado devuelve el texto de la letra utilizado en esta tarea de continuación. Este campo no es una transcripción literal del audio final completo; para `extend`, el audio de origen anterior a `continue_at` sigue usando la letra original, y la nueva letra solo se utiliza para guiar el fragmento de continuación.

## Obtener la canción completa

El resultado de `extend` del modelo actual normalmente ya incluye el audio de origen anterior a `continue_at` y el nuevo contenido posterior al límite; primero determina si ya es la canción completa según la duración real y el contenido del audio devuelto. Si se devuelve un fragmento de continuación independiente, o si es necesario fusionar explícitamente el historial de múltiples continuaciones en una canción, utiliza entonces la función de concatenación:

* action: el contenido es `concat`.
* audio\_id: el ID del último fragmento de continuación.

Por ejemplo, si el ID de la canción extendida es: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, entonces se pueden establecer los parámetros de la siguiente manera:

```json theme={null}
{
  "action": "concat",
  "audio_id": "0a1e1b10-c36a-41c9-9bfb-b26d9d25db98"
}
```

Los demás parámetros permanecen sin cambios; lo que se devuelve es una canción completa, es decir, el resultado de concatenar todos los fragmentos de la canción, pero el resultado solo contiene una canción, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "0f794915-8418-4124-93f5-b7eb3a417167",
  "trace_id": "62afcce0-e7e5-44b8-8c2e-4bba12a4f414",
  "data": [
    {
      "id": "0efec7e0-11bf-4313-9981-2c0e7218d7dd",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-007",
      "lyric": "[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near\n[Verse]\\nSnowflakes falling all around\\nGlistening white\\nCovering the ground\\nChildren laughing\\nFull of delight\\nIn this winter wonderland tonight\\nSanta's sleigh\\nUp in the sky\\nRudolph's nose shining bright\\nOh my\\nHear the jingle bells\\nRinging so clear\\nBringing joy and holiday cheer\\n[Verse 2]\\nRoasting chestnuts by the fire's glow\\nChristmas lights\\nThey twinkle and show\\nFamilies gathering with love and cheer\\nSpreading warmth to everyone near",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:43:06.718Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 167.91997916666668,
      "concat_history": [
        {
          "continue_at": 2,
          "id": "97efc9f4-0e8d-4b3e-88df-14568fa1b11f",
          "infill": false,
          "source": "web",
          "type": "gen"
        },
        {
          "id": "0a1e1b10-c36a-41c9-9bfb-b26d9d25db98"
        }
      ]
    }
  ]
}
```

## Versión de música

Cuando se continúa generando una canción basándose en una canción existente, el estilo de la canción devuelta puede no ser muy adecuado. Si se desea crear una versión de una canción generada previamente (también se admite música personalizada subida), se debe utilizar el método de versión de música, con el que se puede especificar el siguiente contenido:

* action: El contenido es `cover`; cuando se realiza una operación de versión sobre música personalizada subida, se debe especificar el contenido como: `upload_cover`.
* audio\_id: El ID de la canción generada previamente.

Por ejemplo, si el ID de la canción generada previamente es: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, entonces se pueden establecer los parámetros de la siguiente manera:

```json theme={null}
{
  "action": "cover",
  "audio_id": "0a1e1b10-c36a-41c9-9bfb-b26d9d25db98",
  "prompt": "A song for Christmas",
  "model": "chirp-v4-5"
}
```

Los demás parámetros permanecen sin cambios, y lo que se devuelve es una canción versionada, es decir, el resultado de crear una versión de la canción generada previamente, como se muestra en el siguiente ejemplo:

```json theme={null}
{
  "success": true,
  "task_id": "b9d43d06-2e0a-4b5e-9e0d-7dfab32e00ab",
  "trace_id": "6c5e567d-0fdc-4c44-9b36-4090d9a75ff5",
  "data": [
    {
      "id": "6988fa57-f810-41cf-afab-7838db2c77dc",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-008",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:44:13.007Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 182.4
    },
    {
      "id": "ce98b991-0258-4f05-8245-e43d4efa8fb8",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-009",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-17T16:44:13.007Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 179.72
    }
  ]
}
```

El resultado generado es similar al anterior, con lo que se completa el proceso de generar una versión de la canción generada previamente.

## Reemplazar fragmento

Cuando, después de generar una canción, se necesita realizar una creación secundaria mediante una operación independiente de reemplazo de fragmentos de la canción, se puede realizar una operación de reemplazo sobre un determinado fragmento de la canción.

> ⚠️ **Nota**: `replace_section_result_mode` es `full_song` de forma predeterminada: el sistema concatenará respectivamente 2 candidatos recién generados y devolverá 2 canciones completas. Si solo se necesitan los candidatos de fragmentos de reemplazo que aún no se han concatenado, establezca explícitamente el valor en `candidates` y luego seleccione un candidato para llamar a [Concatenación de música](#音乐拼接).

La descripción de los parámetros es la siguiente:

* action: El contenido es `replace_section`.
* audio\_id: El ID de la canción original (la canción fuente que se reemplaza).
* model: El modelo de generación de canciones.
* lyric: La letra completa después del reemplazo (incluido el fragmento reemplazado y su contexto, coherente con el contenido de `prompt`).
* prompt: La nueva letra de la sección que se necesita reemplazar.
* style: El estilo de la canción, opcional.
* replace\_section\_start: El tiempo de inicio (segundos) del fragmento reemplazado en la canción original.
* replace\_section\_end: El tiempo de finalización (segundos) del fragmento reemplazado en la canción original.
* replace\_section\_result\_mode: El modo de devolución, cuyo valor predeterminado es `full_song`. `full_song` concatena respectivamente 2 candidatos y devuelve 2 canciones completas; `candidates` devuelve 2 fragmentos candidatos aún no concatenados.

### Paso uno: iniciar una tarea de reemplazo de fragmento

Por ejemplo, si el ID de la canción generada previamente es: 18db7ed0-2b8a-41db-91c1-b0781dcca0d4 (con una duración de 94.12 segundos), y se desea reemplazar el estribillo desde el segundo 30 hasta el segundo 60 por una nueva letra, entonces se pueden establecer los parámetros de la siguiente manera:

```json theme={null}
{
  "action": "replace_section",
  "audio_id": "18db7ed0-2b8a-41db-91c1-b0781dcca0d4",
  "model": "chirp-v5-5",
  "custom": false,
  "instrumental": false,
  "lyric": "[Intro]\n锣鼓喧天 红灯高挂\n[Verse 1]\n爆竹声声辞旧岁\n春风暖暖入万家\n红包压岁笑开颜\n金蛇起舞贺新春\n[Chorus]\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n[Verse 2]\n饺子飘香年夜饭\n灯笼摇曳照团圆",
  "prompt": "梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地",
  "replace_section_start": 30.0,
  "replace_section_end": 60.0,
  "replace_section_result_mode": "full_song"
}
```

De forma predeterminada, devuelve 2 canciones completas, cada una compuesta mediante la concatenación de dos candidatos. Si `replace_section_result_mode` se establece en `candidates`, devuelve 2 fragmentos de reemplazo aún no concatenados, con una estructura coherente con el siguiente ejemplo:

```json theme={null}
{
  "success": true,
  "task_id": "dd067075-a295-4160-8375-d5504327d55b",
  "trace_id": "c34f589b-9195-4d0b-af78-9c890e77609c",
  "data": [
    {
      "id": "364f9d8b-ca25-463b-9a5e-d0b7139e2d6a",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-010",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-011",
      "lyric": "[Intro]\n锣鼓喧天 红灯高挂\n[Verse 1]\n爆竹声声辞旧岁\n春风暖暖入万家\n红包压岁笑开颜\n金蛇起舞贺新春\n[Chorus]\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n[Verse 2]\n饺子飘香年夜饭\n灯笼摇曳照团圆",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-05-06T06:55:00.000Z",
      "model": "chirp-v5-5",
      "state": "succeeded",
      "style": "",
      "duration": 45.16
    },
    {
      "id": "fae966ea-5f7f-4e80-9962-1c57963c7f8a",
      "title": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "model": "chirp-v5-5",
      "state": "succeeded",
      "duration": 33.8
    }
  ]
}
```

En el modo `candidates`, las duraciones de las dos pistas de audio devueltas (45.16 segundos, 33.8 segundos) son mucho más cortas que la canción original (94.12 segundos); son fragmentos de reemplazo que contienen una pequeña cantidad de contexto y **no son** la canción completa. Puedes seleccionar un candidato satisfactorio y continuar concatenándolo manualmente. El modo predeterminado `full_song` completará dos concatenaciones y devolverá directamente 2 canciones completas.

### Devolver directamente canciones completas

Si deseas obtener directamente canciones completas, puedes establecer `replace_section_result_mode` en `full_song` en el paso uno. La interfaz concatenará respectivamente los dos candidatos y devolverá 2 canciones completas; en este caso, no es necesario llamar de nuevo a `concat`.

### Paso dos: concatenar el fragmento de reemplazo de vuelta a la canción original

Para el fragmento seleccionado anteriormente (por ejemplo, `364f9d8b-ca25-463b-9a5e-d0b7139e2d6a`), inicia una tarea `concat` según el método de la sección [Concatenación de música](#音乐拼接):

```json theme={null}
{
  "action": "concat",
  "audio_id": "364f9d8b-ca25-463b-9a5e-d0b7139e2d6a",
  "model": "chirp-v5-5"
}
```

Lo que se devuelve es la canción completa ya concatenada; el ejemplo es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "5dbd4a78-0197-4ef3-9c16-8bddaf4f0c94",
  "trace_id": "580bd1da-2ad3-4d75-be1f-6c14bd4b489d",
  "data": [
    {
      "id": "365a9640-0452-4567-80f0-4f5a2a17ddd5",
      "title": "新年快乐",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-012",
      "lyric": "[Intro]\n锣鼓喧天 红灯高挂\n[Verse 1]\n爆竹声声辞旧岁\n春风暖暖入万家\n红包压岁笑开颜\n金蛇起舞贺新春\n[Chorus]\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n梅花绽放春意洋溢满地\n[Verse 2]\n饺子飘香年夜饭\n灯笼摇曳照团圆",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-05-06T06:56:46.057Z",
      "model": "chirp-v5-5",
      "state": "succeeded",
      "style": "traditional Chinese new year, festive, female vocals, upbeat",
      "duration": 105.28
    }
  ]
}
```

En este momento, `duration` se ha restaurado a la duración completa de la canción (105.28 segundos, aproximadamente igual a la duración de la canción original), y `audio_url` apunta a la canción completa después de finalizar el reemplazo. Esto completa el flujo de creación secundaria de "generar → reemplazar fragmento → unir canción completa".

## Separación de voces e instrumentos

Cuando, después de generar una canción, se necesita realizar una creación secundaria con operaciones independientes sobre el acompañamiento y las voces, se pueden separar el acompañamiento instrumental puro y las voces a capela. Se puede especificar el siguiente contenido:

* action: el contenido es `stems`.
* audio\_id: el ID de la canción generada anteriormente.

Por ejemplo, si el ID de la canción generada originalmente es: ec13e502-d043-4eb2-92ee-e900c6da69d1, entonces se pueden establecer los parámetros de la siguiente manera:

```json theme={null}
{
  "action": "stems",
  "audio_id": "ec13e502-d043-4eb2-92ee-e900c6da69d1"
}
```

Mediante los parámetros anteriores se puede obtener el resultado de la separación de voces e instrumentos, el resultado es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "4050affc-f8a6-4cba-a86c-bf201eed053d",
  "trace_id": "5107ee58-687d-422f-9195-fa0e82e1fcc8",
  "data": [
    {
      "id": "e3de0928-085a-42c4-b982-3b24738d1989",
      "title": "Deck the Sky - Vocals",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-013",
      "lyric": "[Verse]\nSnowflakes dance on rooftops high\nChildren's laughter fills the sky\nCarols ring from church bells loud\nHolidays a joyful crowd\n[Verse 2]\nCandy canes and cocoa warm\nWrapped up tight in our own storm\nStockings hung with dreams and cheer\nMagic growing every year\n[Chorus]\nDeck the sky with twinkling stars\nHoliday joy feels ours and ours\nSing the songs of love and light\nChristmas glows so pure and bright\n[Verse 3]\nFireside tales of long ago\nReindeer prance in icy glow\nEvergreen and tinsel’s gleam\nChristmas time a lovely dream\n[Bridge]\nHearts are full with friends and kin\nMistletoe for love to win\nGifts of love and hope we share\nChristmas spirit everywhere\n[Chorus]\nDeck the sky with twinkling stars\nHoliday joy feels ours and ours\nSing the songs of love and light\nChristmas glows so pure and bright",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "https://cdn.acedata.cloud/assets/examples/gemini/04a043bd-6b23-4b4e-945c-ce48158c3eee-3a89912507c7.mp4?example=video-001",
      "created_at": "2025-01-05T07:49:16.881Z",
      "model": "",
      "state": "succeeded",
      "style": "holiday, jolly",
      "duration": 174.16
    },
    {
      "id": "ad5d7c89-709c-4eb4-a5a6-72f9f5e57fdb",
      "title": "Deck the Sky - Instrumental",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-014",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "https://cdn.acedata.cloud/assets/examples/gemini/04a043bd-6b23-4b4e-945c-ce48158c3eee-3a89912507c7.mp4?example=video-002",
      "created_at": "2025-01-05T07:49:16.892Z",
      "model": "",
      "state": "succeeded",
      "style": "holiday, jolly",
      "duration": 174.16
    }
  ]
}
```

El resultado generado es similar al anterior, con lo que se completa el proceso de separación de voces e instrumentos de la canción generada originalmente.

## Separación de voces e instrumentos de todas las pistas

Cuando, después de generar una canción, se necesita realizar una operación de separación de voces e instrumentos de todas las pistas, se puede especificar el siguiente contenido:

* action: el contenido es `all_stems`.
* audio\_id: el ID de la canción generada anteriormente.

Por ejemplo, si el ID de la canción generada originalmente es: bdf23a5a-59f5-4103-b452-054a824a7f9f, entonces se pueden establecer los parámetros de la siguiente manera:

```json theme={null}
{
  "action": "all_stems",
  "audio_id": "bdf23a5a-59f5-4103-b452-054a824a7f9f"
}
```

Mediante los parámetros anteriores se puede obtener el resultado de la separación de voces e instrumentos de todas las pistas, el resultado es el siguiente:

```json { theme={null}
  "success": true,
  "task_id": "f4b16fb9-8478-4857-88c7-b9a1f0bb9518",
  "trace_id": "9c560ebd-4fc6-4bdb-988a-8890160a92fb",
  "data": [
    {
      "id": "f86ca64a-9519-4ea7-a592-52438e001412",
      "title": "安全之弦 (Vocals)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-015",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "99e649a7-a394-47b9-a915-d7f847285a36",
      "title": "安全之弦 (Backing Vocals)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-016",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "6d710bf7-809f-4fdc-bb63-b8cb3a456d42",
      "title": "安全之弦 (Drums)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-017",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    },
{
      "id": "e05f07e3-7d80-4713-8e51-7f176c733543",
      "title": "Cuerdas de seguridad (Bajo)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-018",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "93fe7cd8-62fd-4739-b78e-142c7e0b8562",
      "title": "Cuerdas de seguridad (Guitarra)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-019",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "8367d71c-fdd3-441c-8ebe-70c33cca821b",
      "title": "Cuerdas de seguridad (Teclado)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-020",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "28c03590-731c-416e-8fd3-95cdb3d75043",
      "title": "Cuerdas de seguridad (Percusión)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-021",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "3d4c1a28-4e1c-485a-8201-d21bb93aca2f",
      "title": "Cuerdas de seguridad (Cuerdas)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-022",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "b9db8ded-01ec-4e37-b8a5-64aab3a814c2",
      "title": "Cuerdas de seguridad (Sintetizador)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-023",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "10a5248e-32e6-42b9-8da1-678a8a392aef",
      "title": "Cuerdas de seguridad (FX)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-024",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "2d272128-111f-4901-8f62-5ae1eb43095a",
      "title": "Cuerdas de seguridad (Metales)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-025",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "4a7c19a5-f8d4-4e4a-add9-aa0bad9307cc",
      "title": "Cuerdas de seguridad (Instrumentos de viento-madera)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-026",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "1ca774f9-3e75-48a6-941b-808875eadcd2",
      "title": "Cuerdas de seguridad (Voces)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-027",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.770Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    },
{
      "id": "14c5ffc7-addf-4fee-afd2-4b8b3e7ee470",
      "title": "Cuerdas de seguridad (Coros)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-028",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "9d044557-450d-48ab-90dc-8eaf6f1cdb6c",
      "title": "Cuerdas de seguridad (Batería)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-029",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "efd052d0-c12f-47b3-8282-1f3ef7610e1f",
      "title": "Cuerdas de seguridad (Bajo)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-030",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "5775372b-292e-4420-96ef-60e57a60cc1f",
      "title": "Cuerdas de seguridad (Guitarra)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-031",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "dab3f220-19cd-408e-9b96-30ec18f5b049",
      "title": "Cuerdas de seguridad (Teclado)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-032",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "2d0cd6d4-af82-4bb5-86fe-d92bdb367157",
      "title": "Cuerdas de seguridad (Percusión)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-033",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "f3191a1a-5e8d-4afe-b638-3add222d52cd",
      "title": "Cuerdas de seguridad (Cuerdas)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-034",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "a8834ea5-200b-4206-a812-9780ef336660",
      "title": "Cuerdas de seguridad (Sintetizador)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-035",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "f50d1a31-ef72-400a-b8ae-0367849d007d",
      "title": "Cuerdas de seguridad (FX)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-036",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }, {
      "id": "cb581673-23cc-40d6-9f9b-0f76720f0d18",
      "title": "Cuerdas de seguridad (Metales)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-037",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    },
{
      "id": "d91cfb52-f0a3-4546-bf8a-2ad14c3775a5",
      "title": "安全之弦 (Woodwinds)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-038",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-06-11T02:40:30.771Z",
      "model": "chirp-ahi-stem-12-t1",
      "state": "succeeded",
      "duration": 154.92
    }
  ]
}
```

El resultado generado es similar al anterior, con lo que se completa el proceso de separación de voces e instrumentos de la canción generada originalmente.

## Añadir pista de audio

`add_stem` genera una pista del instrumento o sonido objetivo para el audio especificado, mediante la llamada a `POST /suno/audios`.

* Obligatorios: `action`, `audio_id`, `stem_type`.
* Opcionales: `model`, `prompt`, `title`, `style`, `negative_tags`, `weirdness`, `style_influence`, `audio_weight`, `max_mode`, `variety`.
* Facturación: 0.672 Credits en modo normal; 1.344 Credits cuando `max_mode` es `true`.

```json theme={null}
{
  "action": "add_stem",
  "audio_id": "dead4ee5-df4d-417b-8f7e-717722fae51a",
  "stem_type": "bass",
  "model": "chirp-v6",
  "prompt": "Add warm bass guitar",
  "style": "minimal piano pulse with warm bass guitar",
  "negative_tags": "vocals",
  "variety": "normal",
  "max_mode": false,
  "async": true
}
```

Respuesta en estado final:

```json theme={null}
{
  "success": true,
  "task_id": "82851953-9590-4334-8bb8-ae30ccadc815",
  "trace_id": "862bbcce-1678-44ff-982d-8b439c126a5e",
  "data": [
    {
      "id": "0adc26ca-2720-4c69-b237-457a986d70e3",
          "audio_url": "https://cdn.acedata2.cloud/suno/0adc26ca-2720-4c69-b237-457a986d70e3.mp3",
      "model": "chirp-v6",
      "state": "succeeded",
      "duration": 12.8
    },
    {
      "id": "e2d39a6c-1d20-4a40-adaf-b2551815d869",
          "audio_url": "https://cdn.acedata2.cloud/suno/e2d39a6c-1d20-4a40-adaf-b2551815d869.mp3",
      "model": "chirp-v6",
      "state": "succeeded",
      "duration": 12.36
    }
  ],
  "cost": {"amount": 0.6048, "currency": "credit", "list_amount": 0.672}
}
```

## Extraer pista de audio

`extract_stem` extrae la pista de audio objetivo del audio especificado y, al mismo tiempo, devuelve la versión complementaria después de eliminar dicha pista, mediante la llamada a `POST /suno/audios`.

* Obligatorios: `action`, `audio_id`, `stem_type`.
* Opcional: `audio_format`, el contrato público actual de doble canal solo admite `mp3`.
* Facturación: 1.12 Credits.

```json theme={null}
{
  "action": "extract_stem",
  "audio_id": "dead4ee5-df4d-417b-8f7e-717722fae51a",
  "stem_type": "bass",
  "audio_format": "mp3",
  "async": true
}
```

El `data` de la respuesta en estado final conserva una lista plana de audios, y `stem_sets` indica la relación correspondiente entre la pista de audio objetivo y la pista de audio complementaria:

```json theme={null}
{
  "success": true,
  "task_id": "ae9557d0-4ff7-4a35-bcde-d881e78fbfe5",
  "trace_id": "82c51a55-7627-41a5-b72b-1b9775ca25f2",
  "data": [
    {"id":"3084d7e1-4278-4733-8b56-56f7ecf3f859","title":"(Bass)","audio_url":"https://cdn.acedata2.cloud/suno/3084d7e1-4278-4733-8b56-56f7ecf3f859.mp3","model":"chirp-v6","state":"succeeded","duration":12.8,"stem_set":1},
    {"id":"19b83ca9-a51d-494f-a41d-5b0957f3295e","title":"(Without Bass)","audio_url":"https://cdn.acedata2.cloud/suno/19b83ca9-a51d-494f-a41d-5b0957f3295e.mp3","model":"chirp-v6","state":"succeeded","duration":12.8,"stem_set":1},
    {"id":"7eb431e8-f4db-4915-902e-0e89d2b3185a","title":"(Bass)","audio_url":"https://cdn.acedata2.cloud/suno/7eb431e8-f4db-4915-902e-0e89d2b3185a.mp3","model":"chirp-v6","state":"succeeded","duration":12.8,"stem_set":2},
    {"id":"495d29cc-5790-4d0a-8b95-9551a6127b61","title":"(Without Bass)","audio_url":"https://cdn.acedata2.cloud/suno/495d29cc-5790-4d0a-8b95-9551a6127b61.mp3","model":"chirp-v6","state":"succeeded","duration":12.8,"stem_set":2}
  ],
  "stem_sets": [
    {"stem_type":"bass","isolated":{"id":"3084d7e1-4278-4733-8b56-56f7ecf3f859","state":"succeeded","stem_set":1},"remainder":{"id":"19b83ca9-a51d-494f-a41d-5b0957f3295e","state":"succeeded","stem_set":1}},
    {"stem_type":"bass","isolated":{"id":"7eb431e8-f4db-4915-902e-0e89d2b3185a","state":"succeeded","stem_set":2},"remainder":{"id":"495d29cc-5790-4d0a-8b95-9551a6127b61","state":"succeeded","stem_set":2}}
  ],
  "cost": {"amount": 1.008, "currency": "credit", "list_amount": 1.12}
}
```

## Generar efectos de sonido

`sounds` genera efectos de sonido de una sola vez o en bucle según una descripción de texto, mediante la llamada a `POST /suno/audios`.

* Obligatorios: `action`, `sound`, `sound_type`.
* Opcionales: `model`, `bpm`, `key`, `audio_format`; `audio_format` actualmente solo admite `mp3`.
* `sound_type`: `one-shot` o `loop`.
* Facturación: 0.112 Credits.

```json theme={null}
{
  "action": "sounds",
  "sound": "single soft analog synth pluck, no reverb",
  "sound_type": "one-shot",
  "model": "chirp-v6",
  "bpm": 120,
  "key": "C",
  "audio_format": "mp3",
  "async": true
}
```

```json theme={null}
{
  "success": true,
  "task_id": "f6716546-d118-40a0-ad15-09999f9f22ba",
  "trace_id": "da4c7895-e494-4bd8-83bd-132e006c94e3",
  "data": [
    {"id":"b3cd3e7d-96e4-48ef-abde-73c7ddee8b4a","title":"single soft analog synth pluck, no reverb","audio_url":"https://cdn.acedata2.cloud/suno/b3cd3e7d-96e4-48ef-abde-73c7ddee8b4a.mp3","model":"chirp-v6","state":"succeeded","duration":10},
    {"id":"f1517867-b76a-4cdf-b006-9ce6e653e0a5","title":"single soft analog synth pluck, no reverb","audio_url":"https://cdn.acedata2.cloud/suno/f1517867-b76a-4cdf-b006-9ce6e653e0a5.mp3","model":"chirp-v6","state":"succeeded","duration":10}
  ],
  "cost": {"amount": 0.1008, "currency": "credit", "list_amount": 0.112}
}
```

## Ajustar la velocidad del audio

`adjust_speed` ajusta la velocidad de reproducción del audio especificado, mediante la llamada a `POST /suno/audios`.

* Obligatorio: `action`, `audio_id`, `speed_multiplier`, `title`.
* Opcional: `keep_pitch`.
* `speed_multiplier`: rango de 0.25–4.
* Facturación: 0.28 Credits.

```json theme={null}
{
  "action": "adjust_speed",
  "audio_id": "dead4ee5-df4d-417b-8f7e-717722fae51a",
  "speed_multiplier": 1.1,
  "keep_pitch": true,
  "title": "Suno contract verification speed 1.1x",
  "async": true
}
```

La duración del audio de origen es de 9.8 segundos, y el resultado a 1.1x de velocidad es de 8.909090909 segundos:

```json theme={null}
{
  "success": true,
  "task_id": "c5860fdd-76b1-40a1-b5b5-ec047e471c8a",
  "trace_id": "292ed097-3631-441c-ac80-52f326b62726",
  "data": [
    {
      "id": "02534b52-45a7-4961-834a-f473a407e62c",
      "title": "Suno contract verification speed 1.1x",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3?example=audio-001",
      "model": "chirp-v6",
      "state": "succeeded",
      "duration": 8.909090909090908
    }
  ],
  "cost": {
    "amount": 0.252,
    "currency": "credit",
    "list_amount": 0.28
  }
}
```

El modelo de generación tiene aleatoriedad. La interfaz garantiza que la semántica de los parámetros, el estado de la tarea y la estructura de la respuesta sean consistentes, pero no garantiza que diferentes solicitudes generen formas de onda exactamente iguales.

## Parámetros avanzados para la generación personalizada

La plataforma oficial permite utilizar los parámetros avanzados `weirdness`==>`Weirdness`, `style_influence`==>`Style Influence`, `audio_weight`==>`Audio Influence` para la generación en modo personalizado, correspondientes a los siguientes ejemplos oficiales:

![](https://cdn.acedata.cloud/1xonxy.png)

Los rangos de los parámetros avanzados están todos entre 0 y 1, y los parámetros específicos se muestran en la siguiente imagen:

![](https://cdn.acedata.cloud/7i94ih.png)

Después de completar los campos, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/2dlbo6.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "generate",
    "model": "chirp-v4-5",
    "lyric": "Hello Hello Hello ",
    "custom": True,
    "weirdness": 0.4,
    "style_influence": 0.4,
    "audio_weight": 0.4
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Al hacer clic en ejecutar, se puede observar que se obtiene un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "2f3aa682-e1a7-43a9-9fbb-ed0ce8668a4b",
  "trace_id": "07408194-7deb-4a52-a36d-9a9a13143b5f",
  "data": [
    {
      "id": "c66e2077-7580-43f2-9937-c67a8afcd8bd",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-039",
      "lyric": "Hello Hello Hello ",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-07-10T12:54:35.199Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 187.92
    },
    {
      "id": "a922f97b-307c-4c4d-aae3-a47ba8202a10",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-040",
      "lyric": "Hello Hello Hello ",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-07-10T12:54:35.199Z",
      "model": "chirp-auk",
      "state": "succeeded",
      "style": "",
      "duration": 229.64
    }
  ]
}
```

De esta manera se utilizan parámetros avanzados para generar canciones personalizadas, y el resultado es similar al anterior.

## Controlar la duración de la canción

De forma predeterminada, la duración de las canciones generadas la decide el propio modelo, normalmente entre 30 segundos y 4 minutos. Si se necesita un producto final más largo o más corto, se puede especificar la duración deseada mediante el parámetro `duration`, cuya unidad son segundos y cuyo valor debe ser un número entero entre 10 y 360.

Este parámetro se utiliza para la generación de canciones en modo personalizado (`custom` es `true`). Es necesario aclarar especialmente que `duration` es una **indicación de tendencia, no una restricción estricta**: el modelo hará referencia a este valor al crear, pero no garantiza alcanzarlo; en las pruebas, la duración real suele ser notablemente menor que el valor esperado, y las duraciones de las dos canciones devueltas en una misma solicitud también pueden diferir varias veces. Incluso para solicitudes completamente idénticas, las duraciones obtenidas tras varios envíos también pueden variar considerablemente. Por lo tanto, no lo utilice como un control preciso de duración; si se requiere una duración fija para el negocio, recorte o vuelva a intentarlo por su cuenta después de obtener el producto final.

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "generate",
    "model": "chirp-v5-5",
    "custom": True,
    "title": "Under the City Lights",
    "style": "lo-fi piano",
    "lyric": "[Verse]\nSunrise creepin\nGold on the floor\n[Chorus]\nUnder the city lights\n",
    "duration": 330
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Cabe señalar que `duration` en la solicitud es la **duración esperada**, mientras que el campo `duration` de cada canción en los `data` de la respuesta es la **duración real** de esa canción. Ambos tienen el mismo nombre, pero significados diferentes; no se garantiza que la duración real sea igual al valor esperado. La longitud de la letra es uno de los principales factores que afectan la duración del producto final; si se necesita un producto final más largo, se recomienda proporcionar letras más completas al mismo tiempo.

La interfaz validará que `duration` debe ser un entero entre 10 y 360; sigue siendo solo un objetivo de generación, no una garantía de la duración del producto final.

## Función Add Insterumental

En agosto de 2025, suno lanzó la nueva función Add Insterumental. Primero es necesario subir una canción a capela sin voz en off, para que suno te ayude a añadirle acompañamiento musical. Primero puedes ir a [Suno Upload API](https://platform.acedata.cloud/documents/suno-upload) para subir una canción a capela sin acompañamiento musical; las operaciones correspondientes se muestran en la siguiente imagen:

![](https://cdn.acedata.cloud/fxl914.png)

Luego es necesario registrar el `audio_id` después de la subida; el resultado específico se muestra en la siguiente imagen:

![](https://cdn.acedata.cloud/47t6wj.png)

Finalmente se obtiene un `audio_id`: 92254cab-3372-4d9e-bce9-cdcfdbc39070, y luego también necesitamos completar los siguientes parámetros:

* action: el contenido es `underpainting`.
* underpainting\_start: la hora de inicio para añadir acompañamiento a la canción subida; el valor predeterminado es 0.
* underpainting\_end: la hora de finalización para añadir acompañamiento a la canción subida; debe ser menor que la duración total de la canción.
* audio\_id: el ID de la canción a capela sin voz en off subida.
* style: el estilo del acompañamiento; es mejor no usar letra, después de todo es doblaje.

Después de completar la información, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/8x1ic6.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "underpainting",
    "model": "chirp-v4-5",
    "style": "Pop rap, uplifting, magnetic male vocals, piano, synth, electric guitar, driving bass, clear structure",
    "audio_id": "92254cab-3372-4d9e-bce9-cdcfdbc39070",
    "underpainting_end": 120
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Al hacer clic en ejecutar, se puede observar que se obtiene un resultado, como el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "822d2e14-c535-4d48-a4e5-1b6ab00b04a7",
  "trace_id": "257eac2c-8e4f-44d0-8454-5e215111eefa",
  "data": [
    {
      "id": "2788cd21-bd84-422d-beb5-859c60fbf5b6",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-041",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-08-27T15:25:42.548Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "Pop rap, uplifting, magnetic male vocals, piano, synth, electric guitar, driving bass, clear structure",
      "duration": 10.16
    },
    {
      "id": "a4bb7220-e971-4cbf-a626-b86c648bcf55",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-042",
      "lyric": "",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-08-27T15:25:42.548Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "Pop rap, uplifting, magnetic male vocals, piano, synth, electric guitar, driving bass, clear structure",
      "duration": 2.52
    }
  ]
}
```

De esta forma se completa la operación de añadir acompañamiento musical a la canción a capela sin voz en off subida; el resultado es similar al descrito anteriormente.

## Función Add Vocals

En agosto de 2025, suno lanzó la nueva función Add Vocals. Primero es necesario subir una pieza de música instrumental, para que suno escriba la letra y genere canto vocal. Primero puedes ir a [Suno Upload API](https://platform.acedata.cloud/documents/suno-upload) para subir una canción a capela sin acompañamiento musical; las operaciones correspondientes se muestran en la siguiente imagen:

![](https://cdn.acedata.cloud/fxl914.png)

Luego es necesario registrar el `audio_id` después de la subida; el resultado específico se muestra en la siguiente imagen:

![](https://cdn.acedata.cloud/47t6wj.png)

Finalmente se obtiene un `audio_id`: 92254cab-3372-4d9e-bce9-cdcfdbc39070, y luego también necesitamos completar los siguientes parámetros:

* action: el contenido es `overpainting`.
* overpainting\_start: la hora de inicio para añadir voces a la canción subida; el valor predeterminado es 0.
* overpainting\_end: la hora de finalización para añadir voces a la canción subida; debe ser menor que la duración total de la canción.
* audio\_id: el ID de la canción a capela sin voz en off subida.
* custom: en este modo se debe usar el modo personalizado para introducir la letra.
* lyric: la letra introducida en el modo personalizado.
* style: el estilo del acompañamiento.

Después de completar la información, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/a4pbes.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "overpainting",
    "model": "chirp-v4-5",
    "lyric": "Yea your were the best I could get \\nBut I knew that it couldn’t last \\nStayed down since we were friends \\nHad to leave those thoughts in the past \\nMade like 40k just last week \\nOn top of the 20 with my babe\\ndon’t care for what niggas say",
    "custom": True,
    "audio_id": "92254cab-3372-4d9e-bce9-cdcfdbc39070",
    "overpainting_end": 120
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Haz clic en ejecutar y podrás ver que obtendrás un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "31bb250e-6614-49ec-ac85-631f224daeba",
  "trace_id": "efe8e7f3-9a65-4f13-a9f8-51e8478899df",
  "data": [
    {
      "id": "a597f945-64df-4722-a631-d436450832bd",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-043",
      "lyric": "Yea your were the best I could get \\nBut I knew that it couldn’t last \\nStayed down since we were friends \\nHad to leave those thoughts in the past \\nMade like 40k just last week \\nOn top of the 20 with my babe\\ndon’t care for what niggas say",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-08-27T15:33:51.550Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "",
      "duration": 105.32
    },
    {
      "id": "b41a8b91-3d88-4ebd-a6cf-732764b24954",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-044",
      "lyric": "Yea your were the best I could get \\nBut I knew that it couldn’t last \\nStayed down since we were friends \\nHad to leave those thoughts in the past \\nMade like 40k just last week \\nOn top of the 20 with my babe\\ndon’t care for what niggas say",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-08-27T15:33:51.550Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "",
      "duration": 148.16
    }
  ]
}
```

De esta manera se completa la operación de añadir voces a una canción a capela subida sin acompañamiento, y el resultado es similar al anterior.

## Función Remaster

En diciembre de 2025, Suno lanzó la nueva función Remaster. Esta función puede regenerar canciones, no puede utilizarse entre cuentas, y luego también debemos rellenar los siguientes parámetros:

* action: el contenido es `remaster`.
* audio\_id: el ID de la canción que necesita regenerarse.
* model: solo admite v4.5+ y v5.
* variation\_category: solo se admite en versiones v5 o superiores, y solo tiene 3 valores: high, normal y subtle.

Después de completar los campos, el código se genera automáticamente como se muestra a continuación:

![](https://cdn.acedata.cloud/7h4zmw.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "remaster",
    "variation_category": "high",
    "audio_id": "21fd46d4-45c3-4826-bec9-3f3df667902e"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Haz clic en ejecutar y podrás ver que obtendrás un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "791ee74c-9363-4352-afe7-babb19b89899",
  "trace_id": "77acda57-c3d4-4e11-a506-4f50e0609916",
  "data": [
    {
      "id": "b0515cdf-9cb5-46cd-b0fe-10a239dc9274",
      "title": "Navidad en costura  (Remastered)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-045",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-046",
      "lyric": "En Teror las clases siguen,\nni en Navidad hay parón;\ncose el grupo entre villancicos\ny un buen trocito de turrón.\nLa Popular abre sus puertas,\ny el taller suena mejor;\nhilo, aguja y canto alegre\nlo pasaremos mejor\nSeguimos en las costuras,\ncon música y diversión;\nlos alumnos comeremos\nGolosinas un montón ",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-12-04T13:09:59.936Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "Villancico",
      "duration": 32.2
    },
    {
      "id": "06edab94-a4f9-4c0c-abac-a2e8a97c76a8",
      "title": "Navidad en costura  (Remastered)",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-047",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-048",
      "lyric": "En Teror las clases siguen,\nni en Navidad hay parón;\ncose el grupo entre villancicos\ny un buen trocito de turrón.\nLa Popular abre sus puertas,\ny el taller suena mejor;\nhilo, aguja y canto alegre\nlo pasaremos mejor\nSeguimos en las costuras,\ncon música y diversión;\nlos alumnos comeremos\nGolosinas un montón ",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2025-12-04T13:09:59.936Z",
      "model": "chirp-v4",
      "state": "succeeded",
      "style": "Villancico",
      "duration": 32.2
    }
  ]
}
```

De esta manera se completa la operación de regenerar una canción ya generada, y el resultado es similar al anterior.

## Función de generación de mezclas Mashup

En diciembre de 2025, Suno lanzó la nueva función Mashup. Esta función puede generar canciones basándose en dos canciones de referencia, y luego también debemos rellenar los siguientes parámetros:

* action: el contenido es `mashup`.
* mashup\_audio\_ids: los ID de las dos canciones de referencia.
  Después de completar el formulario, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/8mo82l.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "mashup",
    "lyric": "Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nSambuy come, Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\nSambuy come back",
    "model": "chirp-v4-5",
    "custom": True,
    "instrumental": False,
    "mashup_audio_ids": ["9f102969-0024-479e-b38f-c0c5db21383d","6aebb715-701c-433f-b976-a7ff5cf16255"]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Al hacer clic en ejecutar, se puede observar que se obtiene un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "3fe070eb-2ab1-4424-909c-acfe3ca761af",
  "trace_id": "2b220382-7a84-4853-ae43-05cdcad233a9",
  "data": [
    {
      "id": "5ff751dc-0e72-4de9-a54b-2cad50984b47",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-049",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-050",
      "lyric": "Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nSambuy come, Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\nSambuy come back",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-01-25T15:13:30.181Z",
      "model": "chirp-v4-5",
      "state": "succeeded",
      "style": "",
      "duration": 219.08
    },
    {
      "id": "19c515c4-d7b3-4a17-8ab0-dd1ebd4861b8",
      "title": "",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-051",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-052",
      "lyric": "Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nSambuy come, Sambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\n\\nSambuy come  \\nSambuy come back  \\nBluespawn, greenspawn are making you a spawn  \\nSambuy come back",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-01-25T15:13:30.181Z",
      "model": "chirp-v4-5",
      "state": "succeeded",
      "style": "",
      "duration": 163.12
    }
  ]
}
```

De esta manera, se completa la operación de generación de mezcla de canciones de referencia, y el resultado es similar al anterior.

## Samples Generar canciones mediante muestreo

Aquí, `samples` se refiere al muestreo de un intervalo de un único audio: se seleccionan los tiempos de inicio y finalización de un audio existente, y el fragmento se utiliza como material de muestreo para la creación. Es diferente de la función de creación de inspiración Inspo que utiliza de 1 a 4 segmentos completos de audio de referencia a continuación. Se deben completar los siguientes parámetros:

* action: el contenido es `samples`.
* samples\_start: tiempo de inicio del muestreo.
* samples\_end: tiempo de finalización del muestreo.
* audio\_id: el ID de la canción de referencia que se debe muestrear.

Después de completar el formulario, se genera automáticamente el siguiente código:

![](https://cdn.acedata.cloud/vkzumz.png)

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "samples",
    "model": "chirp-v5",
    "lyric": "[Verse 1]\\nPhone lit up\\nHeadline in my hand\\nFeels made up\\nStill says “you won’t understand”\\nYour name\\nMy name\\nSide by side in the scroll\\nCold black text\\nOn a story I used to hold\\n\\n[Chorus]\\nYou’re breaking news\\nAnd I’m just breaking\\nFront-page truth\\nHeart still shaking\\nEverybody reads\\nWhat we already knew\\nYou’re a story now\\nAnd I’m the one you broke it to\\n\\n[Verse 2]\\nNeighbors talk\\nThrough a half-closed door\\nCoffee cools\\nOn a cracked old floor\\nYour suitcase snaps\\nLike a camera flash\\nOne last quote\\nThen you cut to black\\n\\n[Chorus]\\nYou’re breaking news\\nAnd I’m just breaking\\nFront-page truth\\nHeart still shaking\\nEverybody reads\\nWhat we already knew\\nYou’re a story now\\nAnd I’m the one you broke it to\\n\\n[Bridge]\\nIs there a line\\nWhere we rewind\\nOr just a feed\\nThat leaves us behind\\nTell me\\nWho gets\\nThe final view\\nWhen I stop trending\\nWith you\\n\\n[Chorus]\\nYou’re breaking news\\nAnd I’m just breaking\\nFront-page truth\\nHeart still shaking\\nEverybody reads\\nWhat we already knew\\nYou’re a story now\\nAnd I’m the one you broke it to (yeah)",
    "custom": True,
    "instrumental": False,
    "audio_id": "0fa07665-6b8e-4a8b-8bd3-7e0cfcdada88",
    "samples_end": 102.16,
    "samples_start": 59.88
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Al hacer clic en ejecutar, se puede observar que se obtiene un resultado, como se muestra a continuación:

```json theme={null}
{
  "success": true,
  "task_id": "12135a45-6384-4683-9bb1-64f19933915a",
  "trace_id": "683e559d-340e-4c72-8fae-e683442ac7e9",
  "data": [
    {
      "id": "9a0b680f-a9ea-4a36-8695-8ea777ab6ee7",
      "title": "Whistle in the Wind",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-053",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-054",
      "lyric": "[Verse 1]\nPhone lit up\nHeadline in my hand\nFeels made up\nStill says “you won’t understand”\nYour name\nMy name\nSide by side in the scroll\nCold black text\nOn a story I used to hold\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to\n[Verse 2]\nNeighbors talk\nThrough a half-closed door\nCoffee cools\nOn a cracked old floor\nYour suitcase snaps\nLike a camera flash\nOne last quote\nThen you cut to black\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to\n[Bridge]\nIs there a line\nWhere we rewind\nOr just a feed\nThat leaves us behind\nTell me\nWho gets\nThe final view\nWhen I stop trending\nWith you\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to (yeah)",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-01-31T14:34:45.043Z",
      "model": "chirp-v5",
      "state": "succeeded",
      "style": "acoustic with a hint of optimism,folk-pop,female vocals",
      "duration": 176.92
    },
    {
      "id": "66473dee-3aaf-43b2-80fd-76568b3abbb1",
      "title": "Whistle in the Wind",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-055",
      "image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-056",
      "lyric": "[Verse 1]\nPhone lit up\nHeadline in my hand\nFeels made up\nStill says “you won’t understand”\nYour name\nMy name\nSide by side in the scroll\nCold black text\nOn a story I used to hold\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to\n[Verse 2]\nNeighbors talk\nThrough a half-closed door\nCoffee cools\nOn a cracked old floor\nYour suitcase snaps\nLike a camera flash\nOne last quote\nThen you cut to black\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to\n[Bridge]\nIs there a line\nWhere we rewind\nOr just a feed\nThat leaves us behind\nTell me\nWho gets\nThe final view\nWhen I stop trending\nWith you\n[Chorus]\nYou’re breaking news\nAnd I’m just breaking\nFront-page truth\nHeart still shaking\nEverybody reads\nWhat we already knew\nYou’re a story now\nAnd I’m the one you broke it to (yeah)",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "",
      "created_at": "2026-01-31T14:34:45.043Z",
      "model": "chirp-v5",
      "state": "succeeded",
      "style": "acoustic with a hint of optimism,folk-pop,female vocals",
      "duration": 177.48
    }
  ]
}
```

De esta manera se completa la operación de generar canciones mediante muestreo, y el resultado es similar al anterior.

## Función de creación por inspiración de Inspo

La función de creación por inspiración de Inspo puede generar música nueva basándose en 1 a 4 segmentos completos de audio de referencia, y admite arrastrar o cargar audio como fuente de inspiración. La API utiliza la acción existente `inspo`: el cliente proporciona URL de audio accesibles públicamente, y el servicio completa automáticamente la preparación del audio de referencia y la creación, sin necesidad de que el cliente lea por separado la letra, el estilo o la duración para luego ensamblar la solicitud. Es diferente del muestreo por intervalos anterior y también diferente de Cover, que replica el estilo de la canción original. Al utilizarla, se deben completar los siguientes parámetros:

* action: el contenido es `inspo`.
* audio\_urls: lista de URL de audio de referencia; se deben proporcionar de 1 a 4 direcciones de audio accesibles públicamente.
* model: el modelo utilizado; se recomienda `chirp-v6`.
* prompt: letra o palabras clave de creación (opcional).

> Nota: el audio de referencia debe ser un archivo de audio accesible públicamente. Si el audio de referencia coincide exactamente con una grabación conocida en la biblioteca musical de la plataforma, Suno podría rechazar la generación debido a la verificación de derechos de autor; se recomienda utilizar audio propio o generado por Suno como fuente de inspiración.

El código Python correspondiente:

```python theme={null}
import requests

url = "https://api.acedata.cloud/suno/audios"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "inspo",
    "model": "chirp-v6",
    "audio_urls": [
        "https://cdn.acedata.cloud/uploads/a0bc051f-42c2-4a46-aeb4-582dcc884ad2"
    ],
    "prompt": "Rework these references as warm acoustic folk with soft vocals"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

A continuación se conserva una instantánea de respuesta histórica ya verificada; la instantánea utiliza el `chirp-v5` de ese momento, el ejemplo de solicitud actual recomienda `chirp-v6`, y la estructura de respuesta es la misma:

```json theme={null}
{
    "success": true,
    "task_id": "725e6b41-78d0-4adf-856c-05e81098c029",
    "trace_id": "8c2f0b3e-2f6a-4738-8b1d-c58068ca3dab",
    "data": [
        {
            "id": "20ca5628-86e0-4c32-8ae4-9f0c481e45f3",
            "title": "Inspo Demo",
            "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-057",
            "lyric": "",
            "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
            "video_url": "",
            "created_at": "2026-06-18T13:01:53.910Z",
            "model": "chirp-v5",
            "state": "succeeded",
            "style": "acoustic, folk, warm",
            "duration": 36.92
        },
        {
            "id": "8744a796-9961-45af-868d-4f3bc1c44257",
            "title": "Inspo Demo",
            "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-058",
            "lyric": "",
            "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
            "video_url": "",
            "created_at": "2026-06-18T13:01:53.910Z",
            "model": "chirp-v5",
            "state": "succeeded",
            "style": "acoustic, folk, warm",
            "duration": 84.16
        }
    ]
}
```

De esta manera se completa la operación de creación por inspiración, y el resultado devuelto es el mismo que el de la generación normal de canciones.

## Devolución de llamada asíncrona

Dado que Suno tarda relativamente mucho tiempo en generar música, aproximadamente 1-2 minutos, si la API no responde durante mucho tiempo, la solicitud HTTP mantendrá la conexión abierta, lo que provoca un consumo adicional de recursos del sistema, por lo que esta API también proporciona soporte para devoluciones de llamada asíncronas.

El proceso general es: cuando el cliente inicia una solicitud, especifica adicionalmente un campo `callback_url`; después de que el cliente inicia una solicitud a la API, la API devolverá inmediatamente un resultado que contiene un campo `task_id`, que representa el ID de la tarea actual. Cuando la tarea se completa, el resultado de la generación de música se enviará mediante POST JSON al `callback_url` especificado por el cliente, que también incluye el campo `task_id`, de esta forma los resultados de la tarea pueden asociarse mediante el ID.

A continuación, entenderemos cómo operar específicamente mediante un ejemplo.

Primero, la devolución de llamada Webhook es un servicio que puede recibir solicitudes HTTP; los desarrolladores deben reemplazarla por la URL de su propio servidor HTTP implementado. Aquí, para facilitar la demostración, se utiliza un sitio web público de ejemplo de Webhook [https://webhook.site/](https://webhook.site/); al abrir este sitio web se puede obtener una URL de Webhook, como se muestra en la imagen:

![](https://cdn.acedata.cloud/fwfqin.png)

Copie esta URL para poder utilizarla como Webhook; el ejemplo aquí es [https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2](https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2).

A continuación, podemos establecer el campo `callback_url` con la URL de Webhook anterior y, al mismo tiempo, rellenar `prompt`, como se muestra en la imagen:

![](https://cdn.acedata.cloud/x8xql1.png)

Haga clic en ejecutar; podrá observar que se obtiene inmediatamente un resultado, como el siguiente:

```
{
  "task_id": "44472ab8-783b-4054-b861-5bf14e462f60"
}
```

Espere un momento; podremos observar el resultado de la generación de la canción en [https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2](https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2), como se muestra en la imagen:

![](https://cdn.acedata.cloud/f9kosb.png)

El contenido es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "44472ab8-783b-4054-b861-5bf14e462f60",
  "data": [
    {
      "id": "da4324e5-84b2-484b-b0e9-dd261381c594",
      "title": "Winter Whispers",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-059",
      "lyric": "[Verse]\nSnow falling gently from the sky\nChildren giggling as they pass by\nFire crackling\nCozy and warm\nChristmas spirit begins to swarm\n[Verse 2]\nTwinkling lights\nA sight to behold\nStockings hung\nWaiting to be filled with gold\nGifts wrapped with love\nPiled high\nExcitement in the air\nYou can't deny\n[Chorus]\nWinter whispers in the wind\nJoy and love it brings\nLet's celebrate this season\nWith the ones we're missing",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "https://cdn.acedata.cloud/assets/examples/gemini/04a043bd-6b23-4b4e-945c-ce48158c3eee-3a89912507c7.mp4?example=video-003",
      "created_at": "2024-05-11T07:33:05.430Z",
      "model": "chirp-v3",
      "prompt": "A song for Christmas",
      "style": "pop"
    },
    {
      "id": "b878a87b-a0db-4046-8ccd-ecd2fb3d4372",
      "title": "Winter Whispers",
      "image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-060",
      "lyric": "[Verse]\nSnow falling gently from the sky\nChildren giggling as they pass by\nFire crackling\nCozy and warm\nChristmas spirit begins to swarm\n[Verse 2]\nTwinkling lights\nA sight to behold\nStockings hung\nWaiting to be filled with gold\nGifts wrapped with love\nPiled high\nExcitement in the air\nYou can't deny\n[Chorus]\nWinter whispers in the wind\nJoy and love it brings\nLet's celebrate this season\nWith the ones we're missing",
      "audio_url": "https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3",
      "video_url": "https://cdn.acedata.cloud/assets/examples/gemini/04a043bd-6b23-4b4e-945c-ce48158c3eee-3a89912507c7.mp4?example=video-004",
      "created_at": "2024-05-11T07:33:05.430Z",
      "model": "chirp-v3",
      "prompt": "A song for Christmas",
      "style": "pop"
    }
  ]
}
```

Se puede ver que hay un campo `task_id` en el resultado; los demás campos son similares a los anteriores, y la asociación de tareas puede realizarse mediante este campo.

Por supuesto, también podemos obtener los resultados mediante llamadas de flujo; solo necesitamos establecer el valor de `accept` en el encabezado de la solicitud como `application/x-ndjson`. A continuación, se utiliza una entrada de ejemplo como demostración:

![](https://cdn.acedata.cloud/vgffvk.png)

Durante la espera podemos obtener la siguiente salida:
La respuesta en streaming enviará secuencialmente el estado de procesamiento y el resultado final para el mismo `task_id`; arriba solo se conservan la primera y la última respuesta real, omitiendo las actualizaciones intermedias repetidas.

## Manejo de errores

Si ocurre un error, obtendrá un mensaje de error similar al siguiente:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "forbidden",
    "message": "Song Description contained artist name: eminem"
  },
  "trace_id": "9bb7c2f4-3b7b-4965-b50a-f663874b1b6f",
  "task_id": "9bb3a2a6-c438-436d-a9f3-fa466abc077c"
}
```

A continuación se muestra la lista de HTTP Status Code, `error.code`, `error.message`:

> Nota: Los límites y los textos de error de distintas cuentas upstream pueden variar. Por lo general, `chirp-v3-5`/`chirp-v4` tienen límites más bajos para `style` (200), mientras que `chirp-v4-5` y superiores suelen admitir hasta 1000; al usar un upstream antiguo, pueden aparecer textos de compatibilidad como `Tags too long.` o `style must be less than or equal 120`.
> \| Código de estado | `error.code`  | `error.message`                                                 |
> \| ---------------- | ------------- | --------------------------------------------------------------- |
> \| 400              | `bad_request` | `El id de la canción no existe o se ha desconectado.`           |
> \| 400              | `bad_request` | `La indicación es demasiado larga.`                             |
> \| 400              | `bad_request` | `Las etiquetas son demasiado largas.`                           |
> \| 400              | `bad_request` | `El audio subido coincide con una obra de arte existente.`      |
> \| 400              | `bad_request` | `instrumental debe ser un booleano`                             |
> \| 400              | `bad_request` | `El título es demasiado largo.`                                 |
> \| 400              | `bad_request` | `El tema es demasiado largo.`                                   |
> \| 400              | `bad_request` | `style debe ser menor o igual a 120`                            |
> \| 400              | `bad_request` | `custom debe ser un booleano`                                   |
> \| 400              | `bad_request` | `audio_id es obligatorio al extender audio`                     |
> \| 400              | `bad_request` | `continue_at es obligatorio al extender audio`                  |
> \| 400              | `bad_request` | `continue_at debe ser un número mayor que 0`                    |
> \| 400              | `bad_request` | `lyric es obligatorio al extender audio y instrumental es falso` |
> \| 400              | `bad_request` | `prompt es obligatorio al generar audio`                        |
> \| 400              | `bad_request` | `lyric es obligatorio al generar audio personalizado`           |
> \| 403              | `forbidden`   | `La indicación probablemente está malformada`                   |
> \| 403              | `forbidden`   | `La indicación probablemente tiene derechos de autor`           |
> \| 403              | `forbidden`   | `La indicación contenía material inapropiado`                   |
> \| 403              | `forbidden`   | `La descripción de la canción fue marcada para moderación`      |
> \| 403              | `forbidden`   | `La descripción de la canción contenía el nombre de un artista` |
> \| 403              | `forbidden`   | `Las etiquetas contenían el nombre de un artista`               |
> \| 403              | `forbidden`   | `La letra contenía material con derechos de autor`              |
> \| 403              | `forbidden`   | `La descripción de la canción contenía una etiqueta de productor` |
> \| 403              | `forbidden`   | `Error genérico de openAI`                                      |
> \| 403              | `forbidden`   | `La indicación fue marcada para moderación`                     |
> \| 500              | `api_error`   | `No se puede generar letra a partir de la descripción de la canción` |
> \| 500              | `api_error`   | `el trabajo falló con un error desconocido`                     |
> \| 500              | `api_error`   | `no hay trabajador disponible en el sistema`                    |
> \| 500              | `api_error`   | `servicio en mantenimiento, generación pausada`                 |
> \| 504              | `timeout`     | `tiempo de espera agotado mientras se esperaba la generación de audio` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.