Passer au contenu principal
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

Authorization
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

model
string
requis
Nom du modèle, toujours passer "flowmusic" (insensible à la casse)
clip_id
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éussie

Réponse

code
integer
Code de statut de la réponse, 200 en cas de succès
data
array
Tableau de données renvoyées

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
        }
      ]
    }
  }
}