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-ключ Повернутися до огляду