API усиленной загрузки

Обновлено 2026-09-18 · команда Suno-API

Описание эндпоинта

Усиленная загрузка принимает локальный аудиофайл; система выполняет усиление в фоне и создаёт полноценную воспроизводимую песню. Вызов отправки сразу возвращает информацию о задаче, а клиент опрашивает эндпоинт запроса, чтобы следить за ходом.

Эндпоинт отправки: POST /api/music/enhanced-upload

Запрос одной задачи: GET /api/music/enhanced-upload/:id

Отмена задачи: POST /api/music/enhanced-upload/:id/cancel

Запрос списка: GET /api/music/enhanced-upload

Оплата: 10 ¥ за вызов, списание вперёд по фиксированной цене suno-enhanced-upload. Если задача не удалась или была отменена на разрешённом этапе, списанная сумма возвращается автоматически. Фактически списанная сумма следует текущей конфигурации цен в бэк-офисе.

Порядок вызовов

  1. Вызовите POST /api/music/enhanced-upload, чтобы загрузить аудиофайл.
  2. Сохраните полученный task_id.
  3. Вызовите GET /api/music/enhanced-upload/:id, чтобы узнать ход и результат.
  4. Когда Suno завершит финальный рендеринг, сервис с привязанным к этой задаче аккаунтом Suno вызывает эндпоинт авторизованной загрузки Studio и записывает MP3 в медиасервис CN2.
  5. Задача становится completed только после готовности актива CN2; тогда адрес аудио CDN берётся из audio_url в ответе.

/api/forbidden — это адрес-заполнитель, который может появляться в метаданных Suno Studio; это не воспроизводимый и не скачиваемый ресурс. Клиенту он не возвращается и не используется как основание для завершения. Если рендеринг закончен, но CN2 ещё готовится, эндпоинт продолжает возвращать processing и не возвращает audio_url; клиенту следует продолжать опрос и не считать пустой адрес неудачей.

Отправка усиленной загрузки

Headers

Параметр Тип Обязательно Примечания
Authorization string да Bearer YOUR_API_KEY
Content-Type string нет Для multipart-запросов не задавайте вручную; пусть клиент сформирует его сам

Параметры формы

Параметр Тип Обязательно По умолчанию Примечания
file file да - Локальный аудиофайл, максимум 80 МБ
title string нет имя файла без расширения Название песни

Пример запроса

В примере ниже используется тот же способ вызова, что и при проверке на продакшене, но API-ключ заменён заполнителем.

curl.exe --http1.1 -s -S \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@source.aac" \
  -F "title=Enhanced upload demo" \
  "https://www.suno-api.io/api/music/enhanced-upload"

Ответ

{
  "success": true,
  "message": "",
  "data": {
    "task_id": 3209,
    "song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
    "client_request_id": "cu_20260611003241723483700xnCcQg",
    "title": "Enhanced upload demo",
    "file_name": "source.aac",
    "status": "queued",
    "created_at": 1781137961,
    "pre_consumed_quota": 5000000,
    "billing_source": "wallet"
  }
}

Запрос одной задачи

Пример запроса

curl.exe --http1.1 -s -S \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://www.suno-api.io/api/music/enhanced-upload/3209"

Пример ответа во время обработки

{
  "success": true,
  "message": "",
  "data": {
    "task": {
      "task_id": 3209,
      "song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
      "client_request_id": "cu_20260611003241723483700xnCcQg",
      "title": "Enhanced upload demo",
      "file_name": "source.aac",
      "status": "processing",
      "type": "enhanced_upload",
      "progress": {
        "stage": "media_preparing",
        "percent": 98,
        "label": "正在准备播放资源",
        "updated_at": 1781138500
      },
      "pre_consumed_quota": 5000000,
      "billing_source": "wallet",
      "created_at": 1781137961,
      "updated_at": 1781138500
    }
  }
}

Пример ответа после завершения

{
  "success": true,
  "message": "",
  "data": {
    "task": {
      "task_id": 3209,
      "song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
      "client_request_id": "cu_20260611003241723483700xnCcQg",
      "title": "Enhanced upload demo",
      "file_name": "source.aac",
      "status": "completed",
      "type": "enhanced_upload",
      "audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
      "duration": 217.74,
      "progress": {
        "stage": "completed",
        "percent": 100,
        "label": "已完成",
        "updated_at": 1781138943
      },
      "pre_consumed_quota": 5000000,
      "billing_source": "wallet",
      "created_at": 1781137961,
      "updated_at": 1781138943,
      "completed_at": 1781138943
    }
  }
}

Отмена задачи

Отменить задачу можно только пока и задача, и рабочий процесс бэкенда остаются на этапе queued. После перехода в leasing, running, processing или завершения отмена невозможна.

Пример запроса

curl.exe --http1.1 -s -S -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://www.suno-api.io/api/music/enhanced-upload/3209/cancel"

Ответ

{
  "success": true,
  "message": "",
  "data": {
    "task_id": 3209,
    "song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
    "client_request_id": "cu_20260611003241723483700xnCcQg",
    "status": "cancelled"
  }
}

Если задача уже начала обрабатываться, эндпоинт вернёт:

{
  "success": false,
  "message": "强化上传已开始处理,无法取消"
}

Запрос списка задач

Эндпоинт списка возвращает только задачи усиленной загрузки пользователя, которому принадлежит текущий API-ключ; обычная генерация, каверы и продление в список не попадают.

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

Параметр Тип Обязательно По умолчанию Примечания
p number нет 1 Номер страницы
page_size number нет системное значение Элементов на странице, максимум 100

Пример запроса

curl.exe --http1.1 -s -S \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://www.suno-api.io/api/music/enhanced-upload?p=1&page_size=3"

Ответ

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 3,
    "total": 1,
    "items": [
      {
        "task_id": 3209,
        "song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
        "client_request_id": "cu_20260611003241723483700xnCcQg",
        "title": "Enhanced upload demo",
        "file_name": "source.aac",
        "status": "completed",
        "type": "enhanced_upload",
        "audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
        "duration": 217.74,
        "progress": {
          "stage": "completed",
          "percent": 100,
          "label": "已完成",
          "updated_at": 1781138943
        },
        "pre_consumed_quota": 5000000,
        "billing_source": "wallet",
        "created_at": 1781137961,
        "updated_at": 1781138943,
        "completed_at": 1781138943
      }
    ]
  }
}

Описание полей ответа

Поле Тип Примечания
task_id number ID задачи усиленной загрузки; используется в дальнейших запросах и при отмене
song_id string Во время обработки pending:enhanced-upload:*, после завершения — реальный ID песни
client_request_id string ID отслеживания запроса клиента
status string Статус задачи: queued, processing, completed, failed, cancelled и т. п.
type string Всегда enhanced_upload
audio_url string Адрес аудио после завершения
duration number Длительность аудио в секундах
progress.stage string Текущий этап обработки
progress.percent number Процент выполнения
progress.label string Текст прогресса, показываемый пользователю
pre_consumed_quota number Списано вперёд за этот вызов
billing_source string Источник списания, например wallet
error_message string Причина неудачи

Примечания

Запуск кавера после завершения усиленной загрузки

После завершения усиленной загрузки результат можно использовать как исходный клип и вызвать POST /api/music/generate-from-source, чтобы запустить кавер.

Внимание: кавер — синхронный эндпоинт, заказ принимается только при получении ответа, и по измерениям ожидание может достигать примерно 230 секунд. Установите тайм-аут клиента 300 секунд или больше и не повторяйте запрос сразу после тайм-аута. Подробнее см. «Время ожидания и настройка тайм-аута» в Обзоре нового API.

Сначала опрашивайте GET /api/music/enhanced-upload/:id, пока task.status не станет completed. Тогда:

При запуске кавера используйте тот же API-ключ, что и для усиленной загрузки, и соберите запрос по соответствию полей ниже.

Поле запроса кавера Откуда берётся значение
sourceClipId task.song_id из завершённой усиленной загрузки
sourceAudioUrl task.audio_url из завершённой усиленной загрузки
sourceTitle task.title из завершённой усиленной загрузки

Остальные параметры (текст, стиль, название, модель) заполняются по API кавера по исходному клипу. Когда эндпоинт кавера вернёт новый clips[].song_id, запросите статус генерации и итоговое аудио через POST /api/music/query.

ДалееAPI загрузки и кавера в один шаг

Получить API-ключ

Создайте API-ключ в консоли после регистрации. Одна генерация стоит 0,6 ¥ и возвращает 2 трека, загрузки не ограничены, номер телефона не нужен.

Получить API-ключ Вернуться к обзору