SportAPI Документация
RU
S Документация продуктаSport Line API
v1
Услуга и цены ↗ Получить доступ ↗

Sport Line API — примеры запросов cURL

Перед началом

Во всех примерах замените:

ЗначениеЧем заменить
https://YOUR_API_DOMAINБазовым URL, полученным от менеджера SportAPI
YOUR_API_KEYПерсональным ключом Sport Line API
SPORT_ID_FROM_MENUАктуальным ID вида спорта из menu или sports
COUNTRY_ID_FROM_MENUАктуальным ID страны из menu или countries
TOURNAMENT_ID_FROM_MENUАктуальным ID турнира из menu или tournaments
SPORT_ID_FROM_SPORTSАктуальным ID вида спорта из ответа sports
COUNTRY_ID_FROM_COUNTRIESАктуальным ID страны из ответа countries
TOURNAMENT_ID_FROM_TOURNAMENTSАктуальным ID турнира из ответа tournaments
GAME_ID_FROM_EVENTSАктуальным game_id матча из events
SUBGAME_ID_FROM_EVENTID субматча из event.body.sub_games

API-ключ передаётся только в HTTP-заголовке Package:

Package: YOUR_API_KEY

Не добавляйте ключ в URL и не сохраняйте рабочий ключ в публичном репозитории, документации или сообщениях об ошибках.

Минимальный Live-запрос

Получение актуального Live-меню:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/ru' \
  --header 'Package: YOUR_API_KEY' \
  --header 'Accept: application/json'

Заголовок Package обязателен. Accept: application/json можно не передавать, но он явно показывает ожидаемый формат ответа.

Рекомендуемая последовательность интеграции

Обычная последовательность состоит из трёх запросов:

menu
  ↓ актуальные sportId и tournamentId
events
  ↓ актуальный game_id
event

Не заменяйте эту последовательность статически записанными ID. API возвращает только те виды спорта и турниры, в которых сейчас есть матчи выбранного типа live или line.

Шаг 1. Получите актуальное меню

Live:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/ru' \
  --header 'Package: YOUR_API_KEY'

Prematch:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/line/ru' \
  --header 'Package: YOUR_API_KEY'

В ответе выберите вид спорта и турнир, которые присутствуют в текущей иерархии:

body[].id                         → sportId
body[].sub[].id                   → countryId
body[].sub[].sub[].id             → tournamentId

Подробное описание: menu.

Шаг 2. Получите список матчей

Все матчи всех доступных турниров выбранного Live-вида спорта:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/SPORT_ID_FROM_MENU/0/sub/50/live/ru' \
  --header 'Package: YOUR_API_KEY'

Значение tournamentId=0 означает все доступные турниры выбранного спорта. При этом SPORT_ID_FROM_MENU всё равно нужно взять из актуального ответа menu.

Только один выбранный Live-турнир:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/SPORT_ID_FROM_MENU/TOURNAMENT_ID_FROM_MENU/sub/50/live/ru' \
  --header 'Package: YOUR_API_KEY'

Все Prematch-матчи выбранного спорта:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/SPORT_ID_FROM_MENU/0/sub/50/line/ru' \
  --header 'Package: YOUR_API_KEY'

Для events используются только:

  • формат sub;
  • техническое значение count=50.

Ограничение количества матчей через count отменено: API возвращает всю доступную выборку.

Подробное описание: events.

Шаг 3. Получите конкретный матч

Возьмите game_id из актуального ответа events.

Live-матч:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/event/GAME_ID_FROM_EVENTS/group/live/ru' \
  --header 'Package: YOUR_API_KEY'

Prematch-матч:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/event/GAME_ID_FROM_EVENTS/group/line/ru' \
  --header 'Package: YOUR_API_KEY'

Для метода event используется только формат group. Он возвращает полный доступный список групп ставок и коэффициентов выбранного матча.

Используйте тот же тип линии, из которого был получен game_id. Prematch-ID нельзя запрашивать как Live-ID.

Подробное описание: event.

Запрос субматча

Сначала запросите основной матч через event и найдите нужный элемент в body.sub_games:

{
  "game_id": 746147010,
  "game_name": "Угловые"
}

Затем выполните отдельный запрос по game_id субматча:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/event/SUBGAME_ID_FROM_EVENT/group/live/ru' \
  --header 'Package: YOUR_API_KEY'

Коэффициенты ответа будут относиться только к выбранному субматчу. Например, запрос «Угловые, 1-й тайм» вернёт коэффициенты только на угловые первого тайма.

Подробное описание: «Дополнительные матчи и субматчи».

Пошаговая навигация без menu

Обычно удобнее использовать menu: он возвращает виды спорта, страны и турниры одним запросом. Если интерфейсу нужна пошаговая загрузка, соблюдайте последовательность ниже.

1. Виды спорта

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/sports/live/ru' \
  --header 'Package: YOUR_API_KEY'

2. Страны выбранного спорта

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/countries/SPORT_ID_FROM_SPORTS/live/ru' \
  --header 'Package: YOUR_API_KEY'

3. Турниры выбранной страны

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/tournaments/SPORT_ID_FROM_SPORTS/COUNTRY_ID_FROM_COUNTRIES/live/ru' \
  --header 'Package: YOUR_API_KEY'

4. Матчи выбранного турнира

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/SPORT_ID_FROM_SPORTS/TOURNAMENT_ID_FROM_TOURNAMENTS/sub/50/live/ru' \
  --header 'Package: YOUR_API_KEY'

Каждый ID берите из непосредственно предыдущего актуального ответа. Не пропускайте уровни цепочки и не подставляйте сохранённые статические значения.

Подробные документы:

Киберспортивные данные

В поддерживающих параметр методах передайте cybersport=true.

Киберспортивное Live-меню:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/ru?cybersport=true' \
  --header 'Package: YOUR_API_KEY'

Киберспортивные Live-матчи:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/events/SPORT_ID_FROM_MENU/0/sub/50/live/ru?cybersport=true' \
  --header 'Package: YOUR_API_KEY'

Используйте ID из киберспортивного меню, полученного с тем же параметром cybersport=true.

Топ-матчи

Все виды спорта

Сокращённые Live-карточки:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/topmatches/live/ru' \
  --header 'Package: YOUR_API_KEY'

Расширенные Live-карточки с кратким списком коэффициентов:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/topmatches/live/ru?full=true' \
  --header 'Package: YOUR_API_KEY'

Для Prematch замените live на line.

Параметр full=true расширяет объект матча, но не возвращает полный список всех коэффициентов. Для полного списка запросите event.

Подробное описание: topmatches.

Один вид спорта

toplist работает только с Prematch и не содержит параметр type:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/toplist/SPORT_ID_FROM_MENU/ru' \
  --header 'Package: YOUR_API_KEY'

Здесь SPORT_ID_FROM_MENU нужно взять из актуального Prematch-меню menu/line, а не из Live-меню.

Расширенные карточки:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/toplist/SPORT_ID_FROM_MENU/ru?full=true' \
  --header 'Package: YOUR_API_KEY'

Подробное описание: toplist.

Поиск матчей

Поисковый текст является частью URL и должен быть закодирован.

Поиск Перт среди Live-матчей:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/search/live/ru/%D0%9F%D0%B5%D1%80%D1%82' \
  --header 'Package: YOUR_API_KEY'

Поиск Манчестер среди Prematch-матчей:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/search/line/ru/%D0%9C%D0%B0%D0%BD%D1%87%D0%B5%D1%81%D1%82%D0%B5%D1%80' \
  --header 'Package: YOUR_API_KEY'

Live и Prematch ищутся отдельными запросами.

Подробное описание: search.

Английский язык

Чтобы получить английские названия, замените последний сегмент ru на en:

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/en' \
  --header 'Package: YOUR_API_KEY'

Запрашиваемый язык должен входить в тариф API-ключа.

Просмотр форматированного JSON

Если установлена утилита jq, ответ можно сразу отформатировать:

curl --silent --show-error \
  --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/ru' \
  --header 'Package: YOUR_API_KEY' \
  | jq .

jq не является частью Sport Line API и устанавливается отдельно.

Сохранение ответа в файл

curl --request GET \
  --url 'https://YOUR_API_DOMAIN/v1/menu/live/ru' \
  --header 'Package: YOUR_API_KEY' \
  --output 'sportapi-menu-live.json'

Не сохраняйте API-ключ внутри JSON-файла или рядом с ответом в публичном каталоге.

Проверка формата ответа

Успешный ответ:

{
  "status": 1,
  "page": "/v1/menu",
  "body": []
}

Ошибка API:

{
  "error_code": 100,
  "error_message": "Invalid Package"
}

Служебное сообщение метода event:

{
  "status": 1,
  "page": "/v1/event",
  "body": {
    "message": "Game id finished"
  }
}

При проверке ответа:

  1. Сначала проверьте error_code и error_message.
  2. Затем проверьте body.message.
  3. Пустой массив body обрабатывайте как отсутствие данных, а не как системную ошибку.
  4. Только после этого разбирайте данные конкретного метода.

Подробнее:

Полные проверочные ответы

Сохранённые реальные ответы без сокращений находятся в папке «Полные JSON-ответы».

Файлы не содержат API-ключ.

Что не делает этот документ

Примеры показывают отдельные HTTP-запросы. Они не реализуют:

  • SDK или библиотеку SportAPI;
  • автоматическое обновление данных;
  • хранение состояния приложения;
  • полноценный пользовательский интерфейс;
  • автоматические повторные запросы;
  • систему приёма и расчёта ставок.

Эти задачи зависят от архитектуры проекта клиента и будут рассматриваться отдельно.

Связанные документы