API zum Abfragen von Songs und zum Verlauf

Aktualisiert am 2026-09-18 · Suno-API-Team

Diese Seite behandelt drei kostenlose Abfrage-Endpunkte:

Fähigkeit Methode Endpunkt
Status und Ergebnis eines Songs abfragen POST /api/music/query
Die vom aktuellen Konto erzeugten Songs abfragen GET /api/music/songs
Die bei der Generierung gespeicherten Parameter abfragen GET /api/music/songs/:song_id

Wenn Sie bei einem Generierungs-Endpunkt den Empfangsbeleg-Modus (accept_mode=async) verwendet haben, halten Sie eine Belegnummer in der Hand, keine Song-ID. Verfolgen Sie den Fortschritt mit GET /api/music/requests/{request_id} und kehren Sie zu den Endpunkten dieser Seite zurück, sobald Sie die echte song_id haben. Siehe „Empfangsbeleg-Modus“ in der Generierungs-API im einfachen Modus.

Authentifizierung und Datenumfang

Alle drei Endpunkte authentifizieren sich mit demselben API-Schlüssel:

Authorization: Bearer YOUR_API_KEY

Der Song-Verlauf ist nach der user_id isoliert, zu der der API-Schlüssel gehört. Mehrere Schlüssel unter demselben Hauptkonto können den Verlauf dieses Kontos lesen, aber nicht den eines anderen Nutzers oder eines Subsite-Kontos.

Die Verlaufs-Endpunkte liefern nur tatsächlich generierte Songs. Ausgeschlossen sind:


1. Generierungsstatus abfragen

Fragt den aktuellen Status und das Endergebnis einer oder mehrerer Song-IDs ab.

Endpunkt: POST /api/music/query

Abrechnung: Kostenlos.

Headers

Parameter Typ Erforderlich Hinweise
Authorization string ja Bearer YOUR_API_KEY
Content-Type string ja application/json

Body-Parameter

Parameter Typ Erforderlich Standard Hinweise
model string nein suno-v6 Modellversion
song_ids string ja - Song-IDs, durch Kommas getrennt

Beispielanfrage

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "clip_id_1,clip_id_2"
  }'

Beispielantwort

[
  {
    "song_id": "clip_id_1",
    "song_title": "Songtitel",
    "status": "completed",
    "audio_url": "https://example.com/audio.mp3",
    "video_url": "https://example.com/video.mp4",
    "cover_url": "https://example.com/cover.jpg",
    "lyrics": "Songtext",
    "style_tags": "Mandopop, acoustic",
    "duration": 180.5,
    "model_version": "suno-v6",
    "created_at": "2026-05-21T10:00:00Z"
  }
]

Kompatibilitätshinweise

Ältere Dokumentation zeigt song_ids möglicherweise als Array. Heute wird eine kommagetrennte Zeichenkette empfohlen, was dem tatsächlichen Aufruf des Endpunkts entspricht.

song_ids muss echte Song-IDs enthalten. Eine Platzhalter-ID, die mit pending: beginnt, ist keine finale song_id und kann hier nicht verwendet werden; werden nur Platzhalter-IDs abgefragt, kann ein leeres Array [] zurückkommen.

model, model_version oder der Plattform-model_name einer Antwort können historische Werte behalten. Neue Aufgaben sollten suno-v6, suno-v6-wild oder suno-v6-mini verwenden; suno-v2 bis suno-v5-5 sind abgekündigt, und diese Namen im Verlauf zu sehen heißt nicht, dass das Modell weiterhin eingesetzt werden kann.

Solange eine Generierungsaufgabe pending, submitted oder processing ist, können audio_url, video_url und cover_url leer sein — das ist bei einer unfertigen Aufgabe normal. Schließen Sie nicht allein aus einer leeren Adresse auf einen Fehler; nutzen Sie status und fragen Sie erneut ab, sobald der Status abgeschlossen ist. Erst wenn der Status abgeschlossen ist und die Adressen weiterhin leer bleiben, sollten Sie den Support mit der song_id kontaktieren.

⚠️ Audio-Adressen gelten 7 Tage — übertragen Sie Ihre Dateien rechtzeitig

Die hier zurückgegebenen audio_url, video_url (und weitere Medienadressen wie WAV) werden aus dem Objektspeicher der Plattform geliefert und laufen standardmäßig nach 7 Tagen ab: Die Dateien werden recycelt, und die alte Adresse liefert dann 404.

  • Verschieben Sie die Dateien innerhalb dieser 7 Tage in Ihren eigenen Speicher; behandeln Sie die Adresse nicht als langlebigen Link.
  • Eine abgelaufene Adresse erfordert keine neue Generierung und wird nicht erneut berechnet: Rufen Sie diesen Endpunkt (POST /api/music/query) erneut auf, um eine frische gültige Adresse für diesen Song zu erhalten.

2. Song-Verlauf des Kontos abfragen

Listet die Songs des Hauptkontos, zu dem der aktuelle API-Schlüssel gehört. Geeignet für eine eigene Songliste, einen Auswähler oder eine Verlaufsseite.

Endpunkt: GET /api/music/songs

Abrechnung: Kostenlos.

Query-Parameter

Parameter Typ Erforderlich Standard Hinweise
p integer nein 1 Seitennummer, beginnt bei 1
page_size integer nein 20 Einträge pro Seite, maximal 100
q string nein - Unscharfe Suche nach Titel oder exakte Suche nach vollständiger Song-ID
status string nein - Exakter Statusfilter, etwa completed, playable

Die Ergebnisse sind absteigend nach created_at und interner Datensatz-ID sortiert, damit die Blätterreihenfolge stabil bleibt.

Eine abgelaufene Übermittlung wiederfinden: Generierungs-Endpunkte liefern vor der Annahme keine Zwischenantwort. Wenn Ihr Client beim Senden in einen Timeout lief oder die Verbindung abbrach, kann diese Bestellung bereits angenommen sein und generiert werden. Werfen Sie einen Blick auf diesen Endpunkt (neueste zuerst): Angenommene Songs erscheinen normal in der Liste. Senden Sie erst erneut, wenn Sie sicher bestätigt haben, dass nichts vorliegt — sonst zahlen Sie doppelt. Siehe „Wartezeiten und Timeout-Einstellungen“ in der Übersicht der neuen API.

Beispielanfrage

curl "https://www.suno-api.io/api/music/songs?p=1&page_size=20&status=completed" \
  -H "Authorization: Bearer YOUR_API_KEY"

Beispielantwort

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 42,
    "items": [
      {
        "song_id": "8e31b3c0-example-song-id",
        "title": "Stadt bei Nacht",
        "status": "completed",
        "generation_type": "custom_generate",
        "model": "suno-v6",
        "duration": 187.42,
        "audio_url": "https://example.com/audio.mp3",
        "image_url": "https://example.com/cover.jpg",
        "created_at": 1784000000,
        "completed_at": 1784000120
      }
    ]
  }
}

Antwortfelder

Feld Typ Hinweise
song_id string Echte Song-ID, nutzbar für die Detailabfrage
title string Aktueller Titel, den der Nutzer umbenannt haben kann
status string Aktueller Status
generation_type string Generierungstyp
model string Generierungsmodell
duration number Audiodauer in Sekunden
audio_url string Audio-Adresse; kann leer sein, solange die Aufgabe läuft
image_url string Cover-Adresse; kann leer sein
created_at integer Erstellzeit, Unix-Zeitstempel in Sekunden
completed_at integer Fertigstellungszeit, Unix-Zeitstempel in Sekunden; kann fehlen, solange die Aufgabe läuft

Der Listen-Endpunkt liefert keine Prompts, Abrechnungsfelder, Kontoinformationen oder Rohantworten. Für Prompts und Generierungsparameter rufen Sie den Detail-Endpunkt des Songs auf.


3. Generierungsparameter abfragen

Fragt den Prompt, den Stil, das Modell und den Quellsong ab, die die Plattform bei der Generierung gespeichert hat.

Endpunkt: GET /api/music/songs/:song_id

Abrechnung: Kostenlos.

Es können nur Songs des Hauptkontos gelesen werden, zu dem der aktuelle API-Schlüssel gehört. Songs anderer Nutzer oder von Subsite-Konten werden einheitlich als „Song nicht gefunden“ behandelt.

Pfadparameter

Parameter Typ Erforderlich Hinweise
song_id string ja Echte Song-ID

Beispielanfrage

curl "https://www.suno-api.io/api/music/songs/8e31b3c0-example-song-id" \
  -H "Authorization: Bearer YOUR_API_KEY"

Beispielantwort

{
  "success": true,
  "message": "",
  "data": {
    "song_id": "8e31b3c0-example-song-id",
    "title": "Stadt bei Nacht",
    "status": "completed",
    "generation_type": "custom_generate",
    "model": "suno-v6",
    "duration": 187.42,
    "audio_url": "https://example.com/audio.mp3",
    "image_url": "https://example.com/cover.jpg",
    "video_url": "",
    "wav_url": "",
    "created_at": 1784000000,
    "completed_at": 1784000120,
    "client_request_id": "example-request-id",
    "client_request_index": 0,
    "parameters": {
      "prompt": "Stadtstraßen nach dem Regen, Songtext über ein Wiedersehen",
      "style_tags": "Mandopop, acoustic, warm vocal",
      "title": "Stadt bei Nacht",
      "model": "suno-v6",
      "generation_type": "custom_generate",
      "source_song_id": "",
      "source_audio_url": "",
      "custom_mode": null,
      "instrumental": null,
      "negative_tags": null,
      "vocal_gender": null,
      "lyrics_mode": null,
      "wait_audio": null,
      "style_weight": null,
      "weirdness_constraint": null
    },
    "parameter_retention": {
      "core_parameters_available": true,
      "extended_parameters_available": false,
      "sources": [
        "suno_tasks"
      ],
      "unavailable_fields": [
        "custom_mode",
        "instrumental",
        "negative_tags",
        "vocal_gender",
        "lyrics_mode",
        "wait_audio",
        "style_weight",
        "weirdness_constraint"
      ]
    }
  }
}

Die Felder von parameters

Feld Typ Hinweise
prompt string Generierungs-Prompt oder Songtext
style_tags string Stil-Tags
title string Gespeicherter Generierungstitel; eine gewöhnliche historische Aufgabe behält eventuell nur den aktuellen Titel
model string Generierungsmodell
generation_type string Generierungstyp
source_song_id string Quellsong-ID bei Cover-, Verlängerungs- und ähnlichen Aufgaben
source_audio_url string Adresse des Quell-Audios
custom_mode boolean/null Ob der benutzerdefinierte Modus genutzt wurde; null, wenn nicht gespeichert
instrumental boolean/null Ob der Song instrumental ist; vorhandene historische Daten speichern das meist nicht getrennt
negative_tags string/null Ausgeschlossene Stile
vocal_gender string/null Einstellung des Gesangsgeschlechts
lyrics_mode string/null Textmodus; vorhandene historische Daten speichern ihn meist nicht
wait_audio boolean/null Ob auf das vollständige Audio gewartet wurde; vorhandene historische Daten speichern das meist nicht
style_weight number/null Stilgewichtung
weirdness_constraint number/null Parameter für Kreativität / Seltsamkeit

Das Feld prompt_view (Prompt ansehen, hinzugefügt am 2026-09-28)

prompt_view ist eine normalisierte Struktur speziell für „Prompt ansehen“: Sie ordnet die Daten je Generierungstyp in feste Abschnitte, sodass der Client nicht mehr entscheiden muss, welches Feld er anzeigt. Es ist ein rein additives Feld — die alten Felder (parameters, parameter_retention) behalten Namen und Bedeutung, und Clients, die das neue Feld nicht auswerten, sind davon völlig unberührt.

"prompt_view": {
  "type": "custom_generate",
  "type_label": "Benutzerdefinierter Modus",
  "generation": {
    "model": "suno-v6", "max_mode": false, "duration": 182.4,
    "title": "Vier Uhr morgens#701f37", "title_base": "Vier Uhr morgens", "title_suffix": "701f37",
    "created_at": 1790421721
  },
  "inputs": {
    "user_text": "...", "user_text_kind": "lyrics",
    "user_style": "Guochao-Elektronik, tiefer Sub-Bass, Retro-Synth",
    "style_tags": "Guochao-Elektronik, tiefer Sub-Bass, Retro-Synth",
    "style_source": "user", "lyrics": "...",
    "negative_tags": "", "is_instrumental": false
  },
  "extended": {
    "vocal_gender": "m", "style_weight": 0.5, "audio_weight": 0.85,
    "weirdness_constraint": 0.5, "variety": 2, "lyrics_mode": "manual",
    "custom_mode": true
  },
  "reference": { "voice_name": "sv_40_34", "source_song_id": "", "source_title": "" },
  "retention": {
    "recorded_since": "2026-09-28", "missing_reason": "",
    "not_applicable_fields": ["audio_weight"]
  }
}
Feld Typ Hinweise
type / type_label string Roher Generierungstyp / Anzeigelabel (einfache Generierung, benutzerdefinierter Modus, Soundeffekt-Modus, Klonstimmengenerierung…)
generation.model string Verwendetes Modell
generation.max_mode bool Ob Max Mode aktiv war
generation.duration number Audiodauer in Sekunden
generation.title string Titel genau wie gespeichert (kann ein Suffix enthalten)
generation.title_base string Anzeigetitel ohne das abschließende Suffix #xxxxxx
generation.title_suffix string Das Suffix selbst (ohne #); leer, wenn keines vorhanden ist
inputs.user_text string Nutzereingabe (Beschreibung oder Songtext, je nach Typ)
inputs.user_text_kind string lyrics / description / cover_requirements
inputs.user_style string Der Stil, den der Nutzer eingegeben hat (benutzerdefinierter Modus, Stimme, Soundeffekte)
inputs.style_tags string Der tatsächlich wirksame Stil
inputs.style_source string user = vom Nutzer eingegeben; suno_derived = von Suno aus der Beschreibung abgeleitet
inputs.lyrics string Songtext; leer, wenn keiner vorhanden, bei instrumental [Instrumental]
inputs.negative_tags string Ausgeschlossene Stile
inputs.is_instrumental bool Ob der Song instrumental ist
extended.* — Erweiterte Parameter, siehe unten; nicht gespeicherte Felder erscheinen nicht
reference.voice_name string Stimmname (nur bei Stimmentypen; die interne persona id wird nicht zurückgegeben)
reference.source_song_id / source_title string Quellsong bei Cover-, Verlängerungs- und ähnlichen Aufgaben
retention.recorded_since string Datum, ab dem erweiterte Parameter gespeichert werden (2026-09-28)
retention.missing_reason string Warum keine erweiterten Parameter vorliegen; bei historischen Daten not_recorded_before_20260928
retention.not_applicable_fields string[] Parameter, die dieser Generierungstyp nie brauchte (nicht als „fehlende Parameter“ anzeigen)

Felder, die in extended auftreten können: vocal_gender, style_weight, audio_weight, weirdness_constraint, variety, lyrics_mode, custom_mode, sowie die Soundeffekt-Gruppe sound_type / sound_bpm / sound_key / sound_loop. Leere Werte werden nie zurückgegeben.

Drei Anzeigeregeln (befolgen statt selbst zu schließen):

  1. Herkunft des Stils unterscheiden: bei style_source=suno_derived als „Stil (von Suno aus Ihrer Beschreibung abgeleitet)“ anzeigen, niemals als „Ihr Stil“;
  2. Interne Prompts erscheinen nie: Stimmen-Cover-Typen geben nur die vom Nutzer eingegebenen 【Stilanforderungen】/【Coveranforderungen】 zurück; das feste Gerüst, das wir für das Modell zusammensetzen, erscheint in keinem Feld (historische Daten sind ebenso bereinigt);
  3. Fehlende Parameter nicht erraten: steht etwas nicht in extended, wurde es damals nicht erfasst — erklären Sie das mit retention.

Hinweise zur Parameterspeicherung

parameter_retention trennt „es wurde ausdrücklich ein leerer Wert übergeben“ von „das Feld wurde historisch nie gespeichert“:

Gewöhnliche historische Songs speicherten meist Prompt, Stil, aktuellen Titel, Modell, Generierungstyp und Quellsong, aber nicht alle erweiterten Parameter separat. Die Plattform errät fehlende Werte nie aus dem generation_type.

Einige erweiterte Musik-Aufgaben speicherten zusätzlich den ursprünglichen Prompt, Stil, Titel, Modell sowie custom_mode, negative_tags, vocal_gender, style_weight und weirdness_constraint. Selbst wenn ein erweiterter Datensatz existiert, können instrumental, lyrics_mode und wait_audio weiterhin nicht rekonstruierbar sein.

Titel können später vom Nutzer umbenannt werden. Wenn eine gewöhnliche historische Aufgabe keinen separaten Originaltitel gespeichert hat, kann parameters.title der aktuelle Titel sein; existiert ein erweiterter Aufgabendatensatz, wird der dort gespeicherte ursprüngliche Generierungstitel bevorzugt.

Nicht gefunden oder keine Berechtigung

Geschäftsfehler nutzen einen einheitlichen Antwortumschlag. Wenn der Song nicht existiert oder nicht zum aktuellen Konto gehört:

{
  "success": false,
  "message": "song not found"
}

Dieser Geschäftsfehler wird derzeit mit HTTP 200 zurückgegeben; beurteilen Sie das Ergebnis also am Feld success. Ein fehlender, ungültiger, abgelaufener oder deaktivierter API-Schlüssel liefert HTTP 401.

Sicherheitshinweise

Die Verlaufs- und Detail-Endpunkte geben niemals zurück:

WeiterAPI für zeitgestempelte Songtexte

API-Schlüssel erhalten

Erstellen Sie nach der Anmeldung einen API-Schlüssel in der Konsole. Jede Generierung kostet 0,6 ¥ und liefert 2 Tracks, Downloads sind unbegrenzt und eine Telefonnummer ist nicht erforderlich.

API-Schlüssel holen Zurück zur Übersicht