Saltar al contenido 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": "Saldo insuficiente",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "La capacidad del grupo actual está saturada, inténtelo de nuevo más tarde",
    "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": "Saldo insuficiente",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "La capacidad del grupo actual está saturada, inténtelo de nuevo más tarde",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}

Autenticación

Authorization
string
requerido
Todas las interfaces requieren autenticación mediante Bearer TokenObtener la API Key:Visite la página de gestión de API Keys para obtener su API KeyAl usarla, añádala en el encabezado de la solicitud:
Authorization: Bearer YOUR_API_KEY

Parámetros de solicitud

model
string
requerido
Nombre del modelo, debe ser siempre "flowmusic" (no distingue mayúsculas de minúsculas)
clip_id
string
requerido
clip_id de la música cuyas pistas se desean separar, proveniente de result.music[].clip_id de una tarea completada con éxito

Respuesta

code
integer
Código de estado de la respuesta, 200 en caso de éxito
data
array
Array de datos devueltos

Casos de uso

Escenario 1: Separar voz y acompañamiento

{
  "model": "flowmusic",
  "clip_id": "abc123-def456"
}
Consultar el resultado de la tareaLa separación de pistas es una tarea asíncrona; tras enviarla se devuelve un task_id. Utilice la interfaz Obtener estado de la tarea para consultar el progreso y el resultado de la generación. El resultado de la separación es un archivo zip empaquetado (result.music[0].file_url, de aproximadamente 20 MB) que contiene las pistas separadas de voz / acompañamiento, etc.; basta con ofrecerlo para su descarga.

Ejemplo de resultado de tarea completada

Ejemplo de respuesta de consulta (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
        }
      ]
    }
  }
}