Saltar al contenido principal
POST
/
v1
/
music
/
generations
/
lyricsFlowMusic
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations/lyricsFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "prompt": "Una canción de rock sobre la perseverancia"
  }'
import requests

url = "https://api.apimart.ai/v1/music/generations/lyricsFlowMusic"

payload = {
    "model": "flowmusic",
    "prompt": "Una canción de rock sobre la perseverancia"
}

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/lyricsFlowMusic";

const payload = {
  model: "flowmusic",
  prompt: "Una canción de rock sobre la perseverancia"
};

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_01KWXVCX91HYHSTHZ0NC1SRFW1"
    }
  ]
}
{
  "error": {
    "message": "model is required",
    "type": "invalid_request",
    "param": "",
    "code": "model_required"
  }
}
{
  "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/lyricsFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "prompt": "Una canción de rock sobre la perseverancia"
  }'
import requests

url = "https://api.apimart.ai/v1/music/generations/lyricsFlowMusic"

payload = {
    "model": "flowmusic",
    "prompt": "Una canción de rock sobre la perseverancia"
}

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/lyricsFlowMusic";

const payload = {
  model: "flowmusic",
  prompt: "Una canción de rock sobre la perseverancia"
};

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_01KWXVCX91HYHSTHZ0NC1SRFW1"
    }
  ]
}
{
  "error": {
    "message": "model is required",
    "type": "invalid_request",
    "param": "",
    "code": "model_required"
  }
}
{
  "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)
prompt
string
requerido
Prompt para generar la letra, ≤ 3000 caracteresSe recomienda describir el tema, el estilo y la emoción de la canción para obtener letras más ajustadasEjemplo: "Una canción de rock sobre la perseverancia"

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: Generar letras según un tema

{
  "model": "flowmusic",
  "prompt": "Una canción de rock sobre la perseverancia"
}

Escenario 2: Rellenar la letra para crear la canción

Primero genere la letra; al completarse, tome title y lyrics de result.lyrics[0] y rellénelos en la interfaz de generar música:
{
  "model": "flowmusic",
  "title": "Perseverancia",
  "lyrics": "[Verse 1]\nPor larga que sea la noche, amanecerá\n...",
  "sound_prompt": "energetic rock with electric guitar"
}
Consultar el resultado de la tareaLa generación de letras 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.

Ejemplo de resultado de tarea completada

Ejemplo de respuesta de consulta (GET /v1/music/tasks/{task_id}):
{
  "code": 200,
  "data": {
    "id": "task_01KWXVCX91HYHSTHZ0NC1SRFW1",
    "status": "completed",
    "progress": 100,
    "created": 1783413241,
    "completed": 1783413284,
    "actual_time": 43,
    "cost": 0.016,
    "credits_cost": 0.16,
    "result": {
      "lyrics": [
        {
          "title": "Bleached",
          "lyrics": "[Intro]\n(Check)\n(One two)\n\n[Verse 1]\nThe birds are..."
        }
      ]
    }
  }
}