API загрузки Free2
Описание эндпоинта
Free2 — это отдельный платный канал загрузки: он разбирает файлы MP3/WAV/текста/метаданных по идентификатору песни (или ссылке на песню suno.com) и возвращает размещённые на платформе адреса загрузки. Он принимает только ключ API — сессию браузера не принимает — и в ответе никогда не содержится зашифрованный источник воспроизведения Suno.
Эндпоинт: POST /api/music/free2
Оплата: списывается за успешно разобранную песню, сейчас по умолчанию 0,2 юаня за песню. Выбор нескольких типов файлов в одном запросе не увеличивает цену; за песни, которые не удалось разобрать, плата не взимается. Не более 10 песен за запрос (после удаления дублей); фактически списанная сумма определяется конфигурацией цен в бэк-офисе.
Рекомендуемая модель: suno-v6. Доступны suno-v6, suno-v6-wild и suno-v6-mini.
Аутентификация
| Параметр | Тип | Обязательно | Примечания |
|---|---|---|---|
| Authorization | string | да | Bearer YOUR_API_KEY |
| Content-Type | string | да | application/json |
Параметры запроса
| Параметр | Тип | Обязательно | По умолчанию | Примечания |
|---|---|---|---|---|
| song_id | string | нет | - | Один идентификатор песни; также подойдёт ссылка на песню suno.com (включая короткую ссылку /s/) |
| song_ids | string[] | нет | - | Форма для нескольких песен (рекомендуется); не более 10 за запрос |
| songs | string[] | нет | - | Псевдоним song_ids |
| files | string[] | да | - | Нужные типы файлов: mp3, wav, lyrics, metadata; m4a не поддерживается |
Укажите хотя бы одно из song_id и song_ids; укажите хотя бы один элемент в files.
Пример запроса
curl -X POST https://www.suno-api.io/api/music/free2 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_ids": ["song_id_1", "song_id_2"],
"files": ["mp3", "wav", "lyrics"]
}'
Ответ
{
"code": 200,
"message": "success",
"data": {
"songs": [
{
"song_id": "song_id_1",
"files": [
{"type": "mp3", "url": "https://media.suno-api.io/assets/song_id_1-free2-v1-mp3.mp3"}
]
},
{
"song_id": "song_id_2",
"files": [],
"error": {"code": "song_not_found", "message": "song not found or not owned by the current user"}
}
],
"requested_songs": 2,
"succeeded_songs": 1,
"price": 0.2
}
}
| Поле | Тип | Примечания |
|---|---|---|
| songs | array | Результат по каждой песне: song_id, files[], при ошибке — error |
| requested_songs | number | Количество песен после нормализации и удаления дублей |
| succeeded_songs | number | Количество успешных; по этому числу считается оплата |
| price | number | Фактически списанная сумма за этот вызов (юани) |
Если запрошена одна песня, в ответе дополнительно возвращаются song_id и files верхнего уровня — для совместимости со старой формой одиночной песни.
Повторное использование кэшированных адресов (без оплаты)
Для песни, которую вы уже скачивали, повторная загрузка не требует нового разбора и не тарифицируется снова: используйте POST /api/music/free2/cached, чтобы получить текущие адреса тех файлов, которые этот аккаунт скачивал ранее.
Эндпоинт: POST /api/music/free2/cached
Оплата: Бесплатно. Это кэш только для чтения: без разбора, без перекодирования, без списаний; возвращаются только уже подготовленные и не изъятые адреса.
⚠️ Срок действия адреса загрузки: 7 дней — сохраните вовремя.
songs[].files[].urlпредоставляется объектным хранилищем платформы и по умолчанию истекает через 7 дней (файлы изымаются, старый адрес возвращает 404); сохраните их в собственное хранилище в эти 7 дней. После истечения вызовитеPOST /api/music/free2заново, чтобы подготовить файлы и получить рабочий адрес (эта повторная подготовка тарифицируется по обычным правилам;/api/music/free2/cachedвозвращает только ещё действующие кэш-адреса).
Параметры запроса: полностью совпадают с POST /api/music/free2 (любое из song_id / song_ids / songs и хотя бы один элемент в files).
curl -X POST https://www.suno-api.io/api/music/free2/cached \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "song_ids": ["98ca3f1d-…", "a185b3d9-…"], "files": ["mp3"] }'
{
"success": true,
"data": {
"items": [
{ "song_id": "98ca3f1d-…", "type": "mp3", "url": "https://…/assets/98ca3f1d-…-free2-v1-mp3.mp3" }
],
"songs": [
{ "song_id": "98ca3f1d-…", "files": [ { "type": "mp3", "url": "https://…" } ], "missing_files": [] },
{ "song_id": "a185b3d9-…", "files": [], "missing_files": ["mp3"] }
],
"missing": ["a185b3d9-…"]
}
}
| Поле | Тип | Примечания |
|---|---|---|
| items | array | Список готовых к скачиванию адресов (song_id + type + url) |
| songs | array | Результаты по песням; missing_files — форматы, которых на этот раз не было в кэше |
| missing | string[] | Для этой песни нет ни одного пригодного кэша (нужно снова разобрать через POST /api/music/free2, этот шаг тарифицируется за песню) |
Адреса возвращаются только для песен, которые вы скачивали ранее; песни без записи о загрузке или с уже изъятыми ресурсами попадают только в missing, и адрес для них не возвращается.
Примечания
POST /api/music/free2может разобрать любую публичную песню на Suno (включая песни, которых нет на этой платформе); если песню разобрать не удалось,errorвозвращается только для неё и не влияет на остальные песни того же пакета. АPOST /api/music/free2/cachedвозвращает адреса только для песен, скачанных этим аккаунтом.- Первый разбор песни создаёт размещённые файлы, которые затем переиспользуются; не передавайте повторяющиеся типы в
files, сервер удаляет дубли автоматически. - Отличие от API скачивания и прослушивания медиа песен: Free2 платный, принимает ссылки suno.com напрямую и, помимо текста, не предоставляет такие типы, как таймлайн/MIDI.
Получить API-ключ
Создайте API-ключ в консоли после регистрации. Одна генерация стоит 0,6 ¥ и возвращает 2 трека, загрузки не ограничены, номер телефона не нужен.
Получить API-ключ Вернуться к обзору