curl -X POST https://api.apimart.ai/v1/music/generations/coverSong \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/coverSong"
payload = {
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/music/generations/coverSong";
const payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/music/generations/coverSong"
payload := map[string]interface{}{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/music/generations/coverSong";
String payload = """
{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/music/generations/coverSong";
$payload = [
"model" => "suno",
"task_id" => "task_01ABC",
"audio_index" => 1,
"version" => "v6",
"tags" => "jazz, slow"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/music/generations/coverSong")
payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/music/generations/coverSong")!
let payload: [String: Any] = [
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/music/generations/coverSong";
var payload = @"{
""model"": ""suno"",
""task_id"": ""task_01ABC"",
""audio_index"": 1,
""version"": ""v6"",
""tags"": ""jazz, slow""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://api.apimart.ai/v1/music/generations/coverSong";
const char *payload = "{"
"\"model\":\"suno\","
"\"task_id\":\"task_01ABC\","
"\"audio_index\":1,"
"\"version\":\"v6\","
"\"tags\":\"jazz, slow\""
"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/music/generations/coverSong"];
NSDictionary *payload = @{
@"model": @"suno",
@"task_id": @"task_01ABC",
@"audio_index": @1,
@"version": @"v6",
@"tags": @"jazz, slow"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://api.apimart.ai/v1/music/generations/coverSong"
let payload = {|{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/music/generations/coverSong');
final payload = {
'model': 'suno',
'task_id': 'task_01ABC',
'audio_index': 1,
'version': 'v6',
'tags': 'jazz, slow'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/music/generations/coverSong"
payload <- list(
model = "suno",
task_id = "task_01ABC",
audio_index = 1,
version = "v6",
tags = "jazz, slow"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
}
]
}
{
"error": {
"code": 400,
"message": "Ungültige Request-Parameter",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen, bitte überprüfen Sie Ihren API-Schlüssel",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben, bitte laden Sie auf und versuchen Sie es erneut",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Zugriff verboten, Sie haben keine Berechtigung, auf diese Ressource zuzugreifen",
"type": "permission_error"
}
}
{
"error": {
"code": 429,
"message": "Zu viele Anfragen, bitte versuchen Sie es später erneut",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Interner Serverfehler, bitte versuchen Sie es später erneut",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Gateway-Fehler, der Server ist vorübergehend nicht verfügbar",
"type": "bad_gateway"
}
}
Suno
Stil-Neuinterpretation
- Einen vorhandenen Song in einem anderen Stil neu interpretieren.
- Quell-Audiotrack referenzieren: über
task_id+audio_indexangeben, ohne dass eine zusätzliche ID gespeichert werden muss - Asynchrone Aufgabe: Das Absenden gibt eine
task_idzurück; fragen SieGET /v1/music/tasks/:task_idab, um das Ergebnis zu erhalten
POST
/
v1
/
music
/
generations
/
coverSong
curl -X POST https://api.apimart.ai/v1/music/generations/coverSong \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/coverSong"
payload = {
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/music/generations/coverSong";
const payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/music/generations/coverSong"
payload := map[string]interface{}{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/music/generations/coverSong";
String payload = """
{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/music/generations/coverSong";
$payload = [
"model" => "suno",
"task_id" => "task_01ABC",
"audio_index" => 1,
"version" => "v6",
"tags" => "jazz, slow"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/music/generations/coverSong")
payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/music/generations/coverSong")!
let payload: [String: Any] = [
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/music/generations/coverSong";
var payload = @"{
""model"": ""suno"",
""task_id"": ""task_01ABC"",
""audio_index"": 1,
""version"": ""v6"",
""tags"": ""jazz, slow""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://api.apimart.ai/v1/music/generations/coverSong";
const char *payload = "{"
"\"model\":\"suno\","
"\"task_id\":\"task_01ABC\","
"\"audio_index\":1,"
"\"version\":\"v6\","
"\"tags\":\"jazz, slow\""
"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/music/generations/coverSong"];
NSDictionary *payload = @{
@"model": @"suno",
@"task_id": @"task_01ABC",
@"audio_index": @1,
@"version": @"v6",
@"tags": @"jazz, slow"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://api.apimart.ai/v1/music/generations/coverSong"
let payload = {|{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/music/generations/coverSong');
final payload = {
'model': 'suno',
'task_id': 'task_01ABC',
'audio_index': 1,
'version': 'v6',
'tags': 'jazz, slow'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/music/generations/coverSong"
payload <- list(
model = "suno",
task_id = "task_01ABC",
audio_index = 1,
version = "v6",
tags = "jazz, slow"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
}
]
}
{
"error": {
"code": 400,
"message": "Ungültige Request-Parameter",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen, bitte überprüfen Sie Ihren API-Schlüssel",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben, bitte laden Sie auf und versuchen Sie es erneut",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Zugriff verboten, Sie haben keine Berechtigung, auf diese Ressource zuzugreifen",
"type": "permission_error"
}
}
{
"error": {
"code": 429,
"message": "Zu viele Anfragen, bitte versuchen Sie es später erneut",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Interner Serverfehler, bitte versuchen Sie es später erneut",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Gateway-Fehler, der Server ist vorübergehend nicht verfügbar",
"type": "bad_gateway"
}
}
Quellaudio-Referenz: Für Vorgänge auf Basis vorhandener Songs sind keine zusätzlichen IDs erforderlich. Übergeben Sie die
task_id der Aufgabe, die die Quellspur erzeugt hat, sowie audio_index für die Position in data.result.music[] (ab 1, Standard 1).custom bestimmt, welche Felder verwendet werden. Alle übermittelten Werte müssen die Anforderungen an Typ, Bereich und Länge erfüllen, auch wenn ein Feld im gewählten Modus nicht verwendet wird. Bei custom=true enthält prompt den Liedtext und kann bei instrumental=false gemäß den folgenden Bedingungen erforderlich sein. Bei custom=false ist gpt_description erforderlich. Wird custom weggelassen, leitet das Backend den Modus aus prompt, gpt_description, tags und title ab.Verwendung
Verwendung A — Neuinterpretation in einem angegebenen Stil (am häufigsten, empfohlen) Geben Sie den Quellsong + Zielstil-tags an; um custom müssen Sie sich nicht kümmern (sobald das System tags sieht, behandelt es dies automatisch als custom=true):
{
"model": "suno",
"task_id": "task_xxx", // Quellsong: eine abgeschlossene Musikaufgabe
"audio_index": 1, // welcher Song aus der Quellaufgabe (1-basiert, Standard 1)
"version": "v6",
"tags": "jazz, slow" // Zielstil → automatisch custom=true
}
prompt (Songtext) / title angeben.
Verwendung B — Inspirationsmodus (custom=false)
Geben Sie keinen konkreten Stil an und lassen Sie das Modell improvisieren; Sie müssen jedoch gpt_description angeben und den gewünschten Effekt beschreiben:
{
"model": "suno",
"task_id": "task_xxx",
"audio_index": 1,
"version": "v6",
"custom": false,
"gpt_description": "Interpretiere diesen Song in einem langsamen Jazz-Stil neu" // erforderlich bei custom=false
}
custom=false ohne gpt_description (das schlägt bereits beim Absenden mit 400 fehl).
curl -X POST https://api.apimart.ai/v1/music/generations/coverSong \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data '{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/coverSong"
payload = {
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/music/generations/coverSong";
const payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/music/generations/coverSong"
payload := map[string]interface{}{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/music/generations/coverSong";
String payload = """
{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/music/generations/coverSong";
$payload = [
"model" => "suno",
"task_id" => "task_01ABC",
"audio_index" => 1,
"version" => "v6",
"tags" => "jazz, slow"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/music/generations/coverSong")
payload = {
model: "suno",
task_id: "task_01ABC",
audio_index: 1,
version: "v6",
tags: "jazz, slow"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/music/generations/coverSong")!
let payload: [String: Any] = [
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/music/generations/coverSong";
var payload = @"{
""model"": ""suno"",
""task_id"": ""task_01ABC"",
""audio_index"": 1,
""version"": ""v6"",
""tags"": ""jazz, slow""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://api.apimart.ai/v1/music/generations/coverSong";
const char *payload = "{"
"\"model\":\"suno\","
"\"task_id\":\"task_01ABC\","
"\"audio_index\":1,"
"\"version\":\"v6\","
"\"tags\":\"jazz, slow\""
"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://api.apimart.ai/v1/music/generations/coverSong"];
NSDictionary *payload = @{
@"model": @"suno",
@"task_id": @"task_01ABC",
@"audio_index": @1,
@"version": @"v6",
@"tags": @"jazz, slow"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://api.apimart.ai/v1/music/generations/coverSong"
let payload = {|{
"model": "suno",
"task_id": "task_01ABC",
"audio_index": 1,
"version": "v6",
"tags": "jazz, slow"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/music/generations/coverSong');
final payload = {
'model': 'suno',
'task_id': 'task_01ABC',
'audio_index': 1,
'version': 'v6',
'tags': 'jazz, slow'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/music/generations/coverSong"
payload <- list(
model = "suno",
task_id = "task_01ABC",
audio_index = 1,
version = "v6",
tags = "jazz, slow"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
}
]
}
{
"error": {
"code": 400,
"message": "Ungültige Request-Parameter",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen, bitte überprüfen Sie Ihren API-Schlüssel",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Kontoguthaben, bitte laden Sie auf und versuchen Sie es erneut",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Zugriff verboten, Sie haben keine Berechtigung, auf diese Ressource zuzugreifen",
"type": "permission_error"
}
}
{
"error": {
"code": 429,
"message": "Zu viele Anfragen, bitte versuchen Sie es später erneut",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Interner Serverfehler, bitte versuchen Sie es später erneut",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Gateway-Fehler, der Server ist vorübergehend nicht verfügbar",
"type": "bad_gateway"
}
}
Authorizations
string
erforderlich
Alle Schnittstellen erfordern eine Authentifizierung mit einem Bearer TokenAPI-Key abrufen:Besuchen Sie die API-Key-Verwaltungsseite, um Ihren API-Key zu erhaltenFügen Sie bei der Verwendung im Request-Header hinzu:
Authorization: Bearer YOUR_API_KEY
Body
string
Standard:"suno"
Audiomodell. Übergeben Sie derzeit
suno (ohne Angabe standardmäßig suno).string
erforderlich
Die
task_id der Aufgabe, die den Quell-Audiotrack erzeugt hat. Fehlt sie oder kann die Quelle nicht aufgelöst werden, wird bereits beim Absenden 400 zurückgegeben.integer
Standard:"1"
Wählt eine Spur aus
data.result.music[] der Quellaufgabe aus (ab 1; 1 ist die erste Spur und der Standardwert).string
Standard:"v6"
Öffentliche Version:
v6 / v6-wild / v6-mini. Standard ist v6; bei Verwendung von custom_model_id weglassen.string
Vollständige UUID aus der Modellerstellungsaufgabe. Kann nicht mit
version oder persona_id verwendet werden.boolean
true=benutzerdefinierter Modus (prompt wird als Songtext verwendet); false=Inspirationsmodus (verwendet gpt_description); ohne Angabe wird anhand des Inhalts abgeleitet (siehe die Warnung oben).string
Songtext. Wirkt bei
custom=true (im Inspirationsmodus ignoriert).string
Inspirations-Prompt. Erforderlich bei
custom=false — fehlt er, schlägt die Anfrage bereits beim Absenden mit 400 fehl (es wird nichts berechnet).string
Titel. Wirkt nur bei
custom=true.string
Zielstil-Tags. Wirkt nur bei
custom=true.string
Auszuschließende Stil-Tags. Wirkt nur bei
custom=true.number
Stilgewichtung,
0.00–1.00 (Werte außerhalb des Bereichs geben bereits beim Absenden direkt 400 zurück). Wirkt nur bei custom=true.number
Kreativitätsgewichtung,
0.00–1.00. Der alte Name weirdness_constraint wird unterstützt; neue Anfragen sollten weirdness verwenden.number
Audiogewichtung,
0.00–1.00. Wirkt nur bei custom=true.string
Gesangsgeschlecht:
Male / Female. Funktioniert in beiden Modi.string
Persona-Stil-ID. Gilt nur bei
custom=true und kann nicht zusammen mit custom_model_id verwendet werden.integer
Zieldauer von 10–360 Sekunden. Nur bei
custom=true; die tatsächliche Dauer ergibt sich aus dem Ergebnis.string
Stilvariation:
off / normal / high / extra / max. Optional.boolean
Standard:"false"
Aktiviert den Max-Modus. Erfordert den benutzerdefinierten Modus und wird zum Doppelten des Standardpreises abgerechnet.
string
Audioausgabeformat:
mp3 / m4a / wav.Ergebnis abrufen: Dies ist eine asynchrone Aufgabe. Fragen Sie nach der Übermittlung alle 3–5 Sekunden den Aufgabenstatus ab. Die Generierung dauert meist 30–120 Sekunden; Zwischenstatus und Fortschritt ändern sich nicht zwingend in festen Schritten. Lesen Sie nach Abschluss
audio_url aus data.result.music[]. Bei einem Fehler wird der abgezogene Betrag automatisch erstattet.Response
integer
Antwort-Statuscode