Каталог Resonance
Всё, что выпущено в Resonance: треки, артисты, альбомы, жанры, участники, прослушивания. На этом строятся чарты, боты-рекомендатели, страницы статистики и карточки «сейчас играет». Без ключа, аккаунта и регистрации.
text
Базовый адрес https://resonance-api.aperturesyndicate.com/api/v1/catalogЭндпоинты
| Метод | Эндпоинт | |
|---|---|---|
GET | /tracks | Опубликованные треки, самые слушаемые первыми. ?q= ищет, ?genre= фильтрует |
GET | /tracks/:id | Один трек со всеми участниками |
GET | /artists | Артисты, по месячным слушателям. ?q= ищет |
GET | /artists/:slug | Артист с альбомами, главными треками и участием в чужих треках |
GET | /artists/:slug/tracks/:trackSlug | Трек по публичному адресу, вместе с альбомом |
GET | /albums | Опубликованные альбомы, новые первыми |
GET | /albums/:id | Альбом с треками и артистом |
GET | /taxonomy | Жанры по категориям, настроения, языки |
GET | /version | Дешёвая сигнатура, которая меняется при каждой публикации |
Списки принимают limit (1–100, по умолчанию 50) и offset и возвращают общий count.
Каталог отдаёт только метаданные. Звук, тексты песен и ссылки на скачивание в публичное API не входят — чтобы послушать, ведите человека на трек в Resonance.
Пример
bash
curl "https://resonance-api.aperturesyndicate.com/api/v1/catalog/tracks?limit=1"json
{
"tracks": [{
"id": "f021f894-97cb-471e-b2f5-2b312e418e4a",
"title": "Нежные порезы",
"slug": "nezhnye-porezy",
"artistSlug": "lar4ick",
"durationMs": 102896,
"coverUrl": "https://media.aperturesyndicate.com/…/cover-v2.jpg",
"coverThumb": "https://media.aperturesyndicate.com/…/cover-v2.jpg.thumb.webp",
"genres": ["hip-hop", "rap", "boom bap"],
"language": ["ru"],
"bpm": 92,
"playCount": 190,
"explicit": false,
"artists": [
{ "slug": "lar4ick", "name": "Lar4ick", "role": "primary" },
{ "slug": "kinechu", "name": "kinechu", "role": "producer" }
],
"waveform": [89, 81, 56, "…"]
}],
"count": 11142
}Публичная страница трека — https://resonance.aperturesyndicate.com/artist/<artistSlug>/<slug>, артиста — https://resonance.aperturesyndicate.com/artist/<artistSlug>. Их и ставьте ссылкой на источник.
Поля трека
| Поле | |
|---|---|
id, slug, title | Идентичность; slug уникален в пределах артиста |
artistId, artistSlug, albumId | Владелец и альбом (у сингла albumId может быть null) |
artists | Все участники: role — primary, featured, producer и так далее |
durationMs, bpm | Длина и темп |
coverUrl, coverThumb | Обложка и маленькое превью в webp |
genres, moods, language | Метки из /taxonomy |
playCount | Всего прослушиваний |
explicit | Ненормативный текст |
releaseDate, label, isrc, copyright | Данные релиза, если артист их указал |
waveform | 72 значения громкости 0–100 для рисования волны |
externalSource, externalUrl | Заполнены у треков из открытого каталога, который мы зеркалим, — укажите и дайте ссылку на оригинал |
videoUrl, videoDurationMs | Короткое видео, если оно есть у трека |
Ограничения
- 300 запросов в минуту с IP на весь каталог. Страницы кэшируются примерно на минуту, поэтому опрашивать чаще бессмысленно — смотрите
/version. - Запросы из браузера блокирует CORS. Обращайтесь к каталогу со своего сервера и кэшируйте ответ.
- Неправильный id отвечает
400, отсутствующий трек или артист —404с{"error":"not_found","code":"NOT_FOUND"}.