Allgemeine Suno-V6-Regeln und Aufgabenabfrage
curl --request GET \
--url https://api.apimart.ai/v1/music/tasks/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.apimart.ai/v1/music/tasks/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.apimart.ai/v1/music/tasks/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apimart.ai/v1/music/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.apimart.ai/v1/music/tasks/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.apimart.ai/v1/music/tasks/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apimart.ai/v1/music/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "completed",
"progress": 100,
"created": 1789041600,
"cost": 0.12,
"credits_cost": 1.2,
"result": {
"music": [
{
"audio_id": "example-track-id",
"status": "complete",
"title": "follow the lights",
"lyrics": "[Verse]\nthe late wind blows over familiar streets",
"tags": "pop, acoustic",
"display_tags": "Pop, Acoustic",
"negative_tags": "harsh vocals",
"style_weight": 0.7,
"weirdness_constraint": 0,
"audio_weight": 0.4,
"duration": 119.8,
"audio_url": "https://example.com/result.mp3",
"image_url": "https://example.com/cover.jpg",
"image_large_url": "https://example.com/cover-large.jpg"
}
]
}
}
}
{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "failed",
"progress": 0,
"cost": 0,
"credits_cost": 0,
"error": {
"message": "task failure reason",
"type": "task_failed",
"code": "task_failed",
"param": ""
}
}
}
Suno
Allgemeine Suno-V6-Regeln und Aufgabenabfrage
Suno-V6-Versionen, benutzerdefinierte Modelle, Lebenszyklus asynchroner Aufgaben, Quellspur-Referenzen und Ergebnisstruktur
GET
/
v1
/
music
/
tasks
/
{task_id}
Allgemeine Suno-V6-Regeln und Aufgabenabfrage
curl --request GET \
--url https://api.apimart.ai/v1/music/tasks/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.apimart.ai/v1/music/tasks/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.apimart.ai/v1/music/tasks/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apimart.ai/v1/music/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.apimart.ai/v1/music/tasks/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.apimart.ai/v1/music/tasks/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apimart.ai/v1/music/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "completed",
"progress": 100,
"created": 1789041600,
"cost": 0.12,
"credits_cost": 1.2,
"result": {
"music": [
{
"audio_id": "example-track-id",
"status": "complete",
"title": "follow the lights",
"lyrics": "[Verse]\nthe late wind blows over familiar streets",
"tags": "pop, acoustic",
"display_tags": "Pop, Acoustic",
"negative_tags": "harsh vocals",
"style_weight": 0.7,
"weirdness_constraint": 0,
"audio_weight": 0.4,
"duration": 119.8,
"audio_url": "https://example.com/result.mp3",
"image_url": "https://example.com/cover.jpg",
"image_large_url": "https://example.com/cover-large.jpg"
}
]
}
}
}
{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "failed",
"progress": 0,
"cost": 0,
"credits_cost": 0,
"error": {
"message": "task failure reason",
"type": "task_failed",
"code": "task_failed",
"param": ""
}
}
}
Alle Suno-Generierungs-, Bearbeitungs- und Werkzeug-APIs verwenden asynchrone Aufgaben: Senden Sie den Vorgang, übernehmen Sie
task_id und fragen Sie das Ergebnis über diese API ab.Authentifizierung
string
erforderlich
Bearer-Token-Authentifizierung:
Authorization: Bearer <YOUR_API_KEY>.V6-Version und Modellauswahl
Öffentliche Modelle unterstützen folgende Versionen:v6v6-wildv6-mini
version oder die von einer Modellerstellungsaufgabe gelieferte custom_model_id. Bearbeitungsvorgänge mit Versionsunterstützung verwenden ohne version standardmäßig v6. Öffentliche version und custom_model_id dürfen nicht gemeinsam gesendet werden.
custom: true wählt den Modus für benutzerdefinierte Liedtexte, custom_model_id ein trainiertes benutzerdefiniertes Modell. Dies sind unterschiedliche Konzepte; der Liedtextmodus wechselt nicht automatisch zur Modellpreisstufe.Allgemeine V6-Generierungsoptionen
Senden Sie die folgenden Felder nur, wenn sie beim jeweiligen Endpunkt aufgeführt sind:| Feld | Beschreibung |
|---|---|
variety | Stilvariation: off / normal / high / extra / max |
max_mode | Max-Modus, Standard false; sofern unterstützt, Abrechnung zum 2-fachen Standardpreis |
audio_format | mp3 / m4a / wav |
duration / duration_s | Zieldauer als Ganzzahl von 10 bis 360 Sekunden; nur bei angegebenen Generierungsvorgängen unterstützt |
max_mode: false. variety und Max-Modus sind unabhängig; variety: "max" aktiviert keine Max-Abrechnung.
Text- und Gewichtungsgrenzen
| Inhalt | Feld | Grenze |
|---|---|---|
| Inspirationsbeschreibung | prompt (Hauptgenerierung) / gpt_description (Vorgangs-APIs) | Bis zu 3.000 Zeichen |
| Liedtext | prompt (benutzerdefinierter Modus) | Bis zu 5.000 Zeichen |
| Stil | style (Hauptgenerierung) / tags (Vorgangs-APIs) | Bis zu 1.000 Zeichen |
| Titel | title | Bis zu 80 Zeichen |
| Gewichtungen | style_weight / weirdness / audio_weight | 0–1; der Zahlenwert 0 ist gültig |
weirdness; weirdness_constraint ist ein Kompatibilitätsalias. Die Hauptgenerierung verwendet weiterhin weirdness_constraint. Textlängen werden in Unicode-Zeichen berechnet.
Referenz-Quellspur
Auf Basis vorhandener Werke:task_id: API-Mart-Aufgaben-ID der ausgegebenen Audiospur.audio_index: Ursprüngliche Position indata.result.music[]der Quellaufgabe, beginnend bei 1; Standardwert ist1.
Neue Anfragen referenzieren die Quellspur mit
task_id + audio_index; audio_id, music_id oder audio_url sind kein Ersatz. Fehlt die Quellaufgabe oder liegt der Index außerhalb des Bereichs, wird 400 zurückgegeben.Übermittlungsantwort
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01M24YMN4EV04M84R5QYM77R1E"
}
]
}
data[0].task_id. submitted bedeutet nur, dass die Aufgabe angenommen wurde, nicht dass Audio oder andere Endprodukte bereits vorliegen.
Aufgabe abfragen
GET /v1/music/tasks/{task_id}
Mit ?language=zh erhalten Sie unterstützte Übersetzungen von Fehlermeldungen. Dieser Parameter ändert nicht die Sprache des Songs oder Liedtexts.
string
erforderlich
Von der Übermittlungs-API zurückgegebene Aufgaben-ID.
data.status completed oder failed ist. Nach dem Neuladen kann dieselbe Aufgaben-ID weiterverwendet werden. Senden Sie bezahlte POST-Anfragen bei einem Netzwerk-Timeout nicht automatisch erneut.
Abfrageantwort
integer
Antwortstatuscode.
object
Aufgabeninformationen.
Anzeigen Eigenschaften
Anzeigen Eigenschaften
string
Plattform-Aufgaben-ID.
string
pending / processing / completed / failed / unknown.number
Aufgabenfortschritt, meist 0–100. Der Abschluss ist anhand von
status zu bestimmen.number
Erstellungszeit in Unix-Sekunden.
number
Geschätzte Verarbeitungszeit in Sekunden; nur als Richtwert, nicht als garantierter Countdown.
number
Betrag (USD).
number
Von der Aufgabe verbrauchte Punkte. Zeigen Sie den Rückgabewert der API unverändert an.
object
Ergebnis nach Abschluss; die Struktur hängt vom Vorgang ab.
object
Fehlermeldung; häufige Felder sind
message / type / code / param.{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "completed",
"progress": 100,
"created": 1789041600,
"cost": 0.12,
"credits_cost": 1.2,
"result": {
"music": [
{
"audio_id": "example-track-id",
"status": "complete",
"title": "follow the lights",
"lyrics": "[Verse]\nthe late wind blows over familiar streets",
"tags": "pop, acoustic",
"display_tags": "Pop, Acoustic",
"negative_tags": "harsh vocals",
"style_weight": 0.7,
"weirdness_constraint": 0,
"audio_weight": 0.4,
"duration": 119.8,
"audio_url": "https://example.com/result.mp3",
"image_url": "https://example.com/cover.jpg",
"image_large_url": "https://example.com/cover-large.jpg"
}
]
}
}
}
{
"code": 200,
"data": {
"id": "task_01M24YMN4EV04M84R5QYM77R1E",
"status": "failed",
"progress": 0,
"cost": 0,
"credits_cost": 0,
"error": {
"message": "task failure reason",
"type": "task_failed",
"code": "task_failed",
"param": ""
}
}
}
Ergebnisverarbeitung
- Musikergebnisse befinden sich normalerweise in
data.result.music[]; Downloads, Liedtexte, MIDI, Persona und benutzerdefinierte Modelle verwenden jedoch eigene Ergebnisstrukturen. durationist die tatsächliche Dauer und kann Dezimalstellen enthalten; die Zieldauer muss nicht exakt dem Endergebnis entsprechen.- Der Gewichtungswert
0ist gültig und darf nicht durch eine Falsy-Prüfung in JavaScript ausgeblendet werden. audio_urlendet nicht garantiert auf.mp3. Verwenden Sie zum Abspielen oder Herunterladen die tatsächlich zurückgegebene URL.- Behalten Sie bei
status="unknown"die Aufgaben-ID bei und ermöglichen Sie manuelles Aktualisieren, ohne automatisch neue Aufgaben zu erstellen.
AbortController kann Browseranfragen und Abfragen stoppen, aber nicht die serverseitige Aufgabe. Derzeit gibt es keinen Endpunkt zum Abbrechen einer gesendeten Suno-Aufgabe.