event Method — Specific Match
Purpose
The event method returns detailed data for one match by its game_id.
Unlike events, which provides a short list of the main markets and best
odds for each match, event returns the complete available list of markets and
selections for the selected match.
The method is also used to:
- open a specific match page;
- regularly update an open Live match;
- retrieve the main current Live metrics from
stat_list; - retrieve the submatch list;
- request the complete odds list for a selected submatch;
- check video and Live 3D Tracker availability.
Every JSON field is documented in the Sport Line API Field Reference.
Request
GET https://YOUR_API_DOMAIN/v1/event/{gameId}/group/{type}/{lang}
Send the API key in the HTTP header:
Package: YOUR_API_KEY
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
gameId | number | yes | Match or submatch ID obtained from events or sub_games |
group | string | yes | The only format supported by event. Groups odds into markets and nested selection columns |
type | string | yes | Sports line type: live or line |
lang | string | yes | Language of names. It must be supported by the API and included in the client’s subscription |
The event method supports only the group format.
Why group Is Used
The group format is recommended for a specific match because the API prepares the
odds for display:
- it separates selections into betting markets;
- it creates columns within each market;
- it provides the recommended number of columns in
columns; - it sorts selections by their values.
The developer does not need to group selections, reconstruct columns, or re-sort the values. Preserve the order of markets, columns, and selections returned by the API.
Request an ID using the same line type from which it was obtained:
- use
livefor a Live match; - use
linefor a Prematch match.
Prematch and Live versions of the same match have different game_id values. Do not
take a Prematch ID and continue requesting it as a Live ID after the match starts.
Live Request Example
curl --request GET \
--url 'https://YOUR_API_DOMAIN/v1/event/746146992/group/live/en' \
--header 'Package: YOUR_API_KEY'
Prematch Request Example
curl --request GET \
--url 'https://YOUR_API_DOMAIN/v1/event/730321837/group/line/en' \
--header 'Package: YOUR_API_KEY'
Shortened Live Response Example
The following excerpt comes from the real English response for match 746146992. It
contains one betting market and the first three submatches.
{
"status": 1,
"page": "/v1/event",
"body": {
"game_id": 746146992,
"game_mid": 746146992,
"game_start": 1787338800,
"sport_id": 1,
"sport_name": "Football",
"country_id": 231,
"country_name": "England",
"tournament_id": 88637,
"tournament_name": "England. Premier League",
"opp_1_name": "Arsenal",
"opp_2_name": "Coventry City",
"game_oc_counter": 278,
"game_oc_list": [
{
"group_id": 19,
"group_name": "Both Teams To Score",
"columns": 2,
"oc_list": [
[
{
"oc_group_name": "Both Teams To Score",
"oc_name": "Yes",
"oc_rate": 3.336,
"oc_size": 0,
"oc_pointer": "746146992|19|180|0",
"oc_block": false,
"op_id": null
}
],
[
{
"oc_group_name": "Both Teams To Score",
"oc_name": "No",
"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": "period",
"sub_games": [
{
"game_id": 746147013,
"game_num": 150080,
"game_name": "2nd half"
},
{
"game_id": 746147010,
"game_num": 205978,
"game_name": "Corners"
},
{
"game_id": 746147037,
"game_num": 207011,
"game_name": "Quick events"
}
],
"va": null,
"vi": null,
"zp": 746146992,
"finale": false
}
}
This is a shortened excerpt. The full response contains all match fields, 49 odds markets, 13 submatches, and 15 statistics metrics.
Top-level Response Fields
| Field | Type | Description |
|---|---|---|
status | number | Request status. A successful response returns 1 |
page | string | Method name. A specific match returns /v1/event |
body | object | Detailed object of the selected match |
In events, body contains an array of tournaments. In event, body contains one
match object without an additional tournament wrapper.
Main Match Fields
| Field | Type | Description |
|---|---|---|
game_id | number | ID of the requested match or submatch |
game_mid | number or null | Main match ID. For the main match, it usually equals game_id |
game_start | number | Start time as a Unix timestamp in seconds |
sport_id | number | Sport ID |
sport_name | string | Sport name |
country_id | number | Country ID |
country_name | string | Country name |
tournament_id | number | Tournament ID |
tournament_name | string | Tournament name |
opp_1_name | string | First team or participant |
opp_2_name | string | Second team or participant |
timer | number | Match timer in seconds. Divide by 60 to obtain minutes. Usually 0 in Prematch |
score_full | string | Overall score |
score_period | string | Current period score |
period_name | string | Current period name |
game_oc_counter | number | Total count of available bets or selections |
game_oc_list | array | Complete available list of odds markets for the match |
sub_games | array | References to available submatches |
va | number or null | 1 — video is available; null — video is unavailable |
vi | string or null | Video stream ID |
zp | number or null | Live 3D Tracker ID |
The purpose, types, and allowed values of the remaining fields are documented in the field reference.
Complete Odds List
Use event after the user selects a match from events:
events → short list of the best odds
↓ user opens a match
event → complete available list of markets and selections
In the group format, game_oc_list is grouped and contains an additional nesting
level within oc_list:
game_oc_list
└── betting market
└── oc_list
└── column
└── selections and odds in this column
Betting Market
| Field | Type | Description |
|---|---|---|
group_id | number | Market ID |
group_name | string | Market name |
columns | number | Recommended number of display columns. It does not have to equal the number of nested oc_list arrays |
oc_list | array of arrays | Selection columns in the market. Each nested array contains the selections and odds for one column |
Selection
| Field | Type | Description |
|---|---|---|
oc_name | string | Selection name |
oc_rate | number | Odds value |
oc_size | string or number | Handicap, total, or another parameter value |
oc_pointer | string | Primary bet or selection code. Used to pass the selected bet to the separate bet placement and settlement system |
oc_block | boolean | true — the selection is blocked; false — it is available |
op_id | number or null | Player or participant ID for a player-specific selection, when applicable |
The market list depends on the sport and the specific match. Do not build the interface around fixed market names, counts, or order.
When counting and processing selections, account for both oc_list levels: first the
column array, then the selection array inside each column.
game_oc_counter may differ from the actual number of returned selections. Treat it as
an API counter and process selections from the contents of game_oc_list.
Saved Match Data
| Response | Markets | Columns in oc_list | Selections | game_oc_counter |
|---|---|---|---|---|
Live, 746146992 | 49 | 95 | 278 | 278 |
Prematch, 730321837 | 204 | 387 | 1294 | 1337 |
These values apply only to the time when the responses were retrieved and change with the sports line.
Submatches
In a specific event, sub_games contains the available submatches. Examples include:
- a specific half;
- corners;
- yellow cards;
- fouls;
- player statistics;
- other available parts or variants of the match.
Each sub_games item contains:
| Field | Type | Description |
|---|---|---|
game_id | number or null | Submatch ID |
game_num | number or null | Legacy service field scheduled for removal |
game_name | string or null | Submatch name |
The sub_games array itself does not contain odds. To retrieve the complete odds list
for a submatch, make another event request using its game_id.
“Corners” Submatch Request Example
The main Live match 746146992 returned:
{
"game_id": 746147010,
"game_num": 205978,
"game_name": "Corners"
}
Submatch request:
curl --request GET \
--url 'https://YOUR_API_DOMAIN/v1/event/746147010/group/live/en' \
--header 'Package: YOUR_API_KEY'
The verified submatch response contains the following relevant identifiers and odds count:
{
"game_id": 746147010,
"game_mid": 746146992,
"game_oc_counter": 175
}
The full verified response for this submatch contained 23 markets, 51 columns, and 166
selections. The game_mid field links the submatch to main match 746146992.
The response also contains game_dop_name for the localized submatch name and
game_desk for the localized game segment name. Their text values depend on lang.
The saved full response was requested in Russian; localized text values depend on the
lang parameter:
“Corners” submatch, Live, Russian.
The complete relationship with the main match and the rules for using sub_games are
documented in Submatches and Additional Matches.
Group Matches and event_plan
The event_plan field is populated only in a specific event response. It is not used
in the events match list and is returned there as [].
event_plan is intended for group matches. The main match may be named “Home — Away,”
while event_plan contains the complete list of specific teams playing for the home and
away sides. Each object describes one team pair and the time of its match.
| Field | Type | Description |
|---|---|---|
opp_1_name | string | Team on the home side |
opp_2_name | string | Team on the away side |
opp_1_id | number or null | ID of the team on the home side |
opp_2_id | number or null | ID of the team on the away side |
opp_1_country_id | number or null | Country ID of the team on the home side |
opp_2_country_id | number or null | Country ID of the team on the away side |
opp_1_icon | string | Icon of the team on the home side |
opp_2_icon | string | Icon of the team on the away side |
opp_1_date | number or null | Home-side team date and time as a Unix timestamp |
opp_2_date | number or null | Away-side team date and time as a Unix timestamp |
game_start | number or null | Start time of this pair’s match as a Unix timestamp |
Example with two team pairs inside a group match:
"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 and Prematch
The response structure is the same, but the data is populated differently.
Live usually updates:
timer;score_fullandscore_period;period_name;stat_list;- odds and
oc_block; - video and tracker availability.
In Prematch, the timer, score, period, and statistics usually contain initial or empty values.
For the saved Live match, zp is 746146992, so Live 3D Tracker is available and this
value can be passed to the tracker as gameid. Both va and vi are null, so no
video stream is provided for this match.
Detailed rules:
Match No Longer Available
If the match disappears from the selected line type, the method may return:
{
"status": 1,
"page": "/v1/event",
"body": {
"message": "Game id finished"
}
}
The message does not explain the reason. The match may have ended, been cancelled, or
moved from Prematch to Live under a new game_id. Stop updating the previous ID after
receiving this response.
Saved Full Responses
| Response | Match | Submatches | Odds markets |
|---|---|---|---|
| Live | Arsenal — Coventry City | 13 | 49 |
| Prematch | Manchester City — Bournemouth | 24 | 204 |
Full unabridged responses:
- Live
746146992, Russian - Live
746146992, English - Prematch
730321837, Russian - Prematch
730321837, English - “Corners” submatch
746147010, Russian
The files contain only API response bodies. No API key is stored in them.
Update Frequency
Recommended request frequency for event:
- Live — no more than once every 5 seconds;
- Prematch (
line) — no more than once every 30 seconds.
See Data Update Guidelines for more details.
Key, subscription, and parameter errors are documented in Error Handling.