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

Метод event — конкретный матч

Для чего нужен метод

Метод event возвращает подробные данные одного матча по его game_id.

В отличие от events, где для каждого матча предоставляется краткий список основных групп и лучших коэффициентов, event возвращает полный доступный список групп и исходов выбранного матча.

Метод также используется, чтобы:

  • открыть страницу конкретного матча;
  • регулярно обновлять открытый Live-матч;
  • получить основные текущие показатели Live-матча из stat_list;
  • получить список субматчей;
  • запросить полный список коэффициентов выбранного субматча;
  • проверить доступность видеотрансляции и Live 3D Tracker.

Полное описание каждого JSON-поля находится в «Едином справочнике полей Sport Line API».

Запрос

GET https://YOUR_API_DOMAIN/v1/event/{gameId}/group/{type}/{lang}

API-ключ необходимо передавать в HTTP-заголовке:

Package: YOUR_API_KEY

Параметры пути

ПараметрТипОбязательныйОписание
gameIdnumberдаID матча или субматча, полученный из events или sub_games
groupstringдаЕдинственный формат метода event. Группирует коэффициенты по группам и вложенным колонкам исходов
typestringдаТип спортивной линии: live или line
langstringдаЯзык названий. Язык должен поддерживаться API и входить в тариф клиента

Для метода event используется только формат group.

Почему используется group

Формат group рекомендуется для конкретного матча, потому что API уже подготавливает коэффициенты для отображения:

  • разделяет исходы по группам ставок;
  • формирует колонки внутри каждой группы;
  • передаёт рекомендуемое количество колонок в поле columns;
  • сортирует исходы по их значениям.

Разработчику не нужно самостоятельно группировать исходы, восстанавливать колонки или повторно сортировать значения. Рекомендуется сохранять порядок групп, колонок и исходов, полученный от API.

ID нужно запрашивать в том типе линии, из которого он был получен:

  • для Live-матча используйте live;
  • для Prematch-матча используйте line.

Prematch- и Live-версии одного матча имеют разные game_id. Нельзя взять Prematch-ID и после начала матча продолжить запрашивать его как Live-ID.

Пример запроса Live

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

Пример запроса Prematch

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

Сокращённый пример ответа Live

Ниже показан фрагмент реального ответа матча 746146992. Для компактности оставлены одна группа ставок и первые три субматча.

{
  "status": 1,
  "page": "/v1/event",
  "body": {
    "game_id": 746146992,
    "game_mid": 746146992,
    "game_start": 1787338800,
    "sport_id": 1,
    "sport_name": "Футбол",
    "country_id": 231,
    "country_name": "Англия",
    "tournament_id": 88637,
    "tournament_name": "Чемпионат Англии. Премьер-лига",
    "opp_1_name": "Арсенал",
    "opp_2_name": "Ковентри Сити",
    "game_oc_counter": 278,
    "game_oc_list": [
      {
        "group_id": 19,
        "group_name": "Обе забьют",
        "columns": 2,
        "oc_list": [
          [
            {
              "oc_group_name": "Обе забьют",
              "oc_name": "Да",
              "oc_rate": 3.336,
              "oc_size": 0,
              "oc_pointer": "746146992|19|180|0",
              "oc_block": false,
              "op_id": null
            }
          ],
          [
            {
              "oc_group_name": "Обе забьют",
              "oc_name": "Нет",
              "oc_rate": 1.33,
              "oc_size": 0,
              "oc_pointer": "746146992|19|181|0",
              "oc_block": false,
              "op_id": null
            }
          ]
        ]
      }
    ],
    "timer": 3376,
    "score_full": "3:0",
    "score_period": "2:0;1:0",
    "period_name": "2-й тайм",
    "sub_games": [
      {
        "game_id": 746147013,
        "game_num": 150080,
        "game_name": "2-й тайм"
      },
      {
        "game_id": 746147010,
        "game_num": 205978,
        "game_name": "Угловые"
      },
      {
        "game_id": 746147037,
        "game_num": 207011,
        "game_name": "Быстрые события"
      }
    ],
    "va": null,
    "vi": null,
    "zp": 746146992,
    "finale": false
  }
}

Это сокращённый фрагмент. Полный ответ содержит все поля матча, 49 групп коэффициентов, 13 субматчей и 15 показателей статистики.

Верхний уровень ответа

ПолеТипОписание
statusnumberСтатус выполнения запроса. В успешном ответе возвращается 1
pagestringНазвание метода. Для конкретного матча возвращается /v1/event
bodyobjectПодробный объект выбранного матча

В events поле body содержит массив турниров. В event поле body содержит один объект матча без дополнительной обёртки турнира.

Основные поля матча

ПолеТипОписание
game_idnumberID запрошенного матча или субматча
game_midnumber или nullID основного матча. У главного матча обычно совпадает с game_id
game_startnumberВремя начала в формате Unix Timestamp, в секундах
sport_idnumberID вида спорта
sport_namestringНазвание вида спорта
country_idnumberID страны
country_namestringНазвание страны
tournament_idnumberID турнира
tournament_namestringНазвание турнира
opp_1_namestringПервая команда или участник
opp_2_namestringВторая команда или участник
timernumberТаймер матча в секундах. Для получения минут разделите на 60. В Prematch обычно 0
score_fullstringОбщий счёт
score_periodstringСчёт текущего периода
period_namestringНазвание текущего периода
game_oc_counternumberОбщий счётчик доступных ставок или исходов
game_oc_listarrayПолный доступный список групп коэффициентов матча
sub_gamesarrayСсылки на доступные субматчи
vanumber или null1 — есть видео; null — видео отсутствует
vistring или nullID видеотрансляции
zpnumber или nullID Live 3D Tracker

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

Полный список коэффициентов

event используется после выбора матча в списке events:

events → краткий список лучших коэффициентов
   ↓ пользователь открывает матч
event → полный доступный список групп и исходов

В формате group поле game_oc_list сгруппировано и имеет дополнительный уровень вложенности внутри oc_list:

game_oc_list
└── группа ставок
    └── oc_list
        └── колонка
            └── исходы и коэффициенты этой колонки

Группа ставок

ПолеТипОписание
group_idnumberID группы
group_namestringНазвание группы
columnsnumberРекомендуемое количество колонок для отображения; не обязано совпадать с количеством вложенных массивов oc_list
oc_listarray of arraysКолонки исходов внутри группы; каждый вложенный массив содержит исходы и коэффициенты одной колонки

Исход

ПолеТипОписание
oc_namestringНазвание исхода
oc_ratenumberКоэффициент
oc_sizestring или numberЗначение форы, тотала или другого параметра
oc_pointerstringОсновной код ставки или исхода. Используется при передаче выбранной ставки в отдельную систему приёма и расчёта ставок
oc_blockbooleantrue — исход заблокирован; false — доступен
op_idnumber или nullID игрока или участника для персонального исхода, если применимо

Состав групп зависит от вида спорта и конкретного матча. Не привязывайте интерфейс к одинаковым названиям, количеству или порядку групп.

При подсчёте и обработке исходов учитывайте оба уровня oc_list: сначала массив колонок, затем массив исходов внутри каждой колонки.

game_oc_counter может отличаться от фактического количества возвращённых исходов. Используйте его как счётчик API, а сами исходы обрабатывайте по содержимому game_oc_list.

Данные сохранённых матчей

ОтветГруппыКолонки в oc_listИсходыgame_oc_counter
Live, 7461469924995278278
Prematch, 73032183720438712941337

Значения относятся только к моменту получения ответов и изменяются вместе со спортивной линией.

Субматчи

В конкретном event поле sub_games содержит список доступных субматчей. Например:

  • отдельный тайм;
  • угловые;
  • жёлтые карточки;
  • фолы;
  • статистика игроков;
  • другие доступные части и варианты матча.

Каждый элемент sub_games содержит:

ПолеТипОписание
game_idnumber или nullID субматча
game_numnumber или nullСтарое служебное поле, которое планируется удалить
game_namestring или nullНазвание субматча

Сам массив sub_games не содержит коэффициенты. Чтобы получить полный список коэффициентов субматча, выполните новый запрос event по его game_id.

Пример запроса субматча «Угловые»

Основной Live-матч 746146992 вернул:

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

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

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

Проверенный ответ субматча содержит:

{
  "game_id": 746147010,
  "game_mid": 746146992,
  "game_dop_name": "Угловые",
  "game_desk": "Тайм",
  "game_oc_counter": 175
}

В полном ответе этого субматча было 23 группы, 51 колонка и 166 исходов. Поле game_mid связывает субматч с основным матчем 746146992.

Полный проверочный ответ: субматч «Угловые», Live, русский язык.

Полная схема связи с основным матчем и правила работы с sub_games: «Дополнительные матчи и субматчи».

Групповые матчи и event_plan

Поле event_plan заполняется только в ответе конкретного матча event. В списке матчей events оно не используется и возвращается как [].

event_plan предназначен для групповых матчей. Основной матч может называться «Хозяева — Гости», а внутри event_plan передаётся полный список конкретных команд, которые играют на стороне хозяев и на стороне гостей. Каждый объект описывает одну пару команд и время её встречи.

ПолеТипОписание
opp_1_namestringКоманда со стороны хозяев
opp_2_namestringКоманда со стороны гостей
opp_1_idnumber или nullID команды со стороны хозяев
opp_2_idnumber или nullID команды со стороны гостей
opp_1_country_idnumber или nullID страны команды со стороны хозяев
opp_2_country_idnumber или nullID страны команды со стороны гостей
opp_1_iconstringИконка команды со стороны хозяев
opp_2_iconstringИконка команды со стороны гостей
opp_1_datenumber или nullДата и время команды со стороны хозяев в формате Unix Timestamp
opp_2_datenumber или nullДата и время команды со стороны гостей в формате Unix Timestamp
game_startnumber или nullВремя начала встречи этой пары в формате Unix Timestamp

Пример двух пар команд внутри группового матча:

"event_plan": [
  {
    "opp_1_name": "Anzoategui",
    "opp_2_name": "Trujillanos",
    "opp_1_id": 6354451,
    "opp_2_id": 2792,
    "opp_1_country_id": 41,
    "opp_2_country_id": 41,
    "opp_1_icon": "b85e2e3631e4b873b1d74975e6dd4e93.png",
    "opp_2_icon": "2792.png",
    "opp_1_date": 1787342400,
    "opp_2_date": 1787342400,
    "game_start": 1787342400
  },
  {
    "opp_1_name": "Caracas",
    "opp_2_name": "Carabobo",
    "opp_1_id": 2776,
    "opp_2_id": 29081,
    "opp_1_country_id": 41,
    "opp_2_country_id": 41,
    "opp_1_icon": "6309ee8475d59f87fff70fd08858e36f.png",
    "opp_2_icon": "56b11c23ac71e2f6934a7e0feb46dd5e.png",
    "opp_1_date": 1787353200,
    "opp_2_date": 1787353200,
    "game_start": 1787353200
  }
]

Live и Prematch

Структура ответа одинаковая, но заполнение данных отличается.

В Live обычно обновляются:

  • timer;
  • score_full и score_period;
  • period_name;
  • stat_list;
  • коэффициенты и oc_block;
  • доступность видео и трекера.

В Prematch таймер, счёт, период и статистика обычно содержат начальные или пустые значения.

Для сохранённого Live-матча zp равен 746146992, поэтому Live 3D Tracker доступен и это значение можно передать в трекер как gameid. Поля va и vi равны null, поэтому видеотрансляция для этого матча не предоставлена.

Подробные правила:

Матч больше недоступен

Если матч исчез из выбранного типа линии, метод может вернуть:

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

Сообщение не объясняет причину. Матч мог завершиться, быть отменён или перейти из Prematch в Live с новым game_id. После такого ответа прекратите обновлять прежний ID.

Сохранённые полные ответы

ОтветМатчСубматчиГруппы коэффициентов
LiveАрсенал — Ковентри Сити1349
PrematchМанчестер Сити — Борнмут24204

Полные ответы без сокращений:

Файлы содержат только тело ответа API. API-ключ в них не сохраняется.

Частота обновления

Рекомендуется запрашивать event:

  • Live — не чаще одного раза в 5 секунд;
  • Prematch (line) — не чаще одного раза в 30 секунд.

Подробнее: «Рекомендации по обновлению данных».

Ошибки ключа, тарифа и параметров описаны в документе «Обработка ошибок».