Genererings-API i anpassat läge
Beskrivning av ändpunkten
Anpassat läge passar när text, stil och titel redan är klara och du vill styra den sjungande rösten, styrkan i stilpåverkan och graden av slumpmässighet i genereringen.
Ändpunkt: POST /api/music/create/custom
Fakturering: Betalt, för närvarande som standard 0,6 ¥ per anrop. Varje anrop ger oftast 2 låtar; det faktiskt debiterade beloppet följer den aktuella prisinställningen i backoffice.
Max Mode / Variety: den här ändpunkten stöder de valfria parametrarna max_mode och variety (0-4). Med
max_mode på debiteras anropet till dubbelt pris (0,6 → 1,2 ¥ per anrop); variety kostar
inget extra. Vad de betyder och hur de skickas står i avsnittet "Avancerade parametrar" i
Översikt över det nya API:t.
Väntetider och timeouts (viktigt): detta är en synkron ändpunkt — beställningen accepteras och lämnas till generering först när svaret kommer. Mätt: de flesta anrop svarar på 1-3 sekunder, omkring 10% tar längre än 30 sekunder och det längsta är cirka 230 sekunder. Ställ in klientens timeout på 300 sekunder eller mer; inget svar betyder inte att inget genererades, och försök inte igen direkt efter en timeout (det duplicerar beställningen och debiterar igen). Om anslutningen bröts, kontrollera senare med
GET /api/music/songs. Se "Väntetider och timeout-inställningar" i Översikt över det nya API:t.
Begäransparametrar
Headers
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY |
| Content-Type | string | ja | application/json |
Brödtextparametrar
| Parameter | Typ | Krävs | Standard | Anmärkningar |
|---|---|---|---|---|
| model | string | nej | suno-v6 |
Modellnamn mot kund: suno-v6, suno-v6-wild eller suno-v6-mini |
| lyrics | string | nej | - | Text; får vara tom för ett instrumentalt stycke |
| style_tags | string | ja | - | Stiltaggar; flera kan separeras med kommatecken |
| song_title | string | nej | - | Låtens titel |
| instrumental | boolean | nej | false |
Om ett instrumentalt stycke ska genereras |
| negative_tags | string | nej | - | Stilar eller effekter du inte vill ha |
| vocal_gender | string | nej | - | Röstens kön: m, f, male eller female |
| style_weight | number | nej | - | Stilpåverkan, från 0.0 till 1.0 |
| weirdness_constraint | number | nej | - | Slumpmässighet, från 0.0 till 1.0 |
| wait_completion | boolean | nej | false |
Om genereringen ska vara klar innan svar |
Kommentarer till de avancerade parametrarna
Röstens kön vocal_gender
- Skicka
mellermaleför en mansröst,fellerfemaleför en kvinnoröst. - Tjänsten normaliserar
maleochfemaletillmrespektivef. - Med
instrumental=trueskickas ingen parameter för röstens kön till genereringstjänsten.
Stilpåverkan style_weight
Styr hur starkt resultatet följer style_tags. Ju högre värde, desto mer följer resultatet de stiltaggar du angett.
Slumpmässighet weirdness_constraint
Styr hur mycket resultatet varierar och experimenterar. Höga värden ger oftast mer variation; låga värden ett säkrare resultat.
Båda numeriska parametrar ligger mellan 0.0 och 1.0, och 0 är ett giltigt uttryckligt värde. Endast att helt utelämna fältet betyder "inte angivet".
När du fyller i dem, tänk på att de är decimalbråk och inte procentuella heltal. Rekommenderad skala: 0.0–0.3 är försiktigt, 0.4–0.6 är balanserat, 0.7–1.0 är mer experimentellt; utan tydlig preferens använd 0.5 eller utelämna dem. Exempel: weirdness_constraint: 0.5, aldrig 50 eller 50%.
Med instrumental=true blir resultatet instrumentalt, så text och röstens kön verkar inte som i en sjungen låt; behöver du sång, skicka false eller utelämna fältet. Booleska fält måste använda JSON true/false, inte strängar.
Python-exempelbegäran
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]\nNatten faller över havet\nen kvällsbris glider förbi fönstret',
'style_tags': 'Mandopop, acoustic guitar, warm vocal',
'song_title': 'Kvällsbris vid havet',
'vocal_gender': 'male',
'style_weight': 0.68,
'weirdness_constraint': 0.32,
},
timeout=300,
)
response.raise_for_status()
songs = response.json()
Kvittoläge för mottagande (valfritt)
Den här ändpunkten stöder också kvittoläget för mottagande från Genererings-API i enkelt läge: med "accept_mode": "async" i brödtexten (eller headern X-Accept-Mode: async) svarar ändpunkten direkt med 202 och ett kvittonummer, genereringen fortsätter i bakgrunden, och du följer framstegen med GET /api/music/requests/{request_id}.
Passar klienter som inte ska hålla långa anslutningar, eller som inte vill att en timeout ska läsas som "inget genererades". Utan den parametern är beteendet exakt som förut.
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": "Kvällsbris vid havet",
"vocal_gender": "male",
"accept_mode": "async"
}'
Svarsform och pollningsmetod finns i avsnittet "Kvittoläge för mottagande" i Genererings-API i enkelt läge.
Parametervalidering
Dessa fall ger HTTP 400, och felets message namnger det ogiltiga fältet:
style_weightellerweirdness_constraintär inte ett tal.- Ett numeriskt värde ligger under
0.0eller över1.0. vocal_genderär inte något avm,f,male,female.
Gränser för textfält
Dessa fält ger också HTTP 400 vid överskridande, går aldrig in i genereringen och fördebiteras inte. Räknas i Unicode-tecken (ett Han-tecken räknas som 1) och blanksteg i början och slutet räknas med:
| Fält | Gräns |
|---|---|
prompt (text, kompatibel med lyrics) |
3000 tecken |
style_tags (stil, kompatibel med tags, style) |
1000 tecken |
negative_tags (uteslutna stilar) |
1000 tecken |
song_title (titel, kompatibel med title) |
100 tecken |
Felmeddelandet ser ut så här: style_tags must not exceed 1000 characters; received 2772. Första ordet är fältet som överskreds och i slutet står det uppmätta antalet, så vid ett 400 klipper du med de två talen i stället för att pröva fält för fält. De allmänna reglerna finns i "Gränser för textfält" i Översikt över det nya API:t.
Svar
Ändpunkten returnerar oftast en array med 2 låtar. En asynkron begäran börjar normalt i pending; spara song_id och läs slutstatus och ljudadress via API för låtfrågor. Låtfälten är desamma som i Genererings-API i enkelt läge.
Kompatibla fält
| Rekommenderat fält | Kompatibelt fält |
|---|---|
vocal_gender |
vocalGender |
style_weight |
styleWeight |
weirdness_constraint |
weirdnessConstraint |
Nya integrationer bör använda snake_case överallt. Bär en och samma begäran både snake_case och camelCase gäller värdet i snake_case.
Skaffa en API-nyckel
Skapa en API-nyckel i konsolen efter registreringen. Varje generering kostar 0,6 ¥ och returnerar 2 spår, nedladdningar är obegränsade och inget telefonnummer krävs.
Hämta API-nyckel Tillbaka till översikten