> ## 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.

# Instrukcja integracji API generowania piosenek Suno

> Suno Music Generation API guide - Ace Data Cloud

Wraz z coraz szerszym zastosowaniem AI, różnego rodzaju programy AI stopniowo stają się powszechne. AI stopniowo przeniknęła do wszystkich aspektów pracy i życia ludzi. Coraz więcej jest również branż związanych z AI — od początkowego pisania, przez opiekę medyczną i edukację, aż po obecną muzykę.

Suno to profesjonalna platforma AI do tworzenia wysokiej jakości piosenek i muzyki. Użytkownicy muszą jedynie wprowadzić proste tekstowe podpowiedzi, aby na podstawie gatunku, stylu i tekstu wygenerować piosenki z wokalem. Ten generator muzyki AI został opracowany przez członków zespołu z renomowanych firm technologicznych, takich jak Meta, TikTok i Kensho, a jego celem jest umożliwienie wszystkim tworzenia pięknej muzyki bez potrzeby używania jakichkolwiek instrumentów.

Poniżej przedstawiono postęp aktualizacji modeli:

| Wersja | model | Data wdrożenia | Limit lyric | Limit style | Maksymalna długość piosenki |
| - | - | - | - | - | - |
| 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 minut |
| v5 | chirp-v5 | 2025.09.23 | 5000 | 1000 | 8 minut |
| v4.5+ | chirp-v4-5-plus | 2025.07.17 | 5000 | 1000 | 8 minut |
| v4.5 | chirp-v4-5 | 2025.05.03 | 5000 | 1000 | 4 minuty |
| v4 | chirp-v4 | 2024.12.17 | 3000 | 200 | 150 sekund |
| v3.5 | chirp-v3-5 | --- | 3000 | 200 | 120 sekund |

> Limity `lyric` i `style` w powyższej tabeli są górnymi limitami w trybie niestandardowym (`custom` ma wartość `true`). W nieniestandardowym trybie inspiracji (`custom` ma wartość `false`) należy wypełnić tylko `prompt`, którego maksymalna długość wynosi 500 znaków (taka sama dla wszystkich modeli).

Suno obsługuje obecnie `chirp-v6`, `chirp-v6-wild` i `chirp-v6-mini`. Zaleca się używanie `chirp-v6`; nazwy starszych modeli są nadal kompatybilne.

Jednak Suno oficjalnie nie udostępnia API. AceDataCloud oferuje zestaw API Suno, który symuluje integrację z oficjalnym Suno i umożliwia wygodne oraz szybkie generowanie wybranej muzyki.

## Aplikowanie i korzystanie

Aby korzystać z Suno Audios Generation API, najpierw przejdź do [konsoli Ace Data Cloud](https://platform.acedata.cloud/console/applications), aby uzyskać swój API Token i zachowaj go na później.

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

Jeśli nie jesteś jeszcze zalogowany ani zarejestrowany, nastąpi automatyczne przekierowanie na stronę logowania z zaproszeniem do rejestracji i logowania. Po zakończeniu automatycznie wrócisz na bieżącą stronę.

**Jeden API Token pozwala wywoływać wszystkie usługi platformy, bez potrzeby osobnego aplikowania dla każdej usługi.** Przy pierwszym zgłoszeniu otrzymasz bezpłatny limit, aby móc korzystać z bezpłatnej wersji próbnej; gdy limit będzie niewystarczający, możesz doładować uniwersalne saldo w [konsoli](https://platform.acedata.cloud/console/coin).

> 📘 Pełna dokumentacja: [Suno Audios Generation API →](https://platform.acedata.cloud/documents/suno-audios)

## Podstawowe użycie

Jakie piosenki chcesz, możesz dowolnie wprowadzić fragment tekstu. Na przykład, jeśli chcę wygenerować piosenkę o Bożym Narodzeniu, mogę wprowadzić `a song for Christmas`, jak pokazano na ilustracji:

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

Można zobaczyć, że ustawiliśmy tutaj Request Headers, w tym:

* `accept`: jaki format odpowiedzi chcesz otrzymać; tutaj wpisz `application/json`, czyli format JSON.
* `authorization`: klucz do wywoływania API, który po aplikowaniu można bezpośrednio wybrać z listy rozwijanej.

Dodatkowo ustawiono Request Body, w tym:

* `action`: typ zadania audio, domyślnie `generate`. Obsługuje operacje takie jak generowanie, kontynuacja, cover, łączenie, rozdzielanie ścieżek, dodawanie ścieżek audio, wyodrębnianie wskazanych ścieżek audio, generowanie efektów dźwiękowych i dostosowywanie prędkości itd.; wszystkie są wywoływane jednolicie przez `POST /suno/audios`.
* `prompt`: podpowiedź trybu inspiracji Suno Official (obowiązuje, gdy `custom` ma wartość `false`), maksymalnie 500 znaków.
* `model`: model dla tego zadania generowania muzyki. Seria v6 obejmuje `chirp-v6`, `chirp-v6-wild` i `chirp-v6-mini`; nazwy starszych modeli są nadal kompatybilne.
* `max_mode`: ulepszony tryb generowania. `generate` jest włączany tylko wtedy, gdy zarówno `custom`, jak i `max_mode` mają wartość `true`, a koszt wynosi 1.12 Credits; `add_stem` można włączyć bezpośrednio, a koszt wynosi 1.344 Credits. Gdy jest wyłączony lub pominięty, koszty wynoszą odpowiednio 0.56 i 0.672 Credits.
* `variety`: intensywność różnorodności wyników generowania, opcje to `off`, `normal`, `high`, `extra`, `max`. Używane tylko dla `generate` i `add_stem`; przekazanie dla innych action zwróci 400.
* `lyric`: treść tekstu piosenki w niestandardowym trybie Suno Official. Maksymalnie 3000 znaków dla `chirp-v3-5` i `chirp-v4`; maksymalnie 5000 znaków dla `chirp-v4-5` i wyższych (w tym `chirp-v5`, `chirp-v5-5`).
* `custom`: czy używać trybu niestandardowego, domyślnie: `false`.
* `instrumental`: opcja muzyki instrumentalnej w trybie inspiracji Suno Official.
* `title`: tytuł utworu w niestandardowym trybie Suno Official. Maksymalnie 80 znaków dla `chirp-v3-5`, `chirp-v4`; maksymalnie 100 znaków dla `chirp-v4-5` i wyższych.
* `style`: styl muzyczny w niestandardowym trybie Suno Official. Maksymalnie 200 znaków dla `chirp-v3-5` i `chirp-v4`; maksymalnie 1000 znaków dla `chirp-v4-5` i wyższych (w tym `chirp-v5`, `chirp-v5-5`).
* `negative_tags`: style muzyczne lub gatunki, które mają zostać wykluczone z wyników generowania w trybie niestandardowym (gdy `custom` ma wartość `true`).
* `audio_weight`: waga wpływu cech audio lub głosu, w zakresie 0-1; `0` również jest prawidłową wartością. Może być używana w operacjach generowania, kontynuacji, coveru, dodawania ścieżek audio i spójności głosu itd.; gdy nie ma referencyjnego audio ani cech głosu, model może osłabić lub zignorować tę wartość.
* `audio_id`: ID muzyki referencyjnej.
* `overpainting_start`/`overpainting_end`: czas rozpoczęcia i zakończenia dodawania wokalu do istniejącej muzyki instrumentalnej, w sekundach.
* `underpainting_start`/`underpainting_end`: czas rozpoczęcia i zakończenia dodawania akompaniamentu do śpiewu a cappella, w sekundach.
* `persona_id`: ID utworu artysty.
* `continue_at`: granica kontynuacji, w sekundach. Na przykład 213.5 oznacza rozpoczęcie generowania kolejnego fragmentu od 3 minuty i 33.5 sekundy. `lyric` i `style` kierują tylko nową treścią po granicy i nie zastępują tekstu ani śpiewu przed granicą w źródłowym audio.
* `style_influence`: wpływ stylu w trybie niestandardowym, w zakresie 0-1; większa wartość zazwyczaj lepiej dopasowuje do wybranego stylu; `0` zostanie przekazane jako prawidłowa wartość.
* `replace_section_end`: końcowy czas zastępowanego fragmentu.
* `replace_section_start`: początkowy czas zastępowanego fragmentu.
* `vocal_gender`: kontroluje preferencję głosu żeńskiego lub męskiego, głos żeński `f`, głos męski `m`; obowiązuje dla modeli 4.5 i wyższych; jest to preferencja i nie gwarantuje ścisłego przestrzegania.
* `weirdness`: dziwaczność w trybie niestandardowym, w zakresie 0-1; większa wartość zwykle oznacza więcej kreatywności i eksperymentalności; `0` zostanie przekazane jako prawidłowa wartość.
* `duration`: oczekiwany czas trwania utworu, w sekundach, musi być liczbą całkowitą w zakresie od 10 do 360. Ten parametr jest używany do generowania utworów w trybie niestandardowym (gdy `custom` ma wartość `true`). Jest to wskazówka dotycząca preferencji, a nie twarde ograniczenie: model weźmie ją pod uwagę, ale nie gwarantuje jej osiągnięcia; rzeczywisty czas trwania gotowego utworu zależy od pola `duration` w odpowiedzi i zazwyczaj jest krótszy niż oczekiwany.

### Zakres zastosowania parametrów zaawansowanych

| Parametr | Wartość | Obsługiwane action | Opis |
| - | - | - | - |
| `weirdness` | 0-1 | Opcjonalne | Reguluje eksperymentalność, `0` jest prawidłową wartością; efekt zależy od operacji, trybu i modelu |
| `style_influence` | 0-1 | Opcjonalne | Reguluje tendencję do przestrzegania stylu, `0` jest prawidłową wartością; efekt zależy od operacji, trybu i modelu |
| `audio_weight` | 0-1 | Opcjonalne | Reguluje wpływ cech audio lub głosu; przy braku informacji referencyjnych może zostać zignorowany przez model |
| `variety` | `off` / `normal` / `high` / `extra` / `max` | `generate`, `add_stem` | Reguluje różnorodność stylów między wynikami |
| `max_mode` | boolean | `generate` (wymaga `custom=true`), `add_stem` | Zwiększa spójność i jest rozliczany według trybu ulepszonego |
| `vocal_gender` | `f` / `m` | Operacje generowania obsługujące kontrolę wokalu | Preferencja, nie gwarantuje ścisłego przestrzegania |
| `duration` | Liczba całkowita 10-360 | Opcjonalne | Oczekiwany czas trwania; konkretna operacja, tryb lub model może go zignorować |

Platforma sprawdza typy parametrów i zakresy wartości, ale nie odrzuca tych opcjonalnych elementów regulacji wyłącznie z powodu różnic w action; konkretny efekt zależy od operacji, trybu i modelu.

* `lyric_prompt`: prompt do generowania tekstu piosenki, obowiązuje wtedy i tylko wtedy, gdy `custom` ma wartość `true` oraz `lyric` nie zostało przekazane.
* `callback_url`: URL, na który ma zostać przekazany wynik wywołania zwrotnego.
* `async`: opcjonalne; gdy ustawione na `true`, interfejs natychmiast zwraca `task_id`, bez konieczności podawania `callback_url`, a następnie wynik jest uzyskiwany przez odpytywanie odpowiedniego interfejsu zapytań o zadania.

Wygenerowany kod jest następujący:

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

Możesz kliknąć przycisk „Try”, aby bezpośrednio przetestować API, poczekać 1–2 minuty, a wynik będzie następujący:

```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
    }
  ]
}
```

Można zauważyć, że w tym momencie otrzymaliśmy zawartość dwóch piosenek, w tym tytuł, obraz podglądu, tekst, audio, wideo i inne informacje.

Opis pól jest następujący:

* success：czy generowanie zakończyło się powodzeniem; jeśli tak, wartość wynosi `true`, w przeciwnym razie `false`
* data：jest listą zawierającą szczegółowe informacje o wygenerowanych piosenkach.
  * state： status generowania piosenki, obejmuje głównie cztery rodzaje, konkretnie:
    * succeeded：wygenerowano pomyślnie
    * pending：w kolejce
    * running：w trakcie wykonywania
    * error：niepowodzenie
  * id：ID piosenki
  * title：tytuł piosenki
  * image\_url：obraz okładki piosenki
  * lyric：tekst piosenki
  * audio\_url：adres końcowego pliku audio piosenki. Platforma w pierwszej kolejności zwróci adres Ace Data Cloud CDN; jeśli trwałe zapisanie się nie powiedzie, może zostać zwrócony oryginalny adres mediów, należy go niezwłocznie pobrać.
  * video\_url：plik wideo piosenki, po otwarciu jest to wideo mp4.
  * created\_at：czas utworzenia
  * model：użyty model, zazwyczaj najnowszy model v3
  * style：styl

## Generowanie niestandardowe

Jeśli chcesz niestandardowo wygenerować tekst piosenki, możesz wprowadzić tekst:

W tym momencie do pola `lyric` można przekazać treść podobną do poniższej:

```
[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
```

> Uwaga, `\n` w tekście piosenki tutaj oznacza znak nowej linii. Jeśli nie wiesz, jak wygenerować tekst piosenki, możesz użyć interfejsu API generowania tekstów dostarczanego przez AceDataCloud, aby wygenerować tekst na podstawie promptu; API to [Suno Lyrics Generation API](https://platform.acedata.cloud/documents/suno-lyrics).

Następnie, aby niestandardowo wygenerować piosenkę na podstawie tekstu, tytułu i stylu, można określić następującą zawartość:

* lyric：tekst piosenki
* custom：ustaw na `true`, co oznacza generowanie niestandardowe; domyślna wartość tego parametru to false, co oznacza generowanie przy użyciu `prompt`.
* title：tytuł piosenki.
* style：styl piosenki, opcjonalnie.

Przykład wypełnienia jest następujący:

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

Po wypełnieniu kod zostanie automatycznie wygenerowany w następujący sposób:

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

Odpowiedni kod:

```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
}'
```

Testowanie jest dozwolone, a efekt generowania jest podobny.

## Funkcja niestandardowego generowania stylu wokalisty

Jeśli chcesz użyć stylu piosenkarza do generowania piosenek, najpierw wygeneruj piosenkę poprzez podstawowe użycie opisane powyżej,
a następnie należy ustawić tę piosenkę jako styl piosenkarza. Potem należy przejść do [Suno Persona API](https://platform.acedata.cloud/documents/suno-persona), aby na podstawie oficjalnie wygenerowanego identyfikatora muzyki `audio_id` wygenerować parametr id stylu piosenkarza `persona_id`; konkretne parametry są pokazane na poniższym obrazku:

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

Po wypełnieniu automatycznie generowany jest następujący kod:

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

Odpowiedni kod Python:

```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)
```

Kliknij uruchom, a zobaczysz, że otrzymasz wynik jak poniżej:

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

Jako przykładowe dane wykorzystamy powyższe `audio_id` i `persona_id`, odpowiednio `97efc9f4-0e8d-4b3e-88df-14568fa1b11f` oraz `e0d7319e-aa2a-44cb-b00a-916218d7cb0b`. Następnie można ustawić parametr `action` na `artist_consistency` (jeśli jest to nowa wersja stylu piosenkarza Persona-v2-vox, `action` musi być ustawione na `artist_consistency_vox`) i wprowadzić ID piosenki, której generowanie ma być kontynuowane, oraz ID stylu piosenkarza, jak pokazano w poniższym przykładzie:

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

Po wypełnieniu automatycznie generowany jest następujący kod:

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

Odpowiedni kod Python:

```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)
```

Kliknij uruchom, a zobaczysz, że otrzymasz wynik jak poniżej:

```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
    }
  ]
}
```

Można zauważyć, że zawartość wyniku jest zgodna z tą powyżej, co realizuje funkcję generowania piosenek z użyciem stylu piosenkarza.

## Funkcja kontynuowania generowania

Jeśli chcesz kontynuować generowanie już wygenerowanej piosenki Suno, możesz ustawić parametr `action` na `extend` i wprowadzić ID piosenki, której generowanie ma być kontynuowane. ID piosenki uzyskuje się poprzez podstawowe użycie; z powyższego tekstu wiadomo, że w tym momencie ID piosenki to:

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

> Uwaga, `id` w tekście piosenki tutaj jest ID piosenki po jej wygenerowaniu. Jeśli nie wiesz, jak wygenerować piosenkę, możesz zapoznać się z podstawowym użyciem opisanym powyżej, aby wygenerować piosenkę.

Jeśli chcesz kontynuować generowanie własnej przesłanej piosenki, możesz ustawić parametr `action` na `upload_extend` i wprowadzić ID własnej przesłanej piosenki, której generowanie ma być kontynuowane. ID piosenki uzyskuje się za pomocą [Suno Upload Generation API](https://platform.acedata.cloud/documents/suno-upload), jak pokazano na poniższym obrazku:

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

Następnie należy wypełnić tekst fragmentu kontynuacji i można określić styl:

* lyric：używane tylko do kierowania tekstem nowo wygenerowanego fragmentu po `continue_at`; nie zastąpi tekstu przed tym punktem czasowym w źródłowym audio.
* custom：ustawienie na `true` oznacza niestandardowe generowanie; domyślna wartość tego parametru to false, co oznacza generowanie z użyciem `prompt`.
* style：styl piosenki dla fragmentu kontynuacji, opcjonalny.
* continue\_at：granica kontynuacji, w sekundach. Na przykład 213.5 oznacza rozpoczęcie generowania kolejnego fragmentu od 3 minut i 33.5 sekundy.

> `extend` służy do dalszego tworzenia na podstawie istniejącej piosenki, a nie do zmiany tekstu całej piosenki. Jeśli chcesz użyć nowego tekstu od początku całej piosenki, użyj `generate`, aby wygenerować ją ponownie; jeśli chcesz ponownie zinterpretować istniejącą piosenkę, możesz użyć `cover`. Po przekazaniu całego nowego tekstu oryginalny tekst przed `continue_at` nadal nie zostanie zastąpiony.

Przykład wypełnienia jest następujący:

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

Po wypełnieniu automatycznie generowany jest następujący kod:

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

Poniżej zachowano rzeczywisty historyczny zrzut wywołania, w którym `continue_at` wynosi 2 sekundy, dlatego tylko pierwsze 2 sekundy należą do oryginalnej treści sprzed granicy kontynuacji. Przy faktycznej kontynuacji w pobliżu końca utworu należy ustawić tę wartość na liczbę sekund, od której oczekuje się rozpoczęcia kontynuacji, oraz podać w `lyric` wyłącznie nowy fragment, który ma być śpiewany po granicy.

Odpowiedni kod Python:

```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)
```

Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:

```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
    }
  ]
}
```

Jak można zauważyć, `lyric` w wyniku zwróci tekst piosenki użyty w tym zadaniu kontynuacji. To pole nie jest dosłowną transkrypcją kompletnego gotowego audio; w przypadku `extend` źródłowe audio przed `continue_at` nadal używa oryginalnego tekstu, a nowy tekst służy jedynie do kierowania fragmentem kontynuacji.

## Pobieranie kompletnej piosenki

Wynik `extend` bieżącego modelu zazwyczaj zawiera już źródłowe audio przed `continue_at` oraz nową treść po granicy, dlatego najpierw należy ocenić na podstawie rzeczywistego czasu trwania i zawartości zwróconego audio, czy jest to już kompletna piosenka. Jeśli zwrócony został niezależny fragment kontynuacji lub konieczne jest jawne połączenie historii wielu kontynuacji w jedną piosenkę, należy następnie użyć funkcji łączenia:

* action: wartość to `concat`.
* audio\_id: ID ostatniego fragmentu kontynuacji.

Na przykład, jeśli ID rozszerzonej piosenki to: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, można ustawić parametry jak poniżej:

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

Pozostałe parametry pozostają bez zmian, a zwrócona zostanie kompletna piosenka, czyli wynik połączenia wszystkich fragmentów piosenki, jednak wynik zawiera tylko jedną piosenkę, jak w poniższym przykładzie:

```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"
        }
      ]
    }
  ]
}
```

## Cover muzyczny

Po kontynuowaniu generowania utworu na podstawie oryginalnego utworu styl zwróconego utworu może nie być zbyt odpowiedni. Jeśli chcesz wykonać cover wcześniej wygenerowanego utworu (obsługiwana jest również niestandardowo przesłana muzyka), musisz użyć metody coveru muzycznego, dzięki czemu możesz określić następującą zawartość:

* action：wartość to `cover`; gdy wykonywana jest operacja coveru na niestandardowo przesłanej muzyce, należy określić wartość jako: `upload_cover`.
* audio\_id：ID wcześniej wygenerowanego utworu.

Na przykład, jeśli ID wcześniej wygenerowanego utworu to: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, możesz ustawić parametry w następujący sposób:

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

Pozostałe parametry pozostają bez zmian, a zwrócony wynik będzie utworem po wykonaniu coveru, czyli wynikiem wykonania coveru wcześniej wygenerowanego utworu, jak w poniższym przykładzie:

```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
    }
  ]
}
```

Wygenerowany wynik jest podobny do powyższego, co kończy proces generowania coveru wcześniej wygenerowanego utworu.

## Zastępowanie fragmentu

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie wtórnej kreacji polegającej na osobnej operacji zastąpienia fragmentu utworu, można wykonać operację zastąpienia określonego fragmentu utworu.

> ⚠️ **Uwaga**：`replace_section_result_mode` domyślnie ma wartość `full_song`: system osobno połączy 2 nowo wygenerowane kandydaty i zwróci 2 kompletne utwory. Jeśli potrzebujesz tylko jeszcze niepołączonych kandydatów zastępowanego fragmentu, jawnie ustaw wartość na `candidates`, a następnie wybierz kandydata i wywołaj [Łączenie muzyki](#音乐拼接).

Opis parametrów jest następujący:

* action：wartość to `replace_section`.
* audio\_id：ID oryginalnego utworu (źródłowego utworu, który zostanie zastąpiony).
* model: model generowania utworu.
* lyric: pełny tekst po zastąpieniu (obejmujący zastępowany segment i jego kontekst, zgodny z treścią w `prompt`).
* prompt：nowy tekst dla segmentu, który ma zostać zastąpiony.
* style：styl utworu, opcjonalny.
* replace\_section\_start：czas rozpoczęcia zastępowanego fragmentu w oryginalnym utworze (w sekundach).
* replace\_section\_end：czas zakończenia zastępowanego fragmentu w oryginalnym utworze (w sekundach).
* replace\_section\_result\_mode：tryb zwracania, domyślnie `full_song`. `full_song` osobno łączy 2 kandydatów i zwraca 2 kompletne utwory; `candidates` zwraca 2 jeszcze niepołączone fragmenty kandydackie.

### Krok pierwszy: rozpoczęcie zadania zastępowania fragmentu

Na przykład, jeśli ID wcześniej wygenerowanego utworu to: 18db7ed0-2b8a-41db-91c1-b0781dcca0d4 (czas trwania 94,12 sekundy) i chcesz zastąpić refren od 30. do 60. sekundy nowym tekstem, możesz ustawić parametry w następujący sposób:

```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"
}
```

Domyślnie zwracane są 2 pełne utwory, każdy złożony z jednego z dwóch kandydatów. Jeśli `replace_section_result_mode` zostanie ustawione na `candidates`, zwrócone zostaną 2 niepołączone jeszcze fragmenty zastępcze, o strukturze zgodnej z poniższym przykładem:

```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
    }
  ]
}
```

W trybie `candidates` długości dwóch zwróconych nagrań audio (45,16 sekundy, 33,8 sekundy) są znacznie krótsze niż oryginalny utwór (94,12 sekundy); są to fragmenty zastępcze zawierające niewielką ilość kontekstu i **nie są** całymi utworami. Można wybrać zadowalającego kandydata, aby kontynuować ręczne łączenie. Domyślny tryb `full_song` wykona natomiast dwa połączenia i bezpośrednio zwróci 2 pełne utwory.

### Bezpośrednie zwracanie pełnych utworów

Jeśli chcesz bezpośrednio uzyskać pełne utwory, w kroku pierwszym możesz ustawić `replace_section_result_mode` na `full_song`. Interfejs połączy odpowiednio dwóch kandydatów i zwróci 2 pełne utwory; wówczas nie ma potrzeby ponownego wywoływania `concat`.

### Krok drugi: połączenie fragmentu zastępczego z powrotem z oryginalnym utworem

Dla wybranego powyżej fragmentu (na przykład `364f9d8b-ca25-463b-9a5e-d0b7139e2d6a`) rozpocznij zadanie `concat` zgodnie z metodą opisaną w sekcji [Łączenie muzyki](#音乐拼接):

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

Zwracany jest połączony pełny utwór, a przykład wygląda następująco:

```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
    }
  ]
}
```

W tym momencie `duration` zostało przywrócone do pełnej długości utworu (105,28 sekundy, w przybliżeniu równej długości oryginalnego utworu), a `audio_url` wskazuje na cały utwór po zakończeniu zastępowania. Tym samym kończy się proces wtórnej twórczości „generowanie → zastępowanie fragmentu → składanie całego utworu”.

## Separacja wokalu i muzyki

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie wtórnej twórczości z osobnymi operacjami na akompaniamencie i wokalu, można oddzielić czysto muzyczny akompaniament i wokal a cappella. Można wtedy określić następującą zawartość:

* action：wartość to `stems`。
* audio\_id：ID wcześniej wygenerowanego utworu。

Na przykład, jeśli ID wcześniej wygenerowanego utworu to: ec13e502-d043-4eb2-92ee-e900c6da69d1, można ustawić parametry w następujący sposób:

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

Za pomocą powyższych parametrów można uzyskać wynik separacji wokalu i muzyki, przedstawiony poniżej:

```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
    }
  ]
}
```

Wygenerowany wynik jest podobny do powyższego, co kończy proces separacji wokalu i muzyki dla wcześniej wygenerowanego utworu.

## Separacja wokalu i muzyki na wszystkich ścieżkach

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie operacji separacji wokalu i muzyki na wszystkich ścieżkach, można określić następującą zawartość:

* action：wartość to `all_stems`。
* audio\_id：ID wcześniej wygenerowanego utworu。

Na przykład, jeśli ID wcześniej wygenerowanego utworu to: bdf23a5a-59f5-4103-b452-054a824a7f9f, można ustawić parametry w następujący sposób:

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

Za pomocą powyższych parametrów można uzyskać wynik separacji wokalu i muzyki na wszystkich ścieżkach, przedstawiony poniżej:

```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": "Struny bezpieczeństwa (Bas)",
      "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": "Struny bezpieczeństwa (Gitara)",
      "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": "Struny bezpieczeństwa (Instrument klawiszowy)",
      "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": "Struny bezpieczeństwa (Perkusja)",
      "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": "Struny bezpieczeństwa (Smyczki)",
      "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": "Struny bezpieczeństwa (Syntezator)",
      "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": "Struny bezpieczeństwa (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": "Struny bezpieczeństwa (Instrumenty dęte blaszane)",
      "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": "Struny bezpieczeństwa (Instrumenty dęte drewniane)",
      "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": "Struny bezpieczeństwa (Wokale)",
      "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": "Struna bezpieczeństwa (Chórki)",
      "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": "Struna bezpieczeństwa (Perkusja)",
      "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": "Struna bezpieczeństwa (Bas)",
      "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": "Struna bezpieczeństwa (Gitara)",
      "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": "Struna bezpieczeństwa (Keyboard)",
      "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": "Struna bezpieczeństwa (Instrumenty perkusyjne)",
      "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": "Struna bezpieczeństwa (Smyczki)",
      "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": "Struna bezpieczeństwa (Syntezator)",
      "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": "Struna bezpieczeństwa (Efekty)",
      "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": "Struna bezpieczeństwa (Instrumenty dęte blaszane)",
      "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": "Struny bezpieczeństwa (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
    }
  ]
}
```

Wygenerowany wynik jest podobny do powyższego, co kończy proces separacji wokalu i muzyki z wcześniej wygenerowanej piosenki.

## Dodawanie ścieżki audio

`add_stem` generuje docelową ścieżkę instrumentu lub głosu dla określonego dźwięku audio, wywoływane przez `POST /suno/audios`.

* Wymagane: `action`, `audio_id`, `stem_type`.
* Opcjonalne: `model`, `prompt`, `title`, `style`, `negative_tags`, `weirdness`, `style_influence`, `audio_weight`, `max_mode`, `variety`.
* Opłata: tryb zwykły 0.672 Credits; gdy `max_mode` ma wartość `true`, 1.344 Credits.

```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
}
```

Odpowiedź w stanie końcowym:

```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}
}
```

## Wyodrębnianie ścieżki audio

`extract_stem` wyodrębnia docelową ścieżkę audio z określonego dźwięku audio, jednocześnie zwracając wersję uzupełniającą po usunięciu tej ścieżki, wywoływane przez `POST /suno/audios`.

* Wymagane: `action`, `audio_id`, `stem_type`.
* Opcjonalne: `audio_format`, obecny publiczny kontrakt dwukanałowy obsługuje tylko `mp3`.
* Opłata: 1.12 Credits.

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

`data` w odpowiedzi w stanie końcowym zachowuje płaską listę audio, a `stem_sets` wskazuje relację między docelową ścieżką audio a ścieżką uzupełniającą:

```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}
}
```

## Generowanie efektów dźwiękowych

`sounds` generuje jednorazowe lub zapętlane efekty dźwiękowe na podstawie opisu tekstowego, wywoływane przez `POST /suno/audios`.

* Wymagane: `action`, `sound`, `sound_type`.
* Opcjonalne: `model`, `bpm`, `key`, `audio_format`; `audio_format` obecnie obsługuje tylko `mp3`.
* `sound_type`: `one-shot` lub `loop`.
* Opłata: 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}
}
```

## Dostosowywanie prędkości audio

`adjust_speed` dostosowuje prędkość odtwarzania określonego audio, wywoływane przez `POST /suno/audios`.

* Wymagane: `action`, `audio_id`, `speed_multiplier`, `title`.
* Opcjonalne: `keep_pitch`.
* `speed_multiplier`: zakres 0.25–4.
* Rozliczenie: 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
}
```

Czas trwania źródłowego audio wynosi 9.8 sekundy, wynik przy prędkości 1.1x wynosi 8.909090909 sekundy:

```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.acedata2.cloud/suno/02534b52-45a7-4961-834a-f473a407e62c.mp3",
      "model": "chirp-v6",
      "state": "succeeded",
      "duration": 8.909090909090908
    }
  ],
  "cost": {"amount": 0.252, "currency": "credit", "list_amount": 0.28}
}
```

Model generujący ma losowość. Interfejs gwarantuje spójność semantyki parametrów, statusu zadania i struktury odpowiedzi, nie gwarantuje całkowicie identycznych przebiegów fal generowanych przez różne żądania.

## Zaawansowane parametry niestandardowego generowania

Oficjalnie zezwala się na używanie w trybie niestandardowym zaawansowanych parametrów `weirdness`==>`Weirdness`, `style_influence`==>`Style Influence`, `audio_weight`==>`Audio Influence` do generowania, odpowiadających następującym oficjalnym przykładom:

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

Zakresy zaawansowanych parametrów mieszczą się wszystkie między 0 a 1, konkretne parametry pokazano na poniższym obrazku:

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

Po wypełnieniu automatycznie generowany jest kod jak poniżej:

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

Odpowiedni kod Python:

```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)
```

Kliknij uruchom, można zauważyć, że zostanie uzyskany wynik, jak poniżej:

```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
    }
  ]
}
```

W ten sposób użyto zaawansowanych parametrów do wygenerowania niestandardowej piosenki, wynik jest podobny do powyższego.

## Kontrolowanie długości piosenki

Domyślnie długość generowanej piosenki jest określana przez model, zwykle wynosi od 30 sekund do 4 minut. Jeśli potrzebny jest dłuższy lub krótszy gotowy utwór, można określić oczekiwaną długość za pomocą parametru `duration`, jednostką są sekundy, a wartość jest liczbą całkowitą od 10 do 360.

Ten parametr jest używany do generowania piosenek w trybie niestandardowym (`custom` ma wartość `true`). Należy szczególnie wyjaśnić, że `duration` jest **wskazówką tendencji, a nie twardym ograniczeniem**: model będzie odnosił się do tej wartości podczas tworzenia, ale nie gwarantuje jej osiągnięcia; w testach rzeczywista długość jest zwykle wyraźnie krótsza od oczekiwanej wartości, a długości dwóch piosenek zwróconych w tym samym żądaniu mogą również różnić się kilkukrotnie. Nawet w przypadku całkowicie identycznych żądań długości uzyskane po wielokrotnym przesłaniu mogą również znacznie się różnić. Dlatego nie należy używać tego jako precyzyjnej kontroli długości; jeśli w zastosowaniu biznesowym potrzebna jest stała długość, należy samodzielnie przyciąć gotowy utwór lub ponowić próbę po jego otrzymaniu.

Odpowiedni kod Python:

```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)
```

Należy zauważyć, że `duration` w żądaniu jest **oczekiwanym czasem trwania**, natomiast pole `duration` każdej piosenki w odpowiedzi `data` jest **rzeczywistym czasem trwania** tej piosenki. Nazwy obu są takie same, ale ich znaczenia są różne; rzeczywisty czas trwania nie musi być równy oczekiwanej wartości. Długość tekstu jest jednym z głównych czynników wpływających na czas trwania gotowego utworu; jeśli potrzebny jest dłuższy gotowy utwór, zaleca się jednoczesne podanie pełniejszego tekstu.

Interfejs sprawdza, czy `duration` jest liczbą całkowitą od 10 do 360; nadal jest to jedynie cel generowania, a nie gwarancja długości gotowego utworu.

## Funkcja Add Insterumental

W sierpniu 2025 roku suno wprowadziło nową funkcję Add Insterumental. Najpierw należy przesłać utwór a cappella bez podkładu muzycznego, aby suno mogło dodać do niego muzykę. Najpierw można przejść do [Suno Upload API](https://platform.acedata.cloud/documents/suno-upload), aby przesłać utwór a cappella bez podkładu muzycznego; odpowiednie operacje są pokazane na poniższym obrazie:

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

Następnie należy zapisać `audio_id` po przesłaniu, a konkretny wynik jest pokazany na poniższym obrazie:

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

Na końcu otrzymujemy `audio_id`: 92254cab-3372-4d9e-bce9-cdcfdbc39070, a następnie musimy jeszcze wypełnić następujące parametry:

* action: wartość to `underpainting`.
* underpainting\_start: czas rozpoczęcia dodawania akompaniamentu do przesłanego utworu, wartość domyślna to 0.
* underpainting\_end: czas zakończenia dodawania akompaniamentu do przesłanego utworu, musi być mniejszy niż całkowity czas trwania utworu.
* audio\_id: ID przesłanego utworu a cappella bez podkładu muzycznego.
* style: styl akompaniamentu, najlepiej bez tekstu, ponieważ w końcu jest to podkład muzyczny.

Po wypełnieniu kod jest automatycznie generowany w następujący sposób:

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

Odpowiedni kod Python:

```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)
```

Klikając uruchom, można zauważyć, że otrzymamy wynik jak poniżej:

```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
    }
  ]
}
```

W ten sposób zakończono operację dodawania muzyki do przesłanego utworu a cappella bez podkładu muzycznego, a wynik jest podobny do opisanego powyżej.

## Funkcja Add Vocals

W sierpniu 2025 roku suno wprowadziło nową funkcję Add Vocals. Najpierw należy przesłać utwór instrumentalny, aby suno napisało tekst i wygenerowało śpiew wokalny. Najpierw można przejść do [Suno Upload API](https://platform.acedata.cloud/documents/suno-upload), aby przesłać utwór a cappella bez podkładu muzycznego; odpowiednie operacje są pokazane na poniższym obrazie:

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

Następnie należy zapisać `audio_id` po przesłaniu, a konkretny wynik jest pokazany na poniższym obrazie:

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

Na końcu otrzymujemy `audio_id`: 92254cab-3372-4d9e-bce9-cdcfdbc39070, a następnie musimy jeszcze wypełnić następujące parametry:

* action: wartość to `overpainting`.
* overpainting\_start: czas rozpoczęcia dodawania wokalu do przesłanego utworu, wartość domyślna to 0.
* overpainting\_end: czas zakończenia dodawania wokalu do przesłanego utworu, musi być mniejszy niż całkowity czas trwania utworu.
* audio\_id: ID przesłanego utworu a cappella bez podkładu muzycznego.
* custom: w tym trybie należy użyć trybu niestandardowego do wprowadzenia tekstu.
* lyric: tekst wprowadzony w trybie niestandardowym.
* style: styl akompaniamentu.

Po wypełnieniu kod jest automatycznie generowany w następujący sposób:

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

Odpowiedni kod Python:

```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)
```

Klikając uruchomienie, można zauważyć, że otrzymamy wynik, jak poniżej:

```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
    }
  ]
}
```

W ten sposób zakończono operację dodawania wokalu do przesłanej piosenki a cappella bez podkładu, wynik jest podobny do powyższego.

## Funkcja Remaster

W grudniu 2025 roku suno wprowadziło nową funkcję Remaster, funkcja ta może ponownie wygenerować piosenkę, nie można tego robić między kontami, następnie musimy jeszcze wypełnić następujące parametry:

* action：wartość to `remaster`。
* audio\_id：ID piosenki, którą należy ponownie wygenerować。
* model：obsługuje tylko v4.5+、v5。
* variation\_category：obsługiwane tylko w wersji v5 i wyższych, a dostępne są tylko 3 wartości: high normal subtle。

Po wypełnieniu automatycznie generowany jest kod, jak poniżej:

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

Odpowiedni kod Python:

```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)
```

Klikając uruchomienie, można zauważyć, że otrzymamy wynik, jak poniżej:

```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
    }
  ]
}
```

W ten sposób zakończono operację ponownego generowania już wygenerowanej piosenki, wynik jest podobny do powyższego.

## Funkcja generowania miksów Mashup

W grudniu 2025 roku suno wprowadziło nową funkcję Mashup, funkcja ta może generować piosenkę na podstawie dwóch referencyjnych piosenek, następnie musimy jeszcze wypełnić następujące parametry:

* action：wartość to `mashup`。
* mashup\_audio\_ids：ID dwóch referencyjnych piosenek。
  Po wypełnieniu formularza kod został automatycznie wygenerowany w następujący sposób:

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

Odpowiadający kod Python:

```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)
```

Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:

```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
    }
  ]
}
```

W ten sposób zakończono operację generowania miksu na podstawie referencyjnych piosenek, a wynik jest podobny do opisanego powyżej.

## Samples generowanie piosenek na podstawie próbek

`Samples` tutaj oznacza pobieranie próbek z pojedynczego fragmentu audio: wybierz czas rozpoczęcia i zakończenia z istniejącego nagrania audio, a następnie użyj tego fragmentu jako materiału do tworzenia. Różni się to od funkcji tworzenia inspirowanego Inspo, która używa od 1 do 4 pełnych referencyjnych nagrań audio, opisanej poniżej. Należy wypełnić następujące parametry:

* action：wartość to `samples`.
* samples\_start：czas rozpoczęcia pobierania próbki.
* samples\_end：czas zakończenia pobierania próbki.
* audio\_id：ID referencyjnej piosenki, z której należy pobrać próbkę.

Po wypełnieniu formularza kod został automatycznie wygenerowany w następujący sposób:

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

Odpowiadający kod Python:

```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)
```

Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:

```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
    }
  ]
}
```

W ten sposób operacja generowania utworu na podstawie próbkowania jest zakończona, a wynik jest podobny do opisanego powyżej.

## Funkcja tworzenia inspirowanego Inspo

Funkcja tworzenia inspirowanego Inspo może generować nową muzykę na podstawie od 1 do 4 pełnych referencyjnych nagrań audio oraz obsługuje przeciąganie i upuszczanie lub przesyłanie audio jako źródła inspiracji. API używa istniejącej akcji `inspo`: klient podaje publicznie dostępne adresy URL audio, a usługa automatycznie kończy przygotowanie referencyjnego audio i tworzenie, bez konieczności osobnego odczytywania przez klienta tekstu, stylu lub długości i składania żądania. Różni się to od opisanego powyżej próbkowania zakresu, a także od Cover odtwarzającego styl oryginalnego utworu. Podczas użycia należy wypełnić następujące parametry:

* action: zawartością jest `inspo`.
* audio\_urls: lista adresów URL referencyjnego audio; należy podać od 1 do 4 publicznie dostępnych adresów audio.
* model: używany model, zalecany jest `chirp-v6`.
* prompt: tekst piosenki lub wskazówki twórcze (opcjonalnie).

> Uwaga: referencyjne audio musi być publicznie dostępnym plikiem audio. Jeśli referencyjne audio idealnie odpowiada znanemu nagraniu w katalogu utworów platformy, Suno może odmówić generowania z powodu weryfikacji praw autorskich; zaleca się używanie własnego audio lub audio wygenerowanego przez Suno jako źródła inspiracji.

Odpowiedni kod Python:

```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)
```

Poniżej zachowano zweryfikowany historyczny zrzut odpowiedzi; zrzut używa ówczesnego `chirp-v5`, w bieżącym przykładzie żądania zalecany jest `chirp-v6`, a struktura zwracanych danych jest taka sama:

```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
        }
    ]
}
```

W ten sposób operacja tworzenia z inspiracji jest zakończona, a zwrócony wynik jest taki sam jak w przypadku zwykłego generowania piosenek.

## Asynchroniczne wywołanie zwrotne

Ponieważ generowanie muzyki przez Suno trwa stosunkowo długo, około 1–2 minut, jeśli API przez długi czas nie odpowiada, żądanie HTTP będzie stale utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych, dlatego to API również zapewnia obsługę asynchronicznych wywołań zwrotnych.

Ogólny proces wygląda następująco: gdy klient inicjuje żądanie, dodatkowo określa pole `callback_url`; po wysłaniu przez klienta żądania API, API natychmiast zwróci wynik zawierający informację w polu `task_id`, reprezentującą bieżący identyfikator zadania. Po zakończeniu zadania wynik generowania muzyki zostanie wysłany w formie POST JSON na `callback_url` określony przez klienta, który również zawiera pole `task_id`, dzięki czemu wynik zadania można powiązać za pomocą identyfikatora.

Poniżej zapoznamy się ze szczegółowym sposobem działania na przykładzie.

Po pierwsze, wywołanie zwrotne Webhook jest usługą, która może odbierać żądania HTTP; programista powinien zastąpić je adresem URL własnego serwera HTTP. W celu wygodnej prezentacji użyto tutaj publicznej przykładowej strony Webhook [https://webhook.site/](https://webhook.site/); po otwarciu tej strony można uzyskać adres URL Webhook, jak pokazano na rysunku:

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

Skopiuj ten URL, aby użyć go jako Webhooka; przykładowy adres tutaj to [https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2](https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2).

Następnie możemy ustawić pole `callback_url` na powyższy adres URL Webhooka, jednocześnie wypełniając `prompt`, jak pokazano na rysunku:

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

Kliknij uruchom, a zobaczysz, że wynik zostanie uzyskany natychmiast, jak poniżej:

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

Po krótkiej chwili możemy zaobserwować wynik wygenerowanej piosenki na [https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2](https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2), jak pokazano na rysunku:

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

Treść jest następująca:

```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"
    }
  ]
}
```

Można zauważyć, że w wyniku znajduje się pole `task_id`, a pozostałe pola są podobne do opisanych powyżej; za pomocą tego pola można zrealizować powiązanie zadań.

Oczywiście możemy również uzyskać wynik poprzez wywołanie strumieniowe; wystarczy ustawić wartość `accept` w nagłówku żądania na `application/x-ndjson`, poniżej użyto przykładowego wejścia jako demonstracji:

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

Podczas oczekiwania możemy uzyskać następujące dane wyjściowe:

```json theme={null}
{"success":true,"task_id":"1af4b454-ce84-4512-a0a2-de3f8574ecd8","data":[{"id":"1f610752-f426-4fd5-89a8-ba2ad0370881","title":"Snowflakes and Mistletoe","lyric":"[Verse]\nLights are tangled on the tree again\nThe cat’s knocked over the wreath\nCookies burning in the oven too\nBut I’m still grinning through my teeth\n[Prechorus]\nSnow is falling like glitter in the sky\nI’ve got a feeling this year’s gonna fly\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe\n[Verse 2]\nGrandma’s singing a little off-key\nThe kids are laughing too loud\nThe dog’s stolen a turkey leg\nChaos is a Christmas crowd\n[Prechorus]\nBut the fire’s crackling\nWarm and bright\nAnd my heart’s a candle tonight\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe","audio_url":"","video_url":"","created_at":"2025-12-13T11:29:25.101Z","model":"chirp-v5","state":"pending","prompt":"A song for Christmas","style":"uplifting, orchestral with bells and acoustic guitar"},{"id":"d1a3109d-799b-401e-b032-4b501bcf26f3","title":"Snowflakes and Mistletoe","lyric":"[Verse]\nLights are tangled on the tree again\nThe cat’s knocked over the wreath\nCookies burning in the oven too\nBut I’m still grinning through my teeth\n[Prechorus]\nSnow is falling like glitter in the sky\nI’ve got a feeling this year’s gonna fly\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe\n[Verse 2]\nGrandma’s singing a little off-key\nThe kids are laughing too loud\nThe dog’s stolen a turkey leg\nChaos is a Christmas crowd\n[Prechorus]\nBut the fire’s crackling\nWarm and bright\nAnd my heart’s a candle tonight\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe","audio_url":"","video_url":"","created_at":"2025-12-13T11:29:25.101Z","model":"chirp-v5","state":"pending","prompt":"A song for Christmas","style":"uplifting, orchestral with bells and acoustic guitar"}]}
{"success":true,"task_id":"1af4b454-ce84-4512-a0a2-de3f8574ecd8","trace_id":"4440342a-41c4-4140-8bb1-3537a598ca2e","data":[{"id":"1f610752-f426-4fd5-89a8-ba2ad0370881","title":"Snowflakes and Mistletoe","image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-073","image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-074","lyric":"[Verse]\nLights are tangled on the tree again\nThe cat’s knocked over the wreath\nCookies burning in the oven too\nBut I’m still grinning through my teeth\n[Prechorus]\nSnow is falling like glitter in the sky\nI’ve got a feeling this year’s gonna fly\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe\n[Verse 2]\nGrandma’s singing a little off-key\nThe kids are laughing too loud\nThe dog’s stolen a turkey leg\nChaos is a Christmas crowd\n[Prechorus]\nBut the fire’s crackling\nWarm and bright\nAnd my heart’s a candle tonight\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe","audio_url":"https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3","video_url":"","created_at":"2025-12-13T11:29:25.101Z","model":"chirp-v5","state":"succeeded","prompt":"A song for Christmas","style":"uplifting, orchestral with bells and acoustic guitar","duration":129.92},{"id":"d1a3109d-799b-401e-b032-4b501bcf26f3","title":"Snowflakes and Mistletoe","image_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-075","image_large_url": "https://cdn.acedata.cloud/e724d7f13d.png?example=image-076","lyric":"[Verse]\nLights are tangled on the tree again\nThe cat’s knocked over the wreath\nCookies burning in the oven too\nBut I’m still grinning through my teeth\n[Prechorus]\nSnow is falling like glitter in the sky\nI’ve got a feeling this year’s gonna fly\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe\n[Verse 2]\nGrandma’s singing a little off-key\nThe kids are laughing too loud\nThe dog’s stolen a turkey leg\nChaos is a Christmas crowd\n[Prechorus]\nBut the fire’s crackling\nWarm and bright\nAnd my heart’s a candle tonight\n[Chorus]\nSnowflakes and mistletoe\nEverywhere I go\nI know\nLove is the gift\nThe glow\nSnowflakes and mistletoe","audio_url":"https://cdn.acedata.cloud/assets/examples/fish/5ade0339-5f11-487e-aacc-06a908271706-8e3fcb0e5547.mp3","video_url":"","created_at":"2025-12-13T11:29:25.101Z","model":"chirp-v5","state":"succeeded","prompt":"A song for Christmas","style":"uplifting, orchestral with bells and acoustic guitar","duration":127.16}]}
```

Odpowiedź strumieniowa będzie kolejno wysyłać status przetwarzania i wynik końcowy dla tego samego `task_id`; powyżej zachowano jedynie pierwszą i końcową rzeczywistą odpowiedź, pomijając powtarzające się aktualizacje pośrednie.

## Obsługa błędów

Jeśli wystąpi błąd, otrzymasz komunikat o błędzie podobny do następującego:

```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"
}
```

Poniżej znajduje się lista HTTP Status Code, `error.code`, `error.message`:

> Uwaga: limity i komunikaty o błędach różnych kont upstream mogą się różnić. Zwykle ograniczenie `style` dla `chirp-v3-5`/`chirp-v4` jest niższe (200), podczas gdy `chirp-v4-5` i nowsze wersje zazwyczaj obsługują do 1000; w przypadku korzystania ze starszego upstreamu mogą pojawić się kompatybilne komunikaty, takie jak `Tags too long.` lub `style must be less than or equal 120`.
> \| Kod statusu | `error.code`  | `error.message`                                                 |
> \| ----------- | ------------- | --------------------------------------------------------------- |
> \| 400         | `bad_request` | `Id utworu nie istnieje lub został wyłączony.`                  |
> \| 400         | `bad_request` | `Prompt jest zbyt długi.`                                       |
> \| 400         | `bad_request` | `Tagi są zbyt długie.`                                          |
> \| 400         | `bad_request` | `Przesłane audio odpowiada istniejącemu dziełu sztuki.`         |
> \| 400         | `bad_request` | `instrumental musi być wartością logiczną`                      |
> \| 400         | `bad_request` | `Tytuł jest zbyt długi.`                                        |
> \| 400         | `bad_request` | `Temat jest zbyt długi.`                                        |
> \| 400         | `bad_request` | `style musi być mniejsze lub równe 120`                         |
> \| 400         | `bad_request` | `custom musi być wartością logiczną`                            |
> \| 400         | `bad_request` | `audio_id jest wymagane podczas rozszerzania audio`             |
> \| 400         | `bad_request` | `continue_at jest wymagane podczas rozszerzania audio`          |
> \| 400         | `bad_request` | `continue_at musi być liczbą większą niż 0`                     |
> \| 400         | `bad_request` | `lyric jest wymagane podczas rozszerzania audio, gdy instrumental ma wartość false` |
> \| 400         | `bad_request` | `prompt jest wymagane podczas generowania audio`                |
> \| 400         | `bad_request` | `lyric jest wymagane podczas generowania niestandardowego audio` |
> \| 403         | `forbidden`   | `Prompt jest prawdopodobnie nieprawidłowo sformułowany`         |
> \| 403         | `forbidden`   | `Prompt prawdopodobnie jest chroniony prawem autorskim`         |
> \| 403         | `forbidden`   | `Prompt zawierał nieodpowiednie materiały`                      |
> \| 403         | `forbidden`   | `Opis utworu oznaczony do moderacji`                            |
> \| 403         | `forbidden`   | `Opis utworu zawierał nazwę artysty`                            |
> \| 403         | `forbidden`   | `Tagi zawierały nazwę artysty`                                  |
> \| 403         | `forbidden`   | `Tekst zawierał materiały chronione prawem autorskim`           |
> \| 403         | `forbidden`   | `Opis utworu zawierał tag producenta`                           |
> \| 403         | `forbidden`   | `Ogólny błąd openAI`                                            |
> \| 403         | `forbidden`   | `Prompt oznaczony do moderacji`                                 |
> \| 500         | `api_error`   | `Nie można wygenerować tekstu z opisu utworu`                   |
> \| 500         | `api_error`   | `zadanie nie powiodło się z nieznanym błędem`                   |
> \| 500         | `api_error`   | `brak dostępnego workera w systemie`                            |
> \| 500         | `api_error`   | `usługa w trakcie konserwacji, generowanie wstrzymane`          |
> \| 504         | `timeout`     | `przekroczono limit czasu podczas oczekiwania na generowanie audio` |


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