Skip to content

Suno API

RouteAPI предоставляет единый REST API для генерации музыки Suno AI. Генерируйте музыку из текста, продлевайте песни, клонируйте голоса, разделяйте стемы и многое другое.

Обзор рабочего процесса

Section titled “Обзор рабочего процесса”

Генерация музыки Suno является асинхронной. Типичный процесс:

  1. Отправить задачу на /suno/audios → получить task_id
  2. Подождать 2-3 секунды перед началом опроса
  3. Опрашивать каждые 3-5 секунд через /suno/tasks с action: "retrieve"
  4. Когда status становится success → получить audio_url
СтатусЗначениеСледующий шаг
submittedОтправлено, ожиданиеПродолжить опрос
queuedВ очередиПродолжить опрос
in_progressГенерацияПродолжить опрос
success✅ ЗавершеноВзять audio_url из первого элемента массива data
failure❌ ОшибкаПроверить поле error
Terminal window
curl -X POST "https://api.routeapi.ai/suno/audios" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chirp-v5-5",
"prompt": "A cheerful summer pop song with piano and guitar",
"async": true
}'

Шаг 2: Опросить результат

Section titled “Шаг 2: Опросить результат”
Terminal window
curl -X POST "https://api.routeapi.ai/suno/tasks" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "action": "retrieve", "id": "task_xxxxx" }'
{
"id": "task_xxxxx",
"task_id": "task_xxxxx",
"status": "success",
"data": [
{
"id": "audio_1",
"audio_url": "https://cdn.suno.ai/xxx.mp3",
"duration": 183.5
}
]
}
ID моделиМакс. длинаЛимит lyricЛимит style
chirp-v5-58 минут5000 символов1000 символов
chirp-v58 минут5000 символов1000 символов
chirp-v4150 секунд3000 символов200 символов

Основная конечная точка аудиоопераций: поле action выбирает операцию, а тело запроса содержит поля, необходимые этой операции.

ПолеТипПо умолчаниюОписание
modelstringchirp-v4Модель генерации, рекомендуется chirp-v5-5
actionstringgenerateТип операции
asyncboolean—Настоятельно рекомендуется true. Только явный false включает синхронную ветку; если поле не указано, оно не передаётся и применяется значение upstream по умолчанию
ActionОписаниеОбязательные поля
generateСоздать новую музыку из промптаprompt
extendПродлить существующее аудиоaudio_id + continue_at
coverПереосмыслить существующую песнюaudio_id
stemsРазделить на вокал + инструменталaudio_id
remasterРемастеринг аудио для улучшения качестваaudio_id

Для полного списка типов действий см. документацию на английском или китайском языке.

Запрос статуса и результатов задачи.

Terminal window
curl -X POST "https://api.routeapi.ai/suno/tasks" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "action": "retrieve", "id": "task_xxxxx" }'
Конечная точкаМетодОписание
/suno/lyricsPOSTГенерация текста песни
/suno/uploadPOSTЗагрузка внешнего аудио файла
/suno/personaGET/POSTУправление голосовыми персонами
/suno/wavPOSTЭкспорт в формат WAV

Для полной справки API см. документацию на английском или китайском языке.

Ошибки, возникающие после того как запрос дошёл до обработчика задач, используют тело задачи:

{ "code": "invalid_request", "message": "prompt_empty (request id: ...)", "data": null }

Сбои аутентификации и маршрутизации происходят до этого обработчика и сохраняют тело в стиле OpenAI {"error": {"message": "...", "type": "...", "code": "..."}}. См. Частые ошибки.

СтатусКодПричина
400invalid_requestДля эндпоинта или действия не хватает обязательного поля; message называет его (например, prompt_empty для /suno/lyrics или audio_id_vocal_start_vocal_end_required для /suno/vox)
400task_not_existaction: "retrieve" с id, который не принадлежит вашим задачам
401—API-ключ отсутствует, недействителен или истёк (тело в стиле OpenAI)
403insufficient_user_quotaБаланса аккаунта или квоты ключа не хватает на резервирование
429—Вышестоящий канал сообщил о лимите или перегрузке; RouteAPI заменяет исходный текст провайдера
502acedata_suno_request_failedUpstream принял вызов, но отклонил его: модерация контента, неизвестный audio_id, неподдерживаемое действие. В message — объяснение upstream
502upstream_task_id_missingUpstream вернул 2xx без ID задачи, поэтому опрос невозможен; зарезервированная сумма возвращается
503get_channel_failedКанал, обслуживающий задачу, признан жёстко неисправным (например, upstream-аккаунт непригоден); RouteAPI заменяет исходный текст провайдера. (Модель без единого канала отклоняется до обработчика задачи с 503 model_not_found и телом в стиле OpenAI)
4xx / 5xxfail_to_fetch_taskUpstream вернул статус вне 2xx; статус и тело передаются как есть, резерв возвращается

Неудачная задача (опрос возвращает failure) также возвращает зарезервированную сумму; причина — в полях error и message записи задачи.

Часто задаваемые вопросы

Section titled “Часто задаваемые вопросы”

Q: Какую модель использовать?
Используйте chirp-v5-5 (новейшая и самая мощная).

Q: Сколько времени занимает генерация?
generate обычно занимает 15-40 секунд.

Q: Можно ли использовать audio_url напрямую?
Да, CDN ссылка готова для воспроизведения или загрузки.