Genererings-API i anpassat läge

Uppdaterad 2026-09-18 · Suno-API-teamet

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

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:

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.

NästaAPI för talgenerering (Speech)

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