По возможностям

Музыка

Музыка генерируется как задача: отправьте промпт, затем проверяйте статус или дождитесь обратного вызова. Начните с одного промпта.

#1. Выберите модель

suno$0.07 / запросЛимиты и статус

Доступных моделей для этой задачи: 1. При переключении код ниже меняется.

#2. Скопируйте запрос

Замените YOUR_API_KEY своим ключом и выполните запрос. Показаны параметры, которые принимает эта модель.

POSThttps://www.aisplice.store/v1/music/generationsBearer API keyАсинхронная задача

ПараметрыПоказаны только параметры, опубликованные для этой модели.

# Requires curl and jq
API_KEY="${API_KEY:-YOUR_API_KEY}"

# 1. Submit once
SUBMITTED=$(curl --fail-with-body -sS https://www.aisplice.store/v1/music/generations \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: model-docs-$(date +%s)-$$" \\
  -d '{
  "model": "Suno",
  "prompt": "An uplifting electronic track for a product launch",
  "operation": "music",
  "version": "v6",
  "custom": false,
  "instrumental": false
}')
TASK_ID=$(printf '%s' "$SUBMITTED" | jq -r '.task_id // .id // empty')
if [ -z "$TASK_ID" ]; then
  printf '%s\n' "$SUBMITTED" >&2
  exit 1
fi
echo "task_id=$TASK_ID"

# 2. Poll until terminal
while true; do
  STATUS_JSON=$(curl --fail-with-body -sS \
    "https://www.aisplice.store/v1/music/tasks/$TASK_ID" \
    -H "Authorization: Bearer $API_KEY")
  STATUS=$(printf '%s' "$STATUS_JSON" | jq -r '.status // empty' | tr '[:upper:]' '[:lower:]')
  echo "status=$STATUS"
  case "$STATUS" in
    completed|succeeded|success) break ;;
    failed|failure|cancelled|canceled)
      printf '%s\n' "$STATUS_JSON" | jq .
      exit 1
      ;;
  esac
  sleep 3
done

# 3. Fetch the final result
curl --fail-with-body -sS \
  "https://www.aisplice.store/v1/music/tasks/$TASK_ID/content" \
  -H "Authorization: Bearer $API_KEY" | jq .

Все параметры

Все поля, которые принимает эта модель, и допустимые значения.

prompt
stringнеобязательно

Инструкция с описанием желаемого результата.

Жизненный цикл ответа

Статусы задачи, конечные состояния и примеры ответов с результатом.

Отправка
{
  "id": "task_xxx",
  "task_id": "task_xxx",
  "object": "music.task",
  "model": "Suno",
  "status": "queued"
}

Ожидание

queued · submitted · in_progress · processing

Успех

completed · succeeded · success

Ошибка

failed · failure · cancelled · canceled

Все поля: /v1/music в справочнике API →

#3. Получите результат

Запрос на отправку сразу возвращает task_id. Проверяйте задачу каждые несколько секунд, пока status не станет completed, или передайте webhook_url — и мы сообщим вам, когда всё будет готово.

GET https://www.aisplice.store/v1/music/tasks/{task_id}

GET https://www.aisplice.store/v1/music/tasks/{task_id}/content

Оплата только при успехе

За неудачную или отменённую задачу средства возвращаются автоматически. Итоговая стоимость каждой задачи видна в журнале запросов.

Значения статуса и опрос →Обратный вызов вместо проверок →

#Если что-то пошло не так

  • 400 с названием поля: эта модель не принимает такой параметр; используйте значения, указанные на шаге 2.
  • Модель отклонила содержимое: переформулируйте промпт; отклонённые запросы не оплачиваются.
  • 402: баланса не хватает на этот запрос; пополните его в разделе «Кошелёк» и повторите.
  • 429: снизьте частоту и повторите через Retry-After секунд.
  • 503 model_not_found: имя модели неверное или модель недоступна; выберите модель на шаге 1.

Найти другую ошибку →

Встраивание в ваш продуктКакие параметры показать пользователям сразу, а какие оставить на потом.
Какие настройки показать пользователям в первую очередьНачните с промпта и одной настройки, влияющей на цену; остальное добавляйте, когда базовый сценарий заработает.+

Творческий замысел

Поля вроде prompt должны быть в интерфейсе: пользователь сразу понимает, на что они влияют.

Множитель стоимости

Поля вроде duration, resolution, size и count стоит добавлять, только когда ценообразование уже можно понятно объяснить.

Переключатель режима

Поля вроде image, mask или ID для продолжения меняют сам сценарий работы и должны появляться только в отдельных режимах.

Служебные параметры

Поля вроде webhook_secret нужны интеграторам, а не обычным пользователям, поэтому не выносите их в стандартный интерфейс.

  • prompt
    Когда показывать
    Всегда. Это минимально необходимые входные данные для музыки.
    Рекомендуемое значение по умолчанию
    Обязательно в интерфейсе.
    Почему это важно
    Передаёт тему, жанр и эмоциональный настрой.
  • instrumental / make_instrumental
    Когда показывать
    Показывайте, если продукт чётко разделяет треки с вокалом и инструментальные.
    Рекомендуемое значение по умолчанию
    Оставьте на сервере, если пользователи не выбирают между вокальными и инструментальными треками.
    Почему это важно
    Меняет тип результата и должен соответствовать понятному продуктовому выбору.
  • title / tags
    Когда показывать
    Показывайте только после того, как пользователи освоят генерацию по одному промпту.
    Рекомендуемое значение по умолчанию
    Необязательные расширенные поля.
    Почему это важно
    Помогают управлять стилем, но не должны мешать получить первый результат.
  • version / mv
    Когда показывать
    Показывайте, только если пользователям нужно выбирать семейство моделей или режим генерации.
    Рекомендуемое значение по умолчанию
    Закрепите на сервере одну рекомендуемую версию.
    Почему это важно
    Усложняет выбор и обычно относится к настройкам оператора.
  • continue_clip_id / continue_at
    Когда показывать
    Показывайте только в сценариях продолжения или продления.
    Рекомендуемое значение по умолчанию
    Скрывайте в обычных сценариях создания.
    Почему это важно
    Это настройки для опытных пользователей; если показать их слишком рано, новички запутаются.
recommended-rollout.txt
Phase 1
- prompt
- one size or one duration default
- submit -> poll -> content

Phase 2
- one quality or resolution selector
- clear pricing hint

Phase 3
- advanced controls such as reference media, continuation, webhook, or vendor-specific tuning

Один источник истины для результатов

Когда задача завершится, стройте приложение вокруг URL платформы, который возвращает /content. Так детали вышестоящего провайдера остаются скрытыми, а воспроизведение старых результатов — стабильным.

Проблема не решена?

Пришлите нам ID запроса или текст ошибки, и мы разберёмся.