Перейти к основному содержанию
POST
/
v1
/
music
/
generations
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "title": "My Song",
    "sound_prompt": "upbeat pop music with piano",
    "bpm": "120",
    "length": 60
  }'
import requests

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

payload = {
    "model": "flowmusic",
    "title": "My Song",
    "sound_prompt": "upbeat pop music with piano",
    "bpm": "120",
    "length": 60
}

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

const payload = {
  model: "flowmusic",
  title: "My Song",
  sound_prompt: "upbeat pop music with piano",
  bpm: "120",
  length: 60
};

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_01K8AYYM6R03TGZ3Q2P0TZVNPX"
    }
  ]
}
{
  "error": {
    "message": "sound_prompt and lyrics cannot both be empty",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Недостаточно средств на балансе",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "Текущая группа перегружена, повторите попытку позже",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "title": "My Song",
    "sound_prompt": "upbeat pop music with piano",
    "bpm": "120",
    "length": 60
  }'
import requests

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

payload = {
    "model": "flowmusic",
    "title": "My Song",
    "sound_prompt": "upbeat pop music with piano",
    "bpm": "120",
    "length": 60
}

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

const payload = {
  model: "flowmusic",
  title: "My Song",
  sound_prompt: "upbeat pop music with piano",
  bpm: "120",
  length: 60
};

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_01K8AYYM6R03TGZ3Q2P0TZVNPX"
    }
  ]
}
{
  "error": {
    "message": "sound_prompt and lyrics cannot both be empty",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Недостаточно средств на балансе",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "Текущая группа перегружена, повторите попытку позже",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}

Аутентификация

Authorization
string
обязательно
Все эндпоинты требуют аутентификации с помощью Bearer TokenПолучение API Key:Посетите страницу управления API Key, чтобы получить ваш API KeyДобавьте его в заголовок запроса:
Authorization: Bearer YOUR_API_KEY

Параметры запроса

model
string
обязательно
Название модели, всегда передавайте "flowmusic" (без учёта регистра)
sound_prompt
string
Промпт с описанием музыкального стиля или звучанияПример: "upbeat pop music with piano"
sound_prompt и lyrics не могут быть пустыми одновременно (передайте хотя бы один). За один запрос генерируется только одна композиция.
lyrics
string
Текст песни; его можно предварительно получить через эндпоинт Генерация текста песни и подставить сюдаПример: "[Verse 1]\nКакой бы долгой ни была ночь, рассвет наступит\n..."
title
string
Название генерируемой композиции
bpm
string
BPM (ударов в минуту), должно быть ≥ 1Пример: "120"
length
integer
Длительность генерации (в секундах)Допустимый диапазон: от 1 до 240 секунд
seed
string
Случайное зерно (seed) для воспроизведения результата
Передача одинакового значения seed при одинаковом запросе даёт похожий результат, но полная идентичность не гарантируется.

Ответ

code
integer
Код статуса ответа, 200 при успехе
data
array
Массив возвращаемых данных

Сценарии использования

Сценарий 1: генерация только по стилевому промпту

{
  "model": "flowmusic",
  "title": "My Song",
  "sound_prompt": "upbeat pop music with piano",
  "bpm": "120",
  "length": 60
}

Сценарий 2: композиция из текста песни + стиля

{
  "model": "flowmusic",
  "title": "Настойчивость",
  "lyrics": "[Verse 1]\nКакой бы долгой ни была ночь, рассвет наступит\n...",
  "sound_prompt": "energetic rock with electric guitar",
  "length": 120
}
Запрос результата задачиГенерация музыки — асинхронная задача; после отправки возвращается task_id. Используйте эндпоинт Получение статуса задачи для запроса прогресса и результата генерации.

Пример результата выполненной задачи

Пример ответа на запрос (GET /v1/music/tasks/{task_id}):
{
  "code": 200,
  "data": {
    "id": "task_01KWXVB61E28THHFBSYXWA4FAJ",
    "status": "completed",
    "progress": 100,
    "created": 1783413184,
    "completed": 1783413236,
    "actual_time": 52,
    "cost": 0.048,
    "credits_cost": 0.48,
    "result": {
      "music": [
        {
          "clip_id": "a41aade4-993e-4d28-b56f-d97e7ef7167c",
          "title": "Regression Song",
          "duration_seconds": "181.70666667",
          "create_time": "2026-07-07T08:33:32.854073Z",
          "lyrics": "[Verse 1]\nWaking up to the morning light,\n...",
          "lyrics_id": "c302d603-81b6-552f-8122-e512928d6aa1",
          "lyrics_timing_markers": [[10, 12], [212, 36]],
          "audio_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.m4a",
          "wav_url": "https://cdn.apimart.ai/audio/flowmusic_a41aade4.wav",
          "image_url": "https://cdn.apimart.ai/image/flowmusic_a41aade4_cover.jpg"
        }
      ]
    }
  }
}