API generowania w trybie niestandardowym

Zaktualizowano 2026-09-18 · zespół Suno-API

Opis punktu końcowego

Tryb niestandardowy pasuje, gdy masz już gotowy tekst, styl i tytuł, a chcesz kontrolować śpiewający głos, siłę wpływu stylu i stopień losowości generowania.

Punkt końcowy: POST /api/music/create/custom

Rozliczenie: Płatne, obecnie domyślnie 0,6 ¥ za wywołanie. Jedno wywołanie zwykle daje 2 utwory; faktycznie pobierana kwota zależy od bieżącej konfiguracji cen w panelu administracyjnym.

Max Mode / Variety: ten punkt końcowy obsługuje opcjonalne parametry max_mode i variety (0-4). Przy włączonym max_mode to wywołanie jest rozliczane po podwójnej cenie (0,6 → 1,2 ¥ za wywołanie); variety nie kosztuje nic dodatkowo. Znaczenie i sposób wysyłania opisano w sekcji „Parametry zaawansowane” Przeglądu nowego API.

Czasy oczekiwania i limity czasu (ważne): to punkt końcowy synchroniczny — zamówienie zostaje przyjęte i przekazane do generowania dopiero, gdy przyjdzie odpowiedź. Z pomiarów: większość żądań odpowiada w 1-3 sekundy, około 10% przekracza 30 sekund, a najdłuższe trwa około 230 sekund. Ustaw limit czasu klienta na 300 sekund lub więcej; brak odpowiedzi nie oznacza, że nic nie zostało wygenerowane, a ponawianie od razu po limicie czasu duplikuje zamówienie i pobiera opłatę ponownie. Jeśli połączenie się zerwało, sprawdź później przez GET /api/music/songs. Zobacz „Czasy oczekiwania i ustawienia limitu czasu” w Przeglądzie nowego API.

Parametry żądania

Headers

Parametr Typ Wymagany Uwagi
Authorization string tak Bearer YOUR_API_KEY
Content-Type string tak application/json

Parametry treści

Parametr Typ Wymagany Domyślnie Uwagi
model string nie suno-v6 Nazwa modelu dla klienta: suno-v6, suno-v6-wild lub suno-v6-mini
lyrics string nie - Tekst utworu; przy utworze instrumentalnym może być pusty
style_tags string tak - Tagi stylu; kilka można oddzielić przecinkami
song_title string nie - Tytuł utworu
instrumental boolean nie false Czy wygenerować utwór instrumentalny
negative_tags string nie - Style lub efekty, których nie chcesz
vocal_gender string nie - Płeć głosu: m, f, male lub female
style_weight number nie - Wpływ stylu, od 0.0 do 1.0
weirdness_constraint number nie - Losowość, od 0.0 do 1.0
wait_completion boolean nie false Czy czekać na zakończenie generowania przed odpowiedzią

Uwagi o parametrach zaawansowanych

Płeć głosu vocal_gender

Wpływ stylu style_weight

Określa, jak mocno wynik podąża za style_tags. Im wyższa wartość, tym bardziej wynik skłania się ku podanym tagom stylu.

Losowość weirdness_constraint

Określa, jak bardzo wynik się zmienia i eksperymentuje. Wyższe wartości zwykle dają więcej zmienności; niższe — bezpieczniejszy wynik.

Oba parametry liczbowe mieszczą się w zakresie od 0.0 do 1.0, a 0 jest prawidłową jawną wartością. Tylko całkowite pominięcie pola oznacza „nie określono”.

Wypełniając je, pamiętaj, że to ułamki dziesiętne, a nie liczby całkowite procentowe. Sugerowany punkt odniesienia: 0.0–0.3 zachowawczo, 0.4–0.6 zrównoważenie, 0.7–1.0 bardziej eksperymentalnie; bez wyraźnych preferencji użyj 0.5 albo po prostu je pomiń. Przykład: weirdness_constraint: 0.5, nigdy 50 ani 50%.

Przy instrumental=true powstaje utwór instrumentalny, więc tekst i płeć głosu nie działają jak w utworze wokalnym; jeśli potrzebujesz wokalu, wyślij false lub pomiń to pole. Pola logiczne muszą używać JSON-owych true/false, a nie łańcuchów.

Przykład żądania w Pythonie

import requests

response = requests.post(
    'https://www.suno-api.io/api/music/create/custom',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'model': 'suno-v6',
        'lyrics': '[Verse]\nNoc opada na morze\nwieczorny wiatr mija okno',
        'style_tags': 'Mandopop, acoustic guitar, warm vocal',
        'song_title': 'Wieczorny wiatr nad morzem',
        'vocal_gender': 'male',
        'style_weight': 0.68,
        'weirdness_constraint': 0.32,
    },
    timeout=300,
)
response.raise_for_status()
songs = response.json()

Tryb potwierdzenia odbioru (opcjonalny)

Ten punkt końcowy obsługuje też tryb potwierdzenia odbioru z API generowania w trybie prostym: z "accept_mode": "async" w treści (lub nagłówkiem X-Accept-Mode: async) punkt końcowy od razu zwraca 202 i numer potwierdzenia, generowanie trwa w tle, a postęp śledzisz przez GET /api/music/requests/{request_id}.

Przydatne dla klientów, które nie powinny trzymać długich połączeń, albo nie chcą, by limit czasu został odczytany jako „nic nie wygenerowano”. Bez tego parametru zachowanie jest dokładnie takie jak wcześniej.

curl -X POST https://www.suno-api.io/api/music/create/custom \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{
    "style_tags": "Mandopop, acoustic guitar, warm vocal",
    "song_title": "Wieczorny wiatr nad morzem",
    "vocal_gender": "male",
    "accept_mode": "async"
  }'

Struktura odpowiedzi i sposób odpytywania są w sekcji „Tryb potwierdzenia odbioru” API generowania w trybie prostym.

Walidacja parametrów

Te przypadki zwracają HTTP 400, a message błędu wskazuje nieprawidłowe pole:

Limity pól tekstowych

Te pola przy przekroczeniu również zwracają HTTP 400, nie wchodzą do generowania i nie są obciążane z góry. Liczenie odbywa się w znakach Unicode (jeden znak han to 1), a spacje na początku i końcu też się liczą:

Pole Limit
prompt (tekst, zgodne z lyrics) 3000 znaków
style_tags (styl, zgodne z tags, style) 1000 znaków
negative_tags (wykluczone style) 1000 znaków
song_title (tytuł, zgodne z title) 100 znaków

Komunikat błędu wygląda tak: style_tags must not exceed 1000 characters; received 2772. Pierwsze słowo to nazwa przekroczonego pola, a na końcu jest zmierzona liczba, więc przy 400 przycinaj według tych dwóch liczb, zamiast sprawdzać pole po polu. Ogólne zasady są w „Limity pól tekstowych” Przeglądu nowego API.

Odpowiedź

Punkt końcowy zwraca zwykle tablicę z 2 utworami. Żądanie asynchroniczne zaczyna się zwykle od stanu pending; zapisz song_id i pobierz stan końcowy oraz adres audio przez API zapytań o utwory. Pola utworu są takie same jak w API generowania w trybie prostym.

Pola zgodne

Zalecane pole Pole zgodne
vocal_gender vocalGender
style_weight styleWeight
weirdness_constraint weirdnessConstraint

Nowe integracje powinny wszędzie używać snake_case. Jeśli jedno żądanie zawiera i snake_case, i camelCase, wygrywa wartość w snake_case.

NastępnyAPI generowania mowy (Speech)

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