По возможностям
Музыка
Музыка генерируется как задача: отправьте промпт, затем проверяйте статус или дождитесь обратного вызова. Начните с одного промпта.
#1. Выберите модель
suno$0.07 / запросЛимиты и статус
Доступных моделей для этой задачи: 1. При переключении код ниже меняется.
#2. Скопируйте запрос
Замените YOUR_API_KEY своим ключом и выполните запрос. Показаны параметры, которые принимает эта модель.
https://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Инструкция с описанием желаемого результата.
Жизненный цикл ответа
Статусы задачи, конечные состояния и примеры ответов с результатом.
Жизненный цикл ответа
Статусы задачи, конечные состояния и примеры ответов с результатом.
{
"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
#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- Когда показывать
- Показывайте только в сценариях продолжения или продления.
- Рекомендуемое значение по умолчанию
- Скрывайте в обычных сценариях создания.
- Почему это важно
- Это настройки для опытных пользователей; если показать их слишком рано, новички запутаются.
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Один источник истины для результатов
Проблема не решена?
Пришлите нам ID запроса или текст ошибки, и мы разберёмся.