curl --request POST \
--url https://api.apimart.ai/v1/music/generations/download \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"]
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/download",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"],
},
)
print(response.json())
const response = await fetch(
"https://api.apimart.ai/v1/music/generations/download",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "suno",
task_id: "task_01JGXXXXXXXXXXXX",
audio_index: 1,
formats: ["mp3", "wav"],
}),
},
);
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JHXXXXXXXXXXXX"
}
]
}
{
"error": {
"message": "`formats` contains unsupported format `flac`. Supported: mp3 / m4a / wav",
"type": "invalid_request_error",
"code": "invalid_source_reference"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Prüfen Sie Ihren API-Schlüssel.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben",
"type": "payment_required"
}
}
Suno
Audiodateien herunterladen
- Suno-Songs als MP3-, M4A- oder WAV-Datei herunterladen
- Mehrere Formate in einer Anfrage und eine URL pro Datei
- Quellsong mit task_id und audio_index auswählen
- Asynchrone Übermittlung, Ergebnis über den Musik-Task-Endpunkt abfragen
POST
/
v1
/
music
/
generations
/
download
curl --request POST \
--url https://api.apimart.ai/v1/music/generations/download \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"]
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/download",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"],
},
)
print(response.json())
const response = await fetch(
"https://api.apimart.ai/v1/music/generations/download",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "suno",
task_id: "task_01JGXXXXXXXXXXXX",
audio_index: 1,
formats: ["mp3", "wav"],
}),
},
);
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JHXXXXXXXXXXXX"
}
]
}
{
"error": {
"message": "`formats` contains unsupported format `flac`. Supported: mp3 / m4a / wav",
"type": "invalid_request_error",
"code": "invalid_source_reference"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Prüfen Sie Ihren API-Schlüssel.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben",
"type": "payment_required"
}
}
Der frühere Endpunkt
POST /v1/music/generations/wav ist veraltet. Er bleibt vorübergehend kompatibel und entspricht dem neuen Endpunkt mit formats: ["wav"]. Neue Integrationen müssen POST /v1/music/generations/download verwenden.Quellsong wählen: Übergeben Sie die
task_id der Aufgabe, die das Quellaudio erzeugt hat. Mit audio_index wählen Sie einen Titel aus dem Ergebnis music[]. Der Index beginnt bei 1 und ist standardmäßig 1.curl --request POST \
--url https://api.apimart.ai/v1/music/generations/download \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"]
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/download",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={
"model": "suno",
"task_id": "task_01JGXXXXXXXXXXXX",
"audio_index": 1,
"formats": ["mp3", "wav"],
},
)
print(response.json())
const response = await fetch(
"https://api.apimart.ai/v1/music/generations/download",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "suno",
task_id: "task_01JGXXXXXXXXXXXX",
audio_index: 1,
formats: ["mp3", "wav"],
}),
},
);
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JHXXXXXXXXXXXX"
}
]
}
{
"error": {
"message": "`formats` contains unsupported format `flac`. Supported: mp3 / m4a / wav",
"type": "invalid_request_error",
"code": "invalid_source_reference"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Prüfen Sie Ihren API-Schlüssel.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben",
"type": "payment_required"
}
}
Authentifizierung
string
erforderlich
Alle Endpunkte erfordern einen Bearer Token. Den Schlüssel erhalten Sie auf der API-Key-Seite.
Authorization: Bearer YOUR_API_KEY
Anfrageparameter
string
Standard:"suno"
Modellname. Verwenden Sie
suno; bei Auslassung ist suno der Standard.string
erforderlich
Die Aufgaben-ID, die beim Erstellen des Quellsongs zurückgegeben wurde.Die Quellaufgabe muss zum aktuellen Konto gehören, abgeschlossen sein und eine herunterladbare Audiospur enthalten. Musikgenerierung, Verlängerung, Cover und Stems sind zulässig; reine Textaufgaben wie Lyrics oder BPM-Analyse nicht.
integer
Standard:"1"
Der Titel im
music[]-Ergebnis der Quellaufgabe.- Index beginnt bei
1 - Standard:
1 - Darf die Anzahl der Quelltitel nicht überschreiten
string[]
Array der gewünschten Dateiformate mit mindestens einem Eintrag.Zulässige Werte:
mp3, m4a, wav.Mehrere Formate sind gemeinsam möglich. Groß-/Kleinschreibung wird ignoriert, Duplikate werden entfernt und die Ergebnisreihenfolge entspricht der Anfrage.string
Für ein einzelnes Format kann dieses Feld statt
formats verwendet werden.Beispiel: "format": "mp3"Verwenden Sie entweder
formats oder format. Fehlen beide oder ist die Liste leer, wird HTTP 400 zurückgegeben.Übermittlungsantwort
Bei Erfolg wird eine neuetask_id für die Download-Aufgabe zurückgegeben.
data ist ein Array; lesen Sie data[0].task_id. Diese ID gehört zur neuen Download-Aufgabe und unterscheidet sich von der Quell-task_id in der Anfrage.Download-Ergebnis abfragen
Verwenden Sie die Download-Aufgaben-ID:GET /v1/music/tasks/{task_id}
completed noch failed, pollen Sie alle 2 Sekunden bis maximal 60 Sekunden.
Abgeschlossen
{
"code": 200,
"data": {
"id": "task_01JHXXXXXXXXXXXX",
"status": "completed",
"progress": 100,
"cost": 0.01,
"credits_cost": 0.1,
"result": {
"music_id": "518c74ee-62ac-4ccd-b3d9-7003acd12ad7",
"files": [
{
"format": "mp3",
"url": "https://assets.apimart.ai/audio/example.mp3"
},
{
"format": "wav",
"url": "https://assets.apimart.ai/audio/example.wav"
}
],
"wavUrl": "https://assets.apimart.ai/audio/example.wav"
}
}
}
result.files[]:
| Feld | Typ | Beschreibung |
|---|---|---|
format | string | mp3 / m4a / wav |
url | string | Download-Adresse |
result.wavUrl dient nur der Kompatibilität mit dem alten WAV-Endpunkt. Neuer Code soll immer result.files[] verwenden.In Bearbeitung
{
"code": 200,
"data": {
"id": "task_01JHXXXXXXXXXXXX",
"status": "processing",
"progress": 50,
"created": 1756800000
}
}
result. Pollen Sie weiter.
Fehlgeschlagen
Fehlgeschlagene Aufgaben werden automatisch erstattet und lieferncost: 0. Zeigen Sie error.message an und bieten Sie eine Wiederholung an.
Datei-URLs
Ergebnisse verwenden normalerweise die APIMart-Dateidomain. Scheitert die Übertragung in den Speicher, kann eine zeitlich nicht garantierte Upstream-CDN-URL zurückgegeben werden.Laden Sie die Datei zeitnah herunter. Verwenden Sie temporäre URLs nicht als dauerhaften Speicher.
Fehler
Validierungsfehler geben vor Aufgabenerstellung und Abrechnung HTTP 400 zurück:| Fehlertext | Ursache |
|---|---|
formats is required / must contain at least one | Format fehlt |
unsupported format | Anderer Wert als mp3 / m4a / wav |
task_id is required / invalid task_id format | Quell-ID fehlt oder ist ungültig |
source task not found | Quellaufgabe existiert nicht oder gehört einem anderen Konto |
audio_index N out of range | Titelindex außerhalb des Ergebnisses |
track #N has no music_id | Quellaufgabe nicht fertig oder Titel ohne Audio |
model_price_not_configured bedeutet, dass der Preis suno@download nicht konfiguriert ist; wenden Sie sich an den Plattform-Support.
Abrechnung und wiederholte Downloads
- Eine Anfrage mit mehreren Formaten wird einmal berechnet
- Eine erneute Anfrage für denselben Song verursacht eine neue Gebühr
- Ein später angefordertes anderes Format verursacht ebenfalls eine neue Gebühr
- Fehlgeschlagene Download-Aufgaben werden automatisch erstattet
Verwenden Sie bereits zurückgegebene Datei-URLs erneut und deaktivieren Sie die Download-Schaltfläche während einer Anfrage, um doppelte Gebühren zu vermeiden.
Migration vom alten Endpunkt
| Element | Alt | Neu |
|---|---|---|
| Pfad | /v1/music/generations/wav | /v1/music/generations/download |
| Formate | Nur WAV | MP3 / M4A / WAV, mehrfach |
| Parameter | — | formats oder format |
| Ergebnis | result.wavUrl | result.files[] |
/generations/download verwenden.
Response
integer
Antwortstatuscode; bei Erfolg 200