Video API · Video
Get video events
GET/api/v1/videos/events/video/{match_id}
Returns match events enriched with their related video links.
Bearer authentication required · service: video_apiReference only — this page never sends API requests or exposes token controls.
Response formats
When format is listed below, use json for the response documented here, or csv and xml for downloads. JSON uses camelCase by default; set case=snake_case when supported for legacy key names. Nested response fields use dot notation; [] denotes an array item and {key} a dynamic object key.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| match_id | integer | Required | Match ID Minimum 1. |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| lang | string | Optional | Language code. Default: en. Maximum 10 characters. |
| format | string | Required | Response format. Allowed: json, csv, xml. |
| version | integer | Required | Event feed version. Minimum 1. |
| offsetStart | integer | Required | Start offset in seconds. Minimum 0. |
| offsetEnd | integer | Required | End offset in seconds. Minimum 0 and greater than or equal to offsetStart. |
| page | integer | Optional | Page number. Default: 1. Minimum 1. |
| perPage | integer | Optional | Items per page. Default: 20. Minimum 1; maximum 100. |
| case | string | Optional | JSON response key style. Default: camelCase. Allowed: camelCase, snake_case. |
Response attributes
| Attribute | Type | Description |
|---|---|---|
| match | object | Match metadata. |
| match.matchId | integer | Match ID. |
| match.matchDate | string|null | Match date and time. |
| match.homeTeamScore | integer|null | Home-team score. Only published once the analysis has produced it; null while the match is still being worked on, so a fixture is never reported as a false 0-0. |
| match.awayTeamScore | integer|null | Away-team score. Only published once the analysis has produced it; null while the match is still being worked on, so a fixture is never reported as a false 0-0. |
| match.matchStatus | integer|null | Delivery state: 1 not started, 8 in progress, 9 delivered, 10 rejected (final), 11 on hold (paused, may resume), 12 no detailed match data. Describes our analysis, not the score - see hasFinalScore. |
| match.matchStatusLabel | string|null | Delivery state as a name: not_started, in_progress, delivered, rejected, on_hold, data_unavailable. |
| match.matchStatusReason | string|null | Why the match will not be delivered or is paused. Populated on matchStatus 10 and 11 only. |
| match.matchStatusUpdatedAt | string|null | UTC timestamp of the last delivery-state change (ISO 8601). |
| match.hasFinalScore | boolean | Whether the published score is the final one. |
| match.homeTeam | object | Home-team metadata. |
| match.homeTeam.id | integer | Home team ID. |
| match.homeTeam.name | string|null | Home team name. |
| match.awayTeam | object | Away-team metadata. |
| match.awayTeam.id | integer | Away team ID. |
| match.awayTeam.name | string|null | Away team name. |
| matchPositions | object | Goal-side positions by period. |
| matchPositions.firstHalfPositions | object | Goal-side positions in the first half. |
| matchPositions.firstHalfPositions.leftSideGoalTeam | string | Team defending the left goal. |
| matchPositions.firstHalfPositions.rightSideGoalTeam | string | Team defending the right goal. |
| matchPositions.secondHalfPositions | object | Goal-side positions in the second half. |
| matchPositions.secondHalfPositions.leftSideGoalTeam | string | Team defending the left goal. |
| matchPositions.secondHalfPositions.rightSideGoalTeam | string | Team defending the right goal. |
| offsets | object | Video offsets keyed by match period. |
| offsets.{period} | object | Start and end offsets for a match period. |
| offsets.{period}.start | number|null | Period start offset in seconds. |
| offsets.{period}.end | number|null | Period end offset in seconds. |
| firstHalfMarkers | array | First-half event markers. |
| firstHalfMarkers[].id | integer | Marker ID. |
| firstHalfMarkers[].actionId | integer|null | Action ID. |
| firstHalfMarkers[].creatorId | integer|null | Creator player ID. |
| firstHalfMarkers[].recipientId | integer|null | Recipient player ID. |
| firstHalfMarkers[].matchId | integer | Match ID. |
| firstHalfMarkers[].videoId | integer|null | Related video ID. |
| firstHalfMarkers[].coordX | number|null | Pitch X coordinate. |
| firstHalfMarkers[].coordY | number|null | Pitch Y coordinate. |
| firstHalfMarkers[].coordXDestination | number|null | Destination pitch X coordinate. |
| firstHalfMarkers[].coordYDestination | number|null | Destination pitch Y coordinate. |
| firstHalfMarkers[].gateCoordX | number|null | Goal X coordinate. |
| firstHalfMarkers[].gateCoordY | number|null | Goal Y coordinate. |
| firstHalfMarkers[].second | number|null | Elapsed match time in seconds. |
| firstHalfMarkers[].bodyPartId | integer|null | Body-part ID. |
| firstHalfMarkers[].setPieceId | integer|null | Set-piece ID. |
| firstHalfMarkers[].attackId | integer|null | Attack ID. |
| firstHalfMarkers[].possessionId | integer|null | Possession ID. |
| firstHalfMarkers[].autoGenerated | boolean | Whether the marker was generated automatically. |
| firstHalfMarkers[].creatorTeamId | integer|null | Creator team ID. |
| firstHalfMarkers[].possessionTeamId | integer|null | Team in possession when the event occurred. |
| firstHalfMarkers[].attackTeamId | integer|null | Team attacking when the event occurred. |
| firstHalfMarkers[].opponentId | integer|null | Opposing player involved in the event. |
| firstHalfMarkers[].opponentTeamId | integer|null | Opposing team involved in the event. |
| firstHalfMarkers[].touches | integer|null | Number of touches recorded for the event. |
| firstHalfMarkers[].qualifiers | object|null | Provider event qualifiers. Contains "map" (qualifier ID to value) and "raw" (the full qualifier list). Boolean qualifiers are present with a null value. |
| firstHalfMarkers[].action | object|null | Action lookup with id and title. |
| firstHalfMarkers[].creator | object|null | Creator player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| firstHalfMarkers[].recipient | object|null | Recipient player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| firstHalfMarkers[].setPiece | object|null | Set-piece lookup with id and title. |
| firstHalfMarkers[].attack | object|null | Attack lookup with id and name. |
| firstHalfMarkers[].possession | object|null | Possession lookup with id and name. |
| firstHalfMarkers[].bodyPart | object|null | Body-part lookup with id and name. |
| firstHalfMarkers[].relativeCoordX | number|null | Team-relative pitch X coordinate. |
| firstHalfMarkers[].relativeCoordY | number|null | Team-relative pitch Y coordinate. |
| firstHalfMarkers[].relativeCoordXDestination | number|null | Team-relative destination X coordinate. |
| firstHalfMarkers[].relativeCoordYDestination | number|null | Team-relative destination Y coordinate. |
| firstHalfMarkers[].zone | string|null | Derived pitch zone. |
| firstHalfMarkers[].videoEvent | string|null | Video URL; only present on the Video API event endpoint. |
| secondHalfMarkers | array | Second-half event markers. |
| secondHalfMarkers[].id | integer | Marker ID. |
| secondHalfMarkers[].actionId | integer|null | Action ID. |
| secondHalfMarkers[].creatorId | integer|null | Creator player ID. |
| secondHalfMarkers[].recipientId | integer|null | Recipient player ID. |
| secondHalfMarkers[].matchId | integer | Match ID. |
| secondHalfMarkers[].videoId | integer|null | Related video ID. |
| secondHalfMarkers[].coordX | number|null | Pitch X coordinate. |
| secondHalfMarkers[].coordY | number|null | Pitch Y coordinate. |
| secondHalfMarkers[].coordXDestination | number|null | Destination pitch X coordinate. |
| secondHalfMarkers[].coordYDestination | number|null | Destination pitch Y coordinate. |
| secondHalfMarkers[].gateCoordX | number|null | Goal X coordinate. |
| secondHalfMarkers[].gateCoordY | number|null | Goal Y coordinate. |
| secondHalfMarkers[].second | number|null | Elapsed match time in seconds. |
| secondHalfMarkers[].bodyPartId | integer|null | Body-part ID. |
| secondHalfMarkers[].setPieceId | integer|null | Set-piece ID. |
| secondHalfMarkers[].attackId | integer|null | Attack ID. |
| secondHalfMarkers[].possessionId | integer|null | Possession ID. |
| secondHalfMarkers[].autoGenerated | boolean | Whether the marker was generated automatically. |
| secondHalfMarkers[].creatorTeamId | integer|null | Creator team ID. |
| secondHalfMarkers[].possessionTeamId | integer|null | Team in possession when the event occurred. |
| secondHalfMarkers[].attackTeamId | integer|null | Team attacking when the event occurred. |
| secondHalfMarkers[].opponentId | integer|null | Opposing player involved in the event. |
| secondHalfMarkers[].opponentTeamId | integer|null | Opposing team involved in the event. |
| secondHalfMarkers[].touches | integer|null | Number of touches recorded for the event. |
| secondHalfMarkers[].qualifiers | object|null | Provider event qualifiers. Contains "map" (qualifier ID to value) and "raw" (the full qualifier list). Boolean qualifiers are present with a null value. |
| secondHalfMarkers[].action | object|null | Action lookup with id and title. |
| secondHalfMarkers[].creator | object|null | Creator player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| secondHalfMarkers[].recipient | object|null | Recipient player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| secondHalfMarkers[].setPiece | object|null | Set-piece lookup with id and title. |
| secondHalfMarkers[].attack | object|null | Attack lookup with id and name. |
| secondHalfMarkers[].possession | object|null | Possession lookup with id and name. |
| secondHalfMarkers[].bodyPart | object|null | Body-part lookup with id and name. |
| secondHalfMarkers[].relativeCoordX | number|null | Team-relative pitch X coordinate. |
| secondHalfMarkers[].relativeCoordY | number|null | Team-relative pitch Y coordinate. |
| secondHalfMarkers[].relativeCoordXDestination | number|null | Team-relative destination X coordinate. |
| secondHalfMarkers[].relativeCoordYDestination | number|null | Team-relative destination Y coordinate. |
| secondHalfMarkers[].zone | string|null | Derived pitch zone. |
| secondHalfMarkers[].videoEvent | string|null | Video URL; only present on the Video API event endpoint. |
| firstExtraTimeMarkers | array | First extra-time event markers. |
| firstExtraTimeMarkers[].id | integer | Marker ID. |
| firstExtraTimeMarkers[].actionId | integer|null | Action ID. |
| firstExtraTimeMarkers[].creatorId | integer|null | Creator player ID. |
| firstExtraTimeMarkers[].recipientId | integer|null | Recipient player ID. |
| firstExtraTimeMarkers[].matchId | integer | Match ID. |
| firstExtraTimeMarkers[].videoId | integer|null | Related video ID. |
| firstExtraTimeMarkers[].coordX | number|null | Pitch X coordinate. |
| firstExtraTimeMarkers[].coordY | number|null | Pitch Y coordinate. |
| firstExtraTimeMarkers[].coordXDestination | number|null | Destination pitch X coordinate. |
| firstExtraTimeMarkers[].coordYDestination | number|null | Destination pitch Y coordinate. |
| firstExtraTimeMarkers[].gateCoordX | number|null | Goal X coordinate. |
| firstExtraTimeMarkers[].gateCoordY | number|null | Goal Y coordinate. |
| firstExtraTimeMarkers[].second | number|null | Elapsed match time in seconds. |
| firstExtraTimeMarkers[].bodyPartId | integer|null | Body-part ID. |
| firstExtraTimeMarkers[].setPieceId | integer|null | Set-piece ID. |
| firstExtraTimeMarkers[].attackId | integer|null | Attack ID. |
| firstExtraTimeMarkers[].possessionId | integer|null | Possession ID. |
| firstExtraTimeMarkers[].autoGenerated | boolean | Whether the marker was generated automatically. |
| firstExtraTimeMarkers[].creatorTeamId | integer|null | Creator team ID. |
| firstExtraTimeMarkers[].possessionTeamId | integer|null | Team in possession when the event occurred. |
| firstExtraTimeMarkers[].attackTeamId | integer|null | Team attacking when the event occurred. |
| firstExtraTimeMarkers[].opponentId | integer|null | Opposing player involved in the event. |
| firstExtraTimeMarkers[].opponentTeamId | integer|null | Opposing team involved in the event. |
| firstExtraTimeMarkers[].touches | integer|null | Number of touches recorded for the event. |
| firstExtraTimeMarkers[].qualifiers | object|null | Provider event qualifiers. Contains "map" (qualifier ID to value) and "raw" (the full qualifier list). Boolean qualifiers are present with a null value. |
| firstExtraTimeMarkers[].action | object|null | Action lookup with id and title. |
| firstExtraTimeMarkers[].creator | object|null | Creator player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| firstExtraTimeMarkers[].recipient | object|null | Recipient player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| firstExtraTimeMarkers[].setPiece | object|null | Set-piece lookup with id and title. |
| firstExtraTimeMarkers[].attack | object|null | Attack lookup with id and name. |
| firstExtraTimeMarkers[].possession | object|null | Possession lookup with id and name. |
| firstExtraTimeMarkers[].bodyPart | object|null | Body-part lookup with id and name. |
| firstExtraTimeMarkers[].relativeCoordX | number|null | Team-relative pitch X coordinate. |
| firstExtraTimeMarkers[].relativeCoordY | number|null | Team-relative pitch Y coordinate. |
| firstExtraTimeMarkers[].relativeCoordXDestination | number|null | Team-relative destination X coordinate. |
| firstExtraTimeMarkers[].relativeCoordYDestination | number|null | Team-relative destination Y coordinate. |
| firstExtraTimeMarkers[].zone | string|null | Derived pitch zone. |
| firstExtraTimeMarkers[].videoEvent | string|null | Video URL; only present on the Video API event endpoint. |
| secondExtraTimeMarkers | array | Second extra-time event markers. |
| secondExtraTimeMarkers[].id | integer | Marker ID. |
| secondExtraTimeMarkers[].actionId | integer|null | Action ID. |
| secondExtraTimeMarkers[].creatorId | integer|null | Creator player ID. |
| secondExtraTimeMarkers[].recipientId | integer|null | Recipient player ID. |
| secondExtraTimeMarkers[].matchId | integer | Match ID. |
| secondExtraTimeMarkers[].videoId | integer|null | Related video ID. |
| secondExtraTimeMarkers[].coordX | number|null | Pitch X coordinate. |
| secondExtraTimeMarkers[].coordY | number|null | Pitch Y coordinate. |
| secondExtraTimeMarkers[].coordXDestination | number|null | Destination pitch X coordinate. |
| secondExtraTimeMarkers[].coordYDestination | number|null | Destination pitch Y coordinate. |
| secondExtraTimeMarkers[].gateCoordX | number|null | Goal X coordinate. |
| secondExtraTimeMarkers[].gateCoordY | number|null | Goal Y coordinate. |
| secondExtraTimeMarkers[].second | number|null | Elapsed match time in seconds. |
| secondExtraTimeMarkers[].bodyPartId | integer|null | Body-part ID. |
| secondExtraTimeMarkers[].setPieceId | integer|null | Set-piece ID. |
| secondExtraTimeMarkers[].attackId | integer|null | Attack ID. |
| secondExtraTimeMarkers[].possessionId | integer|null | Possession ID. |
| secondExtraTimeMarkers[].autoGenerated | boolean | Whether the marker was generated automatically. |
| secondExtraTimeMarkers[].creatorTeamId | integer|null | Creator team ID. |
| secondExtraTimeMarkers[].possessionTeamId | integer|null | Team in possession when the event occurred. |
| secondExtraTimeMarkers[].attackTeamId | integer|null | Team attacking when the event occurred. |
| secondExtraTimeMarkers[].opponentId | integer|null | Opposing player involved in the event. |
| secondExtraTimeMarkers[].opponentTeamId | integer|null | Opposing team involved in the event. |
| secondExtraTimeMarkers[].touches | integer|null | Number of touches recorded for the event. |
| secondExtraTimeMarkers[].qualifiers | object|null | Provider event qualifiers. Contains "map" (qualifier ID to value) and "raw" (the full qualifier list). Boolean qualifiers are present with a null value. |
| secondExtraTimeMarkers[].action | object|null | Action lookup with id and title. |
| secondExtraTimeMarkers[].creator | object|null | Creator player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| secondExtraTimeMarkers[].recipient | object|null | Recipient player profile. Its starter is whether the player started the match, the same value the squad endpoint publishes. |
| secondExtraTimeMarkers[].setPiece | object|null | Set-piece lookup with id and title. |
| secondExtraTimeMarkers[].attack | object|null | Attack lookup with id and name. |
| secondExtraTimeMarkers[].possession | object|null | Possession lookup with id and name. |
| secondExtraTimeMarkers[].bodyPart | object|null | Body-part lookup with id and name. |
| secondExtraTimeMarkers[].relativeCoordX | number|null | Team-relative pitch X coordinate. |
| secondExtraTimeMarkers[].relativeCoordY | number|null | Team-relative pitch Y coordinate. |
| secondExtraTimeMarkers[].relativeCoordXDestination | number|null | Team-relative destination X coordinate. |
| secondExtraTimeMarkers[].relativeCoordYDestination | number|null | Team-relative destination Y coordinate. |
| secondExtraTimeMarkers[].zone | string|null | Derived pitch zone. |
| secondExtraTimeMarkers[].videoEvent | string|null | Video URL; only present on the Video API event endpoint. |
| message | string | Present instead of the feed when the match has no usable events. The response is still 200; the fields below say why. |
| eventsAvailable | boolean | False when no event feed exists for this match. Absent when the feed is returned. |
| statusMessage | string | Plain-language reason there is no feed, derived from matchStatus. |
| matchStatus | integer|null | Delivery state of the match, alongside message. Same values as match.matchStatus. |
| matchStatusLabel | string|null | Delivery state as a name, alongside message. |
| matchStatusReason | string|null | Why the match will not be delivered or is paused, alongside message. |
| matchStatusUpdatedAt | string|null | UTC timestamp of the last delivery-state change, alongside message. |
| hasFinalScore | boolean | Whether a final score exists for the match, alongside message. |
| meta | object | Pagination metadata. |
| meta.currentPage | integer | Current page number. |
| meta.perPage | integer | Requested page size. |
| meta.total | integer | Total number of matching records. |
| meta.lastPage | integer | Last available page number. |
| meta.from | integer|null | Position of the first item on this page. |
| meta.to | integer|null | Position of the last item on this page. |
| links | object | Pagination URLs. |
| links.first | string | URL of the first page. |
| links.last | string | URL of the last page. |
| links.previous | string|null | URL of the previous page, when available. |
| links.next | string|null | URL of the next page, when available. |