curl --request POST \
--url https://api.apimart.ai/v1/music/generations/uploadCover \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": true,
"instrumental": true,
"tags": "piano, ambient",
"duration_s": 120,
"variety": "normal",
"audio_format": "m4a"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/uploadCover",
headers={"Authorization": "Bearer <token>"},
json={
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": True,
"instrumental": True,
"tags": "piano, ambient",
"duration_s": 120,
"audio_format": "m4a",
},
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/music/generations/uploadCover", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "suno",
version: "v6",
audio_url: "https://example.com/reference.mp3",
custom: true,
instrumental: true,
tags: "piano, ambient",
duration_s: 120,
audio_format: "m4a"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{"status": "submitted", "task_id": "task_01M24YMN4EV04M84R5QYM77R1E"}
]
}
Suno
Upload Audio and Create a Cover
Upload a public audio URL and create a cover with Suno V6
POST
/
v1
/
music
/
generations
/
uploadCover
curl --request POST \
--url https://api.apimart.ai/v1/music/generations/uploadCover \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": true,
"instrumental": true,
"tags": "piano, ambient",
"duration_s": 120,
"variety": "normal",
"audio_format": "m4a"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/uploadCover",
headers={"Authorization": "Bearer <token>"},
json={
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": True,
"instrumental": True,
"tags": "piano, ambient",
"duration_s": 120,
"audio_format": "m4a",
},
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/music/generations/uploadCover", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "suno",
version: "v6",
audio_url: "https://example.com/reference.mp3",
custom: true,
instrumental: true,
tags: "piano, ambient",
duration_s: 120,
audio_format: "m4a"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{"status": "submitted", "task_id": "task_01M24YMN4EV04M84R5QYM77R1E"}
]
}
This endpoint creates a cover directly from a public audio URL, so you do not need to call
uploadTask first. It returns a task_id; poll GET /v1/music/tasks/{task_id} for the result.curl --request POST \
--url https://api.apimart.ai/v1/music/generations/uploadCover \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": true,
"instrumental": true,
"tags": "piano, ambient",
"duration_s": 120,
"variety": "normal",
"audio_format": "m4a"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/music/generations/uploadCover",
headers={"Authorization": "Bearer <token>"},
json={
"model": "suno",
"version": "v6",
"audio_url": "https://example.com/reference.mp3",
"custom": True,
"instrumental": True,
"tags": "piano, ambient",
"duration_s": 120,
"audio_format": "m4a",
},
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/music/generations/uploadCover", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "suno",
version: "v6",
audio_url: "https://example.com/reference.mp3",
custom: true,
instrumental: true,
tags: "piano, ambient",
duration_s: 120,
audio_format: "m4a"
})
});
console.log(await response.json());
Authorizations
string
required
Bearer Token. Obtain API Key from the API Key Management page.
Body
string
default:"suno"
Always use
suno.string
required
A publicly accessible direct HTTP(S) audio URL. Keep the source audio under 8 minutes. Local paths,
blob: URLs, and links that require sign-in are not supported.string
default:"v6"
Public version:
v6 / v6-wild / v6-mini. Defaults to v6; omit this field when using custom_model_id.string
The full UUID returned by the model-creation task. Mutually exclusive with
version and persona_id.boolean
Send this field explicitly. Use
gpt_description with false; use the lyrics and style fields with true.boolean
default:"false"
Whether to generate instrumental audio. When
custom=true and this field is false, prompt is required.string
Inspiration description. Required when
custom=false; maximum 3,000 characters.string
Custom lyrics input, up to 5,000 characters.
string
Style description, up to 1,000 characters.
string
Title, up to 80 characters.
string
Styles to exclude.
number
Style weight, from 0 to 1.
number
Creativity weight, from 0 to 1.
number
Audio weight, from 0 to 1.
boolean
Whether to creatively rewrite the input lyrics.
string
Voice gender:
Male / Female.string
Persona ID, mutually exclusive with
custom_model_id.integer
Target generation duration, from 10 to 360 seconds. Available only in custom mode.
string
Style variation:
off / normal / high / extra / max.boolean
default:"false"
Enables Max mode. Requires custom mode and is billed at twice the standard price.
string
Output format:
mp3 / m4a / wav.Response
integer
Response Status Codes.
array
Submission result. Read from
data[0].task_id and poll the task query interface.{
"code": 200,
"data": [
{"status": "submitted", "task_id": "task_01M24YMN4EV04M84R5QYM77R1E"}
]
}