API скачивания и прослушивания медиа песен

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

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

Эта группа эндпоинтов разделяет «получить адрес медиа» и «реально скачать файл»:

Оплата: всё бесплатно. Скачивание и прослушивание только читают уже размещённые на платформе медиа, не обращаются к Suno и не тарифицируются.

Рекомендуемая модель: suno-v6. Доступны suno-v6, suno-v6-wild и suno-v6-mini.

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

Параметр Тип Обязательно Примечания
Authorization string да Bearer YOUR_API_KEY (GET /api/music/download принимает и сессию входа)
Content-Type string да application/json

Поддерживаемые типы медиа (kind)

kind Примечания
song Аудио (mp3 — его псевдоним и значение по умолчанию; в ответе всегда возвращается song)
wav WAV-файл; сначала подготовьте его через API генерации/получения WAV
video Видео (mp4 — псевдоним)
midi MIDI по дорожкам; действует только для дорожек с завершённым разделением — см. API получения MIDI
cover Обложка (image — псевдоним)
lyrics Текст песни (.txt); доступен только через download-file / GET /api/music/download — download-url не возвращает адрес текста
timestamped_lyrics Файл текста с таймкодами (.lrc, псевдоним lrc). Сейчас поддерживаются только некоторые песни; если вернулось success:false, получите таймлайн через API текста с таймкодами и соберите файл сами

1) Получение адреса медиа

curl -X POST https://www.suno-api.io/api/music/download-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}'
{
  "code": 200,
  "message": "success",
  "data": {
    "song_id": "song_id",
    "kind": "song",
    "url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
    "nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
  }
}
Параметр Тип Обязательно Примечания
song_id string да ID вашей собственной песни
kind string нет См. таблицу выше; по умолчанию song
refresh boolean нет true принудительно готовит ресурс заново (например, после того как файл в CDN был изъят)

url предназначен для воспроизведения или самостоятельного копирования; nav_url несёт Content-Disposition: attachment и подходит для вставки прямо в адресную строку браузера для скачивания (когда мобильные браузеры не поддерживают скачивание через blob).

⚠️ Срок действия адреса: 7 дней — сохраните файл вовремя

url / nav_url указывают на объектное хранилище платформы и по умолчанию истекают через 7 дней (файлы изымаются, старый адрес возвращает 404). Скопируйте их в собственное хранилище в течение этих 7 дней.

После истечения не нужно заново генерировать песню: повторно вызовите POST /api/music/download-url (или передайте refresh: true), чтобы получить новые действующие адреса этой песни. Сама эта группа эндпоинтов бесплатна и не добавляет списаний.

2) Прямое скачивание одного файла

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}' \
  -o song.mp3

Тело ответа — поток файла (не JSON), а Content-Disposition уже содержит имя файла. Текст песни и текст с таймкодами можно получить только этим эндпоинтом (download-url возвращает лишь адреса медиа, но не текст). Файл .lrc сейчас поддерживается лишь для части песен; если вернулось success:false, соберите .lrc сами через API текста с таймкодами так, как показано в следующем разделе, и не повторяйте запрос.

Как получить текст с таймкодами (.lrc)

Рекомендуются два шага, они подходят для любой песни:

Шаг 1: получить таймлайн по словам (бесплатно)

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "suno-v6", "song_id": "song_id"}'

Ответ — сразу массив (без обёртки data); каждый элемент выглядит так: {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}. word уже содержит переводы строк, поэтому его можно разбить по строкам; значения полей, отсеивание инструментальных фрагментов и прочие оговорки см. в разделах «Поля» и «Замечания по использованию» API текста с таймкодами.

Шаг 2: собрать .lrc самим из start_s (формат времени [mm:ss.cc])

def to_lrc(segments):
    lines = []
    for seg in segments:
        text = seg["word"].strip()
        if not text:
            continue
        start = max(0.0, float(seg["start_s"]))
        cs = int(start * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

GET /api/music/download?song_id=<id>&kind=lrc тоже скачивает созданный сервером .lrc напрямую, но сейчас поддерживается лишь часть песен: если вернулось success:false, соберите файл сами способом выше — повторять запрос не нужно, на тарификацию это не влияет.

3) Пакетная загрузка

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}' \
  -o songs.zip

Используйте либо song_id (одна песня), либо song_ids (пакет, до 50 записей). Тело ответа — ZIP-поток.

4) Стабильный адрес загрузки

GET /api/music/download?song_id=<id>&kind=<kind> — точка входа для скачивания, которая прямо выдаётся в ответах по песне. Она принимает и API-ключ, и сессию входа, ведёт себя как download-file и подходит для жёсткой привязки в клиенте или стороннем плеере.

5) Прослушивание во время генерации

curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
  "code": 200,
  "message": "success",
  "data": {
    "items": [
      {
        "song_id": "song_id_1",
        "url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
        "expires_at": 0,
        "content_type": "audio/mpeg",
        "playable_until_completed": false,
        "mode": "mp3",
        "ranges": true
      }
    ]
  }
}
Параметр Тип Обязательно Примечания
song_id string нет ID одной песни
song_ids string[] нет Пакет, до 24 записей (предел числа дорожек в одном автоматическом разделении)

playable_until_completed равное true означает, что это временный адрес прослушивания для ещё генерирующейся песни; после завершения песни перейдите на постоянный адрес. Если одна песня не удалась, у этого элемента будет поле error, а остальные песни вернутся как обычно.

Примечания

ДалееAPI загрузки Free2

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

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

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