Przegląd dokumentacji Suno API
Wystarczy rejestracja e-mailem, aby utworzyć klucz API. Jedna generacja kosztuje 0,6 juana i zwraca 2 utwory, obejmując pobieranie MP3/WAV, covery, Extend, rozdzielanie ścieżek i klonowanie głosu. Bazowy adres URL: https://www.suno-api.io.
Ta strona opisuje dostępne modele, wszystkie interfejsy generowania i edycji, rozliczenia oraz zalecaną kolejność czytania. Przy pierwszej integracji czytaj od góry do dołu; znajdują się tu też punkty wyjścia do diagnozy 401/403/429.
Szybkie odpowiedzi
Jak zdobyć klucz API? Zarejestruj się e-mailem, otwórz konsolę, przejdź do zarządzania tokenami i utwórz token. Numer telefonu ani karta nie są potrzebne.
Ile kosztuje jedno wywołanie? Generacja kosztuje 0,6 juana i zwraca 2 utwory. Zapytania o status, WAV, tekst z znacznikami czasu i sugestie promptów są bezpłatne.
Jakie modele są obsługiwane? suno-v6 (domyślny), suno-v6-wild i suno-v6-mini. Standardowe modele generowania v5.5 i starsze zostały wycofane; istniejące prace nie są zagrożone.
Jaki jest bazowy adres URL? https://www.suno-api.io, z nagłówkiem Authorization: Bearer YOUR_API_KEY.
Modele dostępne obecnie
W zwykłym generowaniu utworu klient może wskazać wyłącznie suno-v6, suno-v6-wild i suno-v6-mini. Jeśli model nie zostanie podany, używany jest suno-v6.
Modele standardowe suno-v2, suno-v3, suno-v3-5, suno-v4, suno-v4-5, suno-v4-5-all, suno-v4-5-plus, suno-v5 i suno-v5-5 zostały wycofane. W zadaniach historycznych nazwy te mogą się jeszcze pojawiać, ale to dane historyczne, a nie dowód, że model działa w nowych żądaniach. Wyjątkiem jest rozdzielanie ścieżek — patrz API ścieżek (rozdzielanie wokalu i podkładu).
Uwierzytelnianie
Wszystkie publiczne interfejsy z kluczem API używają tych samych nagłówków:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Bazowy adres URL:
https://www.suno-api.io
Ogólne zasady dotyczące parametrów
numberw treści żądania musi być liczbą JSON, nigdy procentem w postaci tekstu. Intensywność 50% zapisuje się jako0.5, nigdy jako50ani50%.booleanmusi mieć wartośćtruelubfalse. Nie wysyłajtrue,false,0ani1jako zamiennika.- Pola oznaczone jako „nie" można całkowicie pominąć. Jeśli nie masz pewności, co robi parametr, pomiń go i pozwól usłudze zastosować zachowanie domyślne; nie wysyłaj pustego tekstu,
nullani0zamiast „nie wysłano", bo0jest prawidłową wartością w niektórych polach liczbowych. - Nazwy pól rozróżniają pisownię. Każda strona podaje zalecane pole i zgodne aliasy; wysyłaj je dokładnie jak w tabeli. Tam, gdzie dokumentacja dopuszcza snake_case i camelCase, nie wysyłaj obu jednocześnie.
- Wszystkie pola czasu kończące się na
_slubSecondssą w sekundach i dopuszczają ułamki. Znaczniki czasu Unix opisano osobno, z podaniem sekund lub milisekund. - Identyfikator zaczynający się od
pending:to placeholder platformy, a nie prawdziwy identyfikator utworu. Używaj go tylko tam, gdzie interfejs wyraźnie to dokumentuje; w przeciwnym razie poczekaj na prawdziwysong_id.
Limity pól tekstowych
Przekroczenie limitu zwraca od razu HTTP 400: nic nie jest generowane, nic nie jest wstępnie pobierane i nie powstaje rekord zadania. Liczenie odbywa się w znakach Unicode (jeden znak ideograficzny liczy się jako 1), a spacje na początku i końcu też się liczą.
| Pole (wraz z aliasami opisanymi na stronie interfejsu) | Limit |
|---|---|
prompt / lyrics / description / theme / gpt_description_prompt |
3000 znaków |
style_tags / tags / style / original_tags |
1000 znaków |
negative_tags |
1000 znaków |
song_title / title |
100 znaków |
W message błędu podano pole i zmierzoną długość — te dwie liczby wystarczą, aby skrócić tekst:
{
"error": {
"message": "style_tags must not exceed 1000 characters; received 2772",
"type": "invalid_request_error"
}
}
Dotyczy: /api/music/create, /api/music/create/custom, /api/music/extend, /api/music/upload-cover, /api/music/generate-from-source, /api/music/add-instrumental, /api/music/add-vocal, /api/music/add-stem, /api/music/mashup, /api/music/sample, /api/music/inspo, /api/music/crop, /api/music/remove-section, /api/music/fade, /api/music/reverse, /api/music/speed, /api/music/replace-section, /api/music/generate-with-voice.
Jeden wyjątek: pole description w POST /api/music/sounds ma limit 100 znaków, ponieważ ścieżka efektów dźwiękowych korzysta z krótszego limitu platformy.
Generowanie asynchroniczne i adresy audio
Interfejsy generowania muzyki domyślnie działają asynchronicznie. Gdy pierwsza odpowiedź zawiera status równy pending, submitted lub processing, puste audio_url, video_url i cover_url są normalne i nie oznaczają niepowodzenia. Zapisz prawdziwy song_id (lub zwrócony client_request_id) i odpytuj właściwy interfejs; adres audio czytaj i pobieraj dopiero po zakończeniu statusu.
⚠️ Adresy audio wygasają po 7 dniach — przenieś pliki na czas
audio_url,wav_url,video_urloraz adresy zwracane przez interfejsy pobierania pochodzą z pamięci obiektowej platformy i domyślnie wygasają po 7 dniach (pliki są usuwane, stary adres zwraca 404 / nie pobiera się).
- W ciągu tych 7 dni przenieś pliki do własnej pamięci (własna pamięć obiektowa, CDN lub dysk serwera). Nie traktuj naszych adresów jako długoterminowych linków.
- Wygasły adres nie wymaga ponownego generowania utworu i nic nie kosztuje: wywołaj ponownie API zapytań o utwory (lub API pobierania multimediów), aby uzyskać nowy ważny adres.
Czasy oczekiwania i ustawienia limitu czasu
Interfejsy generowania są synchroniczne: zamówienie zostaje przyjęte i przekazane platformie dopiero w momencie odpowiedzi. Wcześniej usługa musi przydzielić konto i przejść wymaganą kontrolę bezpieczeństwa, a odpowiedzi pośredniej nie ma — żaden inny interfejs tego zamówienia nie widzi. Jedynym wiarygodnym dowodem, że „coś zostało wygenerowane", jest więc sama odpowiedź, a nie to, co widać podczas oczekiwania.
Zmierzony czas oczekiwania (produkcja, rodzina /api/music/create, 18–20 września 2026)
| Percentyl | Oczekiwanie |
|---|---|
| p50 | około 1,2–1,6 s |
| p75 | około 2–6 s |
| p90 | około 42–49 s |
| p95 | około 48–76 s |
| p99 | około 109–160 s |
| maksimum | około 230 s |
- Około 10% żądań trwa dłużej niż 30 sekund, a około 1% — 1–2 minuty. Długie żądanie oznacza zwykle, że tym razem najpierw była potrzebna kontrola bezpieczeństwa.
- Pola żądania, kształt odpowiedzi, kody błędów i rozliczenia się nie zmieniły, więc istniejące integracje muszą tylko zwiększyć limit czasu klienta — żadnych innych zmian w kodzie.
Wymagania integracji
- Ustaw limit czasu klienta na 300 sekund lub więcej. Klienci z 30, 60 lub 120 sekundami rozłączą się w trakcie oczekiwania.
- Brak odpowiedzi nie oznacza, że nic nie zostało wygenerowane. Przy przekroczeniu czasu lub zerwaniu połączenia zamówienie może być już przyjęte i generowane.
- Nie ponawiaj od razu po przekroczeniu czasu: duplikat tworzy drugie zamówienie i pobiera opłatę ponownie.
- Jeśli połączenie zostało zerwane, po chwili wypisz utwory przez
GET /api/music/songs(od najnowszych) — przyjęte zamówienia pojawią się normalnie. Ponów wysyłkę dopiero po potwierdzeniu, że zamówienia naprawdę nie ma. - Zgłaszając problem, dołącz nagłówek odpowiedzi
X-Oneapi-Request-Id, aby można było znaleźć dokładnie to żądanie.
Nie chcesz trzymać długiego połączenia? Użyj trybu potwierdzenia przyjęcia. POST /api/music/create i POST /api/music/create/custom obsługują opcjonalne potwierdzenie: dodaj "accept_mode": "async" w treści (lub nagłówek X-Accept-Mode: async), a interfejs od razu zwróci 202 z numerem potwierdzenia, a generowanie będzie kontynuowane w tle; postęp sprawdzisz przez GET /api/music/requests/{request_id}. Klient z limitem kilkudziesięciu sekund nie pomyli już „braku odpowiedzi" z „nic nie wygenerowano" i nie zapłaci dwa razy przez ponowienia. Patrz „Tryb potwierdzenia przyjęcia" w API generowania w trybie prostym.
Dla odniesienia:
python requestsużywatimeout=300,urllib—urlopen(..., timeout=300), Node —req.setTimeout(300000), curl —--max-time 300.
Lista zalecanych interfejsów
| Możliwość | Metoda | Ścieżka | Rozliczenie | Dokumentacja |
|---|---|---|---|---|
| Saldo konta | GET | /api/user/balance |
Bezpłatnie | Zobacz |
| Generowanie w trybie prostym | POST | /api/music/create |
Płatne, obecnie domyślnie 0,6 juana za wywołanie | Zobacz |
| Generowanie w trybie własnym | POST | /api/music/create/custom |
Płatne; obsługuje płeć wokalu, wpływ stylu i losowość | Zobacz |
| Generowanie mowy (Speech) | POST | /api/music/speech |
Płatne, obecnie 0,6 juana za wywołanie; muzyka w tle opcjonalnie | Zobacz |
| Postęp potwierdzenia przyjęcia | GET | /api/music/requests/{request_id} |
Bezpłatnie; razem z accept_mode=async |
Zobacz |
| Efekty dźwiękowe | POST | /api/music/sounds |
Płatne, obecnie 0,6 juana za wywołanie | Zobacz |
| Generowanie tekstu | POST | /api/lyrics/generate |
Bezpłatnie w limicie (10/min, 300/dzień), potem 0,1 juana za wywołanie | Zobacz |
| Tworzenie profilu głosu (zalecane) | POST | /api/music/voice-profile/create |
Bezpłatnie (enhanced=true w cenie wzmocnionego klonu) |
Zobacz |
| Cover własnym głosem (zalecane) | POST | /api/music/voice-profile/cover |
1,2 juana za wywołanie; 2,4 juana z Max Mode | Zobacz |
| Lista / szczegóły / usuwanie głosów (zalecane) | GET/POST | /api/music/voice-profile/list, /{voice_id}, /delete |
Bezpłatnie | Zobacz |
| Klonowanie głosu (stary łańcuch, niezalecane) | POST | /api/voice/clone/validate |
Bezpłatnie | Zobacz |
| Zapytanie o zadanie klonowania | GET | /api/voice/clone/tasks/:voice_task_id |
Bezpłatnie | Zobacz |
| Ponowne wygenerowanie tekstu weryfikacji | POST | /api/voice/clone/tasks/:voice_task_id/regenerate |
Bezpłatnie | Zobacz |
| Wysłanie nagrania weryfikacyjnego i utworzenie głosu | POST | /api/voice/clone/tasks/:voice_task_id/generate |
Według zasad klonowania głosu | Zobacz |
| Sprawdzenie, czy klonowany głos jest dostępny | POST | /api/voice/clone/tasks/:voice_task_id/check |
Bezpłatnie | Zobacz |
| Usunięcie klonowanego głosu | DELETE | /api/voice/clone/voices/:voice_task_id |
Bezpłatnie | Zobacz |
| Generowanie wybranym głosem | POST | /api/music/generate-with-voice |
Płatne, 1,2 juana za wywołanie; 2,4 juana z Max Mode | Zobacz |
| Wyniki generowania wybranym głosem | GET | /api/music/generate-with-voice/results |
Bezpłatnie | Zobacz |
| Wzmocnienie stylu | POST | /api/music/boost-style |
Bezpłatnie w limicie (10/min, 300/dzień), potem 0,1 juana za wywołanie | Zobacz |
| Sugestie promptów | POST | /api/prompts/suggestions |
Bezpłatnie w limicie (10/min, 300/dzień), potem 0,1 juana za wywołanie | Zobacz |
| Wgranie źródłowego audio | POST | /api/music/upload-source |
Bezpłatnie | Zobacz |
| Wysłanie wzmocnionego wgrania | POST | /api/music/enhanced-upload |
Płatne, 10 juanów za wywołanie | Zobacz |
| Lista zadań wzmocnionego wgrania | GET | /api/music/enhanced-upload |
Bezpłatnie | Zobacz |
| Zapytanie o jedno zadanie wzmocnionego wgrania | GET | /api/music/enhanced-upload/:id |
Bezpłatnie | Zobacz |
| Anulowanie zadania wzmocnionego wgrania | POST | /api/music/enhanced-upload/:id/cancel |
Bezpłatnie; zwrot tylko na etapach możliwych do anulowania | Zobacz |
| Wgraj i zrób cover | POST | /api/music/upload-cover |
Płatne, obecnie 0,6 juana za wywołanie; przy dużym audio lepiej upload-source + generate-from-source w dwóch krokach |
Zobacz |
| Cover ze źródłowego klipu | POST | /api/music/generate-from-source |
Płatne, obecnie 0,6 juana za wywołanie | Zobacz |
| Extend | POST | /api/music/extend |
Płatne, obecnie 0,6 juana za wywołanie | Zobacz |
| Zamiana fragmentu | POST | /api/music/replace-section |
Płatne, obecnie 0,6 juana za wywołanie | Zobacz |
| Get Full Song | POST | /api/music/concat |
Płatne, stałe 0,05 juana za wywołanie | Zobacz |
| Remaster | POST | /api/music/remaster |
Płatne, obecnie 0,6 juana za wywołanie | Zobacz |
| Dodanie instrumentalu | POST | /api/music/add-instrumental |
Płatne, według żądanego modelu | Zobacz |
| Dodanie wokalu | POST | /api/music/add-vocal |
Płatne, według żądanego modelu | Zobacz |
| Dodanie ścieżki | POST | /api/music/add-stem |
Płatne, według żądanego modelu | Zobacz |
| Mashup | POST | /api/music/mashup |
Płatne, według żądanego modelu | Zobacz |
| Sample | POST | /api/music/sample |
Płatne, według żądanego modelu | Zobacz |
| Inspo | POST | /api/music/inspo |
Płatne, według żądanego modelu | Zobacz |
| Przycinanie | POST | /api/music/crop |
Płatne, według żądanego modelu | Zobacz |
| Usuwanie fragmentu | POST | /api/music/remove-section |
Płatne, według żądanego modelu | Zobacz |
| Fade | POST | /api/music/fade |
Płatne, według żądanego modelu | Zobacz |
| Odtwarzanie wstecz | POST | /api/music/reverse |
Płatne, według żądanego modelu | Zobacz |
| Prędkość | POST | /api/music/speed |
Płatne, według żądanego modelu | Zobacz |
| Ścieżki (rozdzielanie wokalu i podkładu) | POST | /api/music/separate |
Płatne; two 0,6 juana, twelve 3,0 juana za wywołanie |
Zobacz |
| Usuwanie wokalu | POST | /api/music/vocal-removal |
Bezpłatnie | Zobacz |
| Usuwanie ścieżek | POST | /api/music/stem-delete |
Bezpłatnie | Zobacz |
| Generowanie/pobieranie WAV | POST | /api/music/wav |
Bezpłatnie | Zobacz |
| Pobieranie MIDI | POST | /api/music/download-file (kind=midi) |
Bezpłatnie | Zobacz |
| Adres multimediów / strumień podglądu | POST | /api/music/download-url, /api/music/generation-stream-url |
Bezpłatnie | Zobacz |
| Pobieranie pliku utworu | POST | /api/music/download-file |
Bezpłatnie | Zobacz |
| Pobieranie pakietu utworu | POST | /api/music/download-all |
Bezpłatnie | Zobacz |
| Stały adres pobierania | GET | /api/music/download |
Bezpłatnie | Zobacz |
| Pobieranie Free2 | POST | /api/music/free2 |
Płatne, 0,2 juana za udany utwór | Zobacz |
| Status konkretnego utworu | POST | /api/music/query |
Bezpłatnie | Zobacz |
| Historia utworów konta | GET | /api/music/songs |
Bezpłatnie | Zobacz |
| Parametry generowania utworu | GET | /api/music/songs/:song_id |
Bezpłatnie | Zobacz |
| Tekst ze znacznikami czasu | POST | /api/lyrics/timeline |
Bezpłatnie | Zobacz |
| Uprawnienie i tożsamość licencyjna | GET | /api/music/authorization/context |
Bezpłatnie | Zobacz |
| Powiązanie tożsamości licencyjnej | POST | /api/music/authorization/identity |
Bezpłatnie; po potwierdzeniu nie można zmienić | Zobacz |
| Lista utworów do licencji | GET | /api/music/authorization/songs |
Bezpłatnie; wymaga powiązanej tożsamości | Zobacz |
| Wystawienie licencji komercyjnej | POST | /api/music/authorization/certificates |
Bezpłatnie; wymaga uprawnienia | Zobacz |
| Historia licencji | GET | /api/music/authorization/certificates |
Bezpłatnie | Zobacz |
| Szczegóły licencji | GET | /api/music/authorization/certificates/:id |
Bezpłatnie | Zobacz |
| Pobieranie PDF licencji | GET | /api/music/authorization/certificates/:id/download |
Bezpłatnie | Zobacz |
Interfejsy
/api/voice/clone/*i/api/music/generate-with-voicenależą do wczesnego łańcucha klonowania głosu i nie są zalecane w nowych integracjach; użyj 【Zalecane】 API profilu głosu.
Parametry zaawansowane: Max Mode i Variety
Interfejsy generowania obsługują te dwa opcjonalne parametry (pominięcie zachowuje dotychczasowe zachowanie i cenę):
| Parametr | Typ | Zakres | Opis |
|---|---|---|---|
| max_mode | boolean | true / false |
Więcej mocy obliczeniowej dla lepszej spójności całego utworu; to żądanie jest rozliczane podwójnie |
| variety | integer | 0-4 |
Stopień zmienności stylu: 0=Off, 1=Normal, 2=High, 3=Extra, 4=Max. Bez podania obowiązuje domyślny poziom modelu (rodzina v6 — 1); bez dodatkowej opłaty |
Obsługują je: POST /api/music/create, POST /api/music/create/custom,
POST /api/music/extend, POST /api/music/upload-cover, POST /api/music/generate-from-source,
POST /api/music/add-instrumental, POST /api/music/add-vocal, POST /api/music/add-stem,
POST /api/music/mashup, POST /api/music/sample, POST /api/music/inspo,
POST /api/music/replace-section, POST /api/music/voice-profile/cover, POST /api/music/speech.
- Podwójna cena w praktyce: interfejs za 0,6 juana zmienia się w 1,2 juana z
max_mode; generowanie wybranym głosem kosztuje 1,2 juana za wywołanie i 2,4 juana z Max Mode; cover głosem z 【Zalecane】 API profilu głosu również kosztuje 1,2 juana za wywołanie (2,4 juana zmax_mode). varietydziała tylko dla rodzinysuno-v6(suno-v6,suno-v6-wild,suno-v6-mini); przy innych modelach wysłanie zwraca 400.- Efekty dźwiękowe, ścieżki, concat, WAV i akcje edycji Studio (przycinanie, usuwanie fragmentu, fade, odtwarzanie wstecz, prędkość itd.) nie mają tych parametrów — jawne wysłanie zwraca 400, aby parametr nigdy nie był milcząco ignorowany.
varietyto liczba całkowita 0-4;style_weightiweirdness_constraintto ułamki od 0 do 1, więc skale są różne.
Wspólne pola odpowiedzi utworów
Interfejsy generowania, coveru, extend, rozdzielania i zapytań zwracają zwykle tablicę utworów z tymi polami:
| Pole | Typ | Opis |
|---|---|---|
song_id |
string | Identyfikator utworu lub zadania |
song_title |
string | Tytuł utworu |
status |
string | Status, np. pending, completed, failed |
audio_url |
string | Adres audio, zwracany po zakończeniu generowania |
video_url |
string | Adres wideo, może być pusty |
cover_url |
string | Adres okładki |
lyrics |
string | Tekst utworu |
style_tags |
string | Tagi stylu |
duration |
number | Długość audio w sekundach |
created_at |
string | Czas utworzenia |
model_version |
string | Wersja modelu |
generation_type |
string | Typ generowania |
error_message |
string | Przyczyna niepowodzenia |
Cztery kroki integracji (minimalny przykład)
Te cztery kroki wystarczą, aby uzyskać pierwszy utwór; pełne pola każdego kroku są na odpowiedniej stronie listy zalecanych interfejsów.
# 1) Wysłanie generowania: 0,6 juana, zwraca 2 utwory
curl -X POST https://www.suno-api.io/api/music/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "bright Polish pop, piano intro, warm female vocal", "model": "suno-v6"}'
# 2) Odpytywanie, aż status będzie completed (3–5 sekund to dobry odstęp)
curl -X POST https://www.suno-api.io/api/music/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "song_id zwrócony w kroku 1"}'
# 3) Pobranie adresu multimediów: interfejsy odczytu są bezpłatne; song / wav / video / cover / midi
curl -X POST https://www.suno-api.io/api/music/download-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "ten sam song_id", "kind": "song"}'
Jeśli coś się nie uda: 401 / 402 / 403 / 429 — w liście błędów; limity czasu i podwójne opłaty — w sekcji „Czasy oczekiwania i ustawienia limitu czasu"; opis każdego interfejsu — na liście poniżej.
Zalecenia
- Nowe integracje powinny wszędzie używać
suno-v6. - Przy interfejsach z ceną domyślną rzeczywista kwota zależy od bieżącej konfiguracji cen w panelu i żądanego modelu.
- Interfejsy generowania najpierw zwracają zadanie; finalne audio pobieraj przez
/api/music/query. wait_completion=trueblokuje do zakończenia i nadaje się do rzadkich testów; w produkcji lepsze jest asynchroniczne odpytywanie.- Generowanie może odpowiadać długo — ustaw limit czasu klienta na 300 sekund lub więcej i pamiętaj, że „brak odpowiedzi" to nie to samo co „nic nie wygenerowano".
- Wgrywanie, cover, zamiana i WAV zależą od kont platformy i uprawnień do źródłowego klipu; przy błędzie najpierw przeczytaj
messageluberror_message.
O tej dokumentacji
Ta strona została uporządkowana według możliwości, które Create UI faktycznie udostępnia; nowe integracje powinny zacząć właśnie tutaj. Poprzednia dokumentacja API pozostała w sekcji „Poprzednia dokumentacja API (zgodność)" dla tych, którzy chcą zachować dotychczasowy sposób pracy.
Uzyskaj klucz API
Po rejestracji utwórz klucz API w konsoli. Każde generowanie kosztuje 0,6 ¥ i zwraca 2 utwory, pobierania są nieograniczone, a numer telefonu nie jest wymagany.
Pobierz klucz API Powrót do przeglądu