curl --request POST \
--url https://api.apimart.ai/v1/music/generations/stemsFlowMusic \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flowmusic",
"clip_id": "abc123-def456"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/stemsFlowMusic"
payload = {
"model": "flowmusic",
"clip_id": "abc123-def456"
}
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/stemsFlowMusic";
const payload = {
model: "flowmusic",
clip_id: "abc123-def456"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KWXVD1EFXYEHDJ8M0XNJ65AR"
}
]
}
{
"error": {
"message": "clip_id is required",
"type": "invalid_request",
"param": "",
"code": "invalid_request"
}
}
{
"error": {
"message": "Solde insuffisant",
"type": "invalid_request",
"param": "",
"code": "quota_not_enough"
}
}
{
"error": {
"message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
"type": "rate_limit_error",
"param": "",
"code": "rate_limit_error"
}
}
Flow Music
Séparation des pistes
Flow Music sépare les pistes voix / accompagnement, le résultat est une archive zip de pistes séparées
POST
/
v1
/
music
/
generations
/
stemsFlowMusic
curl --request POST \
--url https://api.apimart.ai/v1/music/generations/stemsFlowMusic \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flowmusic",
"clip_id": "abc123-def456"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/stemsFlowMusic"
payload = {
"model": "flowmusic",
"clip_id": "abc123-def456"
}
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/stemsFlowMusic";
const payload = {
model: "flowmusic",
clip_id: "abc123-def456"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KWXVD1EFXYEHDJ8M0XNJ65AR"
}
]
}
{
"error": {
"message": "clip_id is required",
"type": "invalid_request",
"param": "",
"code": "invalid_request"
}
}
{
"error": {
"message": "Solde insuffisant",
"type": "invalid_request",
"param": "",
"code": "quota_not_enough"
}
}
{
"error": {
"message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
"type": "rate_limit_error",
"param": "",
"code": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/music/generations/stemsFlowMusic \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flowmusic",
"clip_id": "abc123-def456"
}'
import requests
url = "https://api.apimart.ai/v1/music/generations/stemsFlowMusic"
payload = {
"model": "flowmusic",
"clip_id": "abc123-def456"
}
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/stemsFlowMusic";
const payload = {
model: "flowmusic",
clip_id: "abc123-def456"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KWXVD1EFXYEHDJ8M0XNJ65AR"
}
]
}
{
"error": {
"message": "clip_id is required",
"type": "invalid_request",
"param": "",
"code": "invalid_request"
}
}
{
"error": {
"message": "Solde insuffisant",
"type": "invalid_request",
"param": "",
"code": "quota_not_enough"
}
}
{
"error": {
"message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
"type": "rate_limit_error",
"param": "",
"code": "rate_limit_error"
}
}
Authentification
string
requis
Toutes les API nécessitent une authentification par Bearer TokenObtenir une clé API :Rendez-vous sur la page de gestion des clés API pour obtenir votre clé APIAjoutez-la dans l’en-tête de la requête lors de l’utilisation :
Authorization: Bearer YOUR_API_KEY
Paramètres de requête
string
requis
Nom du modèle, toujours passer
"flowmusic" (insensible à la casse)string
requis
clip_id de la musique dont les pistes doivent être séparées, provenant du
result.music[].clip_id d’une tâche réussieRéponse
integer
Code de statut de la réponse, 200 en cas de succès
array
Cas d’usage
Scénario 1 : séparer la voix et l’accompagnement
{
"model": "flowmusic",
"clip_id": "abc123-def456"
}
Interroger le résultat de la tâcheLa séparation des pistes est une tâche asynchrone ; après soumission, un
task_id est renvoyé. Utilisez l’API Obtenir le statut de la tâche pour interroger la progression et le résultat de la génération. Le résultat de la séparation est un fichier zip (result.music[0].file_url, environ 20 Mo) contenant les pistes séparées (voix / accompagnement, etc.), à télécharger directement.Exemple de résultat de tâche terminée
Exemple de réponse de requête (GET /v1/music/tasks/{task_id}) :
{
"code": 200,
"data": {
"id": "task_01KWXVD1EFXYEHDJ8M0XNJ65AR",
"status": "completed",
"progress": 100,
"created": 1783413245,
"completed": 1783413331,
"actual_time": 86,
"cost": 0.048,
"credits_cost": 0.48,
"result": {
"music": [
{
"clip_id": "a41aade4-993e-4d28-b56f-d97e7ef7167c",
"file_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4_stems.zip",
"url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4_stems.zip",
"mime_type": "application/zip",
"size_bytes": 20323367
}
]
}
}
}