Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Learn about the different methods to test your integration before going live.
This page includes test event IDs and other information to make sure your integration works as planned. Use it to trigger different flows in your integration and ensure they are handled accordingly.
When using the Table Tennis API in your application, ensure that:
All required header paramters are set correctly
You have a valid OAuth Bearer 2.0 token for authentication
Use the correct URL to get connected to the API
Genuine match ID information cannot be used in test mode. Instead, use any of the following test match ID numbers to make a successful request.
Match ID
Details
999991
Test Match ID
Use the following command to get more details about a match associated with the id of 999991.
WebSocket: wss://dde-streams.imgarena.com/tabletennis/999991/matchdetails
Then right after getting connected, a valid authentication token should be sent immediately.
Method: GET
URL: https://dde-test-api.imgarena.com/tabletennis/tournaments/
Headers: [Accept] application/vnd.imgarena.dde.api+json;version=1
A single websocket endpoint exists for each match. It is a match details feed and contains an action based play by play representation of a volleyball match.
wss://dde-streams.imgarena.com/tabletennis/{id}/matchdetails
Connect to SSL websocket address
Send JSON packet containing API token
Receive response indicating that connection is authorised (or a response indicating why the connection cannot be made)
Receive data packets
Once you have the API token, any further data that you send over the connection will be ignored.
Security protocol for WebSockets: Please note that we currently we do not support SSL. We only support the use of TLS Version 1.2+.
How to get access to the IMG Arena Table Tennis API
To make any request to the IMG Arena API, you must first apply for an account and our Support and Integrations team will send you an OAuth Bearer 2.0 token. This token represents your application and enables you to authenticate requests.
Since these tokens do not expire unless regenerated, we suggest creating environment variables or using a secure password manager once you've received your credentials.
Please note: If you misplace or forget the tokens, you will need to regenerate them, which creates new credentials and invalidates the old ones. This means that you will have to update any integrations that you may have set up with your prior credentials.
Once you have access, you’re ready to get started using the IMG Arena Table Tennis API! We have quick start guides for many of our endpoints, useful tools and libraries and sample code that describe how to build solutions around different use cases.
IMG Arena monitor the incoming traffic from our customers and strive to ensure that traffic is controlled, in-keeping with our guidelines and not unnecessarily excessive. We would suggest a polling rate of 5 requests per second, whilst we strive towards implementing rate limiting.
Technical Documentation provided by WTT
Title
Date
Link
WTT Series Handbook 2021 Final (Updated 17 May)
May 17, 2021
ITTF Table Tennis World Ranking FAQ
Mar 30, 2021
Get started with building your application using our Table Tennis API, that provides fast and reliable static and live data for tournaments, matches and competitions.
IMG Arena's FastPath data feeds enable you to harness the power of our historical data and live events within your own applications. The provision of low latency, official data has been a key driver behind the growth of online sports betting. The platform provides tools, resources, data and API products for you to integrate.
The IMG Arena's developer platform is organized into four different products, based on use case, versioning, and access model.
We have put together a different page for each product to help you get started, which you can access below:
Product
Details
Table Tennis Schedule API
The Table Tennis Schedule API is a set of programmatic endpoints that can be used to learn about upcoming or historical events, competitions or tournaments.
This API allows you to find and retrieve a variety of different resources including the following:
Live Events
Tournaments
Competitions
Draws
Results
Table Tennis Stream API
The Table Tennis Streaming API allows you to programmatically integrate with the FastPath live data platform which provides low latency match status updates during live events including the following:
Players Confirmation
Match Start
Points Started
Points Scored
Undos
Score Corrections
Sanctions
Penalty Points
Swap Servings
Swap Sides
Timeouts
Injuries
Walkovers
Disqualifications
Retiring
Match Finish
Debugging an error? Have a question? Head over to our support section to find troubleshooting tips, contact details, live API status monitor, and other helpful information.
An array of live-event matches
Field Name
Type
Description
liveEvents
object
Field Name
Type
Description
tournamentName
string
Name of the tournament
tournamentId
int
Tournament Identifier
externalTournamentId
string
External Tournament Identifier
eventId
string
Unique identifier for this event
startTime
object
StartTime object indicating when the match was scheduled to start
teamA
object
A team status object describing the first team taking part
teamB
object
A team status object describing the second team taking part
eventState
string
NotStarted, InProgress, Finished, Suspended
Field Name
Type
Description
time
time
Timestamp relating to the status
Both of these objects contain the same information, but about the opposing team.
Field Name
Type
Description
status
string
UnknownTableTennisTeam, KnownTableTennisTeam, Bye
team
object
Team object containing the player information. Object will be empty if the status is Unknown or Bye
In singles, there is a team of 1 player1, in doubles we have 2 players, player1 and player2
Field
Type
Description
player1
object
Contains player information (mandatory for doubles and singles)
player2
object
Only exists for doubles
entryType
string
Standard, Qualifier
seed
integer
The seed that teams are in a tournament
These objects contain the same information, per player
Fields
Type
Description
id
string
Players individual identifier
firstName
string
First name
lastName
string
Last name
birthDate
string
The ISO 8601 representation of the player's date of birth (i.e. YYYY-MM-DD)
country
string
Player's country code
Tournament
Event
World Table Tennis Championships
Men's Singles
Women's Singles
Men's Doubles
Mixed Doubles
World Team Table Tennis Championships
Men's Team
Women's Team
Field Name
Type
Description
sport
string
The sport of the tournament
tournamentName
string
The name of the tournament
city
string
The city where the tournament is being held
status
string
The status of the tournament - Cancelled, Confirmed or Unconfirmed. Note that occasionally scheduled tournaments will not take place (e.g. a sponsor pulls out) in which case the status will be set to Cancelled
location
string
The country or state (US only) and country where the tournament is being held. See countryCode for a fixed format location field
countryCode
string
ISO-3166-1 alpha-3 country code of the country where the tournament is taking place. If the country is currently unknown, the code “ZZZ” will be returned.
startDate
date
The date the tournament starts
endDate
date
The date the tournament starts
year
int
The year of the tournament
identifier
int
Identifier for the tournament
numberOfMatches
int
The number of matches to be played in this tournament. Note that for Tennis and Badminton this number is initially an estimate and will become more accurate as the order of play is released
utcOffset
double
The number of hours difference between the tournament location’s timezone and UTC. This accounts for daylght savings.
eventsSummary
object
The number of matches to be played on each day, if known. This data is only available once the order of play for the tournament is released. See object definition below
competitions
array [object]
The competitions which are played as part of the tournament. See object definition below
Field Name
Type
Description
eventsSummary
object
Object containing the number of events on the specified date. There are codes for the types of events: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles. The above codes can be prefixed with ‘Q’ to indicate they are part of qualifying for the competition
Field Name
Type
Description
organisation
string
Name of the organisation running the competition (ITTF or WTT)
externalId
string
External identifier for the competition.
competitionId
int
Identifier for the competition
participantType
string
The competition type - possible values are: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles
drawSize
int
Draw size for the main competition
qualifyingDrawSize
int
Draw size for the qualifying competition
You can use the Table Tennis REST API to create calls to get the data you need to integrate with IMG Arena.
This describes the resources that make up the Table Tennis REST API. If you have any problems or requests, please contact our Support and Integrations team.
Category
Endpoint
Live Events
Live Events
Tournaments
List of Tournaments
Tournaments
Specific Tournament
Tournaments
Tournament Events
Tournaments
Tournament Draws
Tournaments
Tournament Results
Competitions
Competition Events
Competitions
Competition Draws
This endpoint returns details for a specific tournament if the id is valid and you are licenced for it
This endpoint should be requested if you want to understand details on a specific tournament. It will display the same types of information as the https://dde-api.imggaming.com/tabletennis/tournaments/
endpoint.
We recommend you request this end point on an ad hoc basis whenever you want this information on a specific tournament.
Example requests of this end point:
https://dde-api.imggaming.com/tabletennis/tournaments/1036
This endpoint currently takes no request parameters
This endpoint lists the currently live booked events for which you are licenced. This allows you to determine which events have live streams available.
GET
https://dde-api.imggaming.com/tabletennis/tournaments/liveevents
We recommend that you request this REST endpoint every 10 seconds so that you have the most up-to-date information on the events that are currently live on the DDE. This endpoint currently takes no request parameters.
dateFrom
string
YYYY-MM-DD (Example: dateFrom=2021-01-01)
dateTo
string
YYYY-MM-DD (Example: dateTo=2021-02-01)
Accept
string
application/vnd.imggaming.dde.api+json;version=1
Authorization
string
OAuth2 Bearer token
Authorization
string
OAuth2 Bearer token
Accept
string
application/vnd.imggaming.dde.api+json;version=1
Field Name
Type
Description
tournamentName
string
The name of the tournament
city
string
The city where the tournament is being held
status
string
The status of the tournament - Cancelled, Confirmed or Unconfirmed. Note that occasionally scheduled tournaments will not take place (e.g. a sponsor pulls out) in which case the status will be set to Cancelled
location
string
The country or state (US only) and country where the tournament is being held. See countryCode for a fixed format location field
countryCode
string
ISO-3166-1 alpha-3 country code of the country where the tournament is taking place. If the country is currently unknown, the code “ZZZ” will be returned.
startDate
date
The date the tournament starts
endDate
date
The date the tournament starts
year
int
The year of the tournament
identifier
int
Identifier for the tournament
numberOfMatches
int
The number of matches to be played in this tournament. Note that for Tennis and Badminton this number is initially an estimate and will become more accurate as the order of play is released
utcOffset
double
The number of hours difference between the tournament location’s timezone and UTC. This accounts for daylght savings.
eventsSummary
object
The number of matches to be played on each day, if known. This data is only available once the order of play for the tournament is released. See object definition below
competitions
array [object]
The competitions which are played as part of the tournament. See object definition below
Field Name
Type
Description
eventsSummary
object
Object containing the number of events on the specified date. There are codes for the types of events: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles. The above codes can be prefixed with ‘Q’ to indicate they are part of qualifying for the competition
Field Name
Type
Description
organisation
string
Name of the organisation running the competition (ITTF or WTT)
externalId
string
External identifier for the competition.
competitionId
int
Identifier for the competition
participantType
string
The competition type - possible values are: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles
drawSize
int
Draw size for the main competition
qualifyingDrawSize
int
Draw size for the qualifying competition
This endpoint lists the booked events for a tournament for which you are licenced. Note that the list of events is incomplete and will only show previous events and events for today and tomorrow. As a tournament progresses, matches will be added to the list.
This endpoint will include the order of play (OOP) updates. These include updates to events such as:
A change of table
A change of tablesequence
A change of scheduled start time
We recommend that you request the https://dde-api.imggaming.com/tabletennis/tournaments/{id}/events
REST endpoint every minute so that you have the most up-to-date information on the events from live/upcoming tournaments.
This endpoint currently takes no request parameters, we aim to add them, and once we have they will be detailed here.
https://dde-api.imggaming.com/tabletennis/tournaments/847/events
Field Name
Type
Description
eventId
string
Unique identifier for this event
date
date
Date the match was played or is scheduled to be played
matchType
string
Code indicating the type of match: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles. The above codes can be prefixed with ‘Q’ to indicate they are part of qualifying for the competition
status
string
The current status of the match, one of: NotStarted, InProgress, Suspended, Finished
tableNumber
string
The number table the match is being played on
teamA
object
Team Status object for the first team in the match
teamB
object
Team Status object for the second team in the match
startTime
object
startTime object indicating when the match is scheduled to start
competitonId
integer
Identifier for the competition
round
string
The round this event is being played in. In case of a qualifier event the round number is prepended with a ‘Q’, like “Q3”. Otherwise it’s simply a number, e.g. “3”. The rounds work backwards, with 1 being the final, 2 being the semi-finals, 3 the quarters etc
Field Name
Type
Description
status
string
Indicates if the player detail is known for this team. Values are KnownTableTennisTeam, UnknownTableTennisTeam or Bye. For UnknownTableTennisTeam or Bye, no other fields will be present
team
object
A table tennis Team Object
Field Name
Type
Description
Player1
object
Player object containing details for the first player in the team
Player2
object
Player object containing details for the second player in the team. Only present if a doubles team
seed
int
This team’s seeding for the competition
entryType
string
This team’s entry type for the competition. Possible values are: Qualifier or Standard
Field Name
Type
Description
time
timestamp
Contains either the start time for the match (generally if it’s the first match of the day on a court) or the earliest time it could start (e.g. if there is a rain delay and they know play will not start until midday) or an estimate of the start time based on the start time of the previous match
status
string
Indicates the type of information held for the start time.
StartsAt: The time in which the match is expected to start.
NotBefore: The time in which the match will not start before.
EstimatedStart: The time in which the match is estimated to start.
FollowsPrevious: The match will follow the previous match on the same table, therefore the time attributed with a 'Follows Previous' state is a rough estimate of the start time of that match.
NoInformation: No information available.
This endpoint lists the draws for a tournament. This includes the placeholders for matches in each round of the competition.
A typical table tennis draw is an expected set of matchups within a tennis tournament which is a knockout competition. Every match a player wins, they are entered into the next round of the draw
A table tennis draw on the DDE is first of all defined by the draw type, with each competition in a table tennis tournament having its own draw.
For example, the majority of table tennis tournaments require one or more qualifying rounds, which typically take place over the weekend before the tournament week starting. On the DDE, a qualifying round can be identified by each match's specific event ID. Event IDs are explained in detail on this page.
We recommend that you request the https://dde-api.imggaming.com/tabletennis/tournaments/{id}/draws
REST endpoint every minute so that you have the most up-to-date information on the draws from live/upcoming tournaments.
This endpoint currently takes no request parameters, we aim to add them, and once we have they will be detailed here.
This end point will show the same information as the /tournaments/{id}/events
end point, but for a competition.
It is important to distinguish between a Tournament and a Competition.
Competitions are sub sets of tournaments. The tournament is the over-arching event, and the competitions happen within these tournaments.
Within each tournament there are multiple competitions, e.g. Men's Singles, Men's Doubles, Women's Doubles, e.t.c.. These competitions are knockout competitions that have a single winner.
Each of these Competitions has their own ID - although in every case the Men's Singles and Doubles (and Women's Singles and Doubles) will have the same competition ID.
We recommend that you request the https://dde-api.imggaming.com/tabletennis/competitions/{id}/events
REST end point every minute so that you have the most up-to-date information on the events from live/upcoming competitions.
This endpoint currently takes no request parameters, we aim to add them, and once we have they will be detailed here.
This endpoint lists the results from a specific tournament, as a list of final match scores.
This endpoint lists information on results for a specific tournament, namely:
The match winner
The score
The time/date of match completion
As soon as a match is finished in the tournament, it will appear in this endpoint https://dde-api.imggaming.com/tabletennis/tournaments/{id}/results
.
This endpoint currently takes no request parameters, we aim to add them, and once we have they will be detailed here
Field Name
Type
Description
teamA
object
Team Status object containing details for the first team
teamB
object
Team Status object containing details for the second team
winner
string
The team ID of the winner - TeamA or TeamB
matchScore
object
The final match score object
matchExternalId
string
The external match ID for the event
matchId
int
IMG match ID
eventId
string
The event ID of the match
Field Name
Type
Description
status
string
Indicates if the player detail is known for this team. Values are KnownTableTennisTeam, UnknownTableTennisTeam or Bye. For UnknownTableTennisTeam or Bye, no other fields will be present
team
object
A table tennis team object
Field Name
Type
Description
player1
object
Player object containing details for the first player in the team
player2
object
Player object containing details for the second player in the team. Only present if a doubles team
seed
int
This team's seeding for the competition
entryType
string
This team’s entry type for the competition. Possible values are: Qualifier or Standard
Field Name
Type
Description
id
string
Unique identifier for this player
firstName
string
First name of the player
lastName
string
Last name of the player
country
string
IOC (Olympic) country code for the player
Field Name
Type
Description
gameScores
array [object]
The scores in the completed match games
gamesA
int
Number of games won by TeamA
gamesB
int
Number of games won by TeamB
Field Name
Type
Description
pointsA
int
Number of points won by TeamA
pointsB
int
Number of points won by TeamB
Filed Name
Type
Description
competitionId
string
Unique identifier for this competition
participantType
string
Identifies the competition type e.g MD - Mens Doubles, LS - Ladies singles. There will be a draw object for each singles competition in the tournament and each doubles competition.
drawSize
int
Number of positions in the draw
entrySize
int
Number of teams in the draw (if not equal to drawSize then some teams will be given byes)
matches
array[object]
Array of Match objects describing the matches that are to be played
Field Name
Type
Description
eventId
string
Unique identifier for this match within the competition - to match this with the eventID returned in the /[id]/events end point you just need to concatenate it with the competitionID
round
int
(Knockout tournament only) Which round of the draw this match is in. The rounds work backwards, with 1 being the final, 2 being the semi finals, 3 the quarters etc
teamA
object
A team status object describing the first team taking part (if known)
teamB
object
A team status object describing the second team taking part (if known)
estimatedDate
date
Indicates the date when the match is likely to be played
estimatedTime
timestamp
Please be advised that this is merely a placeholder until the official Order of Play has been released and will be defaulted to 10am local time
Field Name
Type
Description
status
string
Indicates if the player detail is known for this team. Values are KnownTableTennisTeam, UnknownTableTennisTeam or Bye. For UnknownTableTennisTeam or Bye, no other fields will be present
team
object
A table tennis Team Object
Field Name
Type
Description
Player1
object
Player object containing details for the first player in the team
Player2
object
Player object containing details for the second player in the team. Only present if a doubles team
seed
int
This team’s seeding for the competition
entryType
string
This team’s entry type for the competition. Possible values are: Qualifier or Standard
The response format is the same as the one for the /tournaments/{id}/events
endpoint but provides information on specific competitions
Field Name
Type
Description
eventId
string
Unique identifier for this event
date
date
Date the match was played or is scheduled to be played
matchType
string
Code indicating the type of match: MS - Mens Singles, LS - Ladies Singles, MD - Mens Doubles, LD - Ladies Doubles, XD - Mixed Doubles. The above codes can be prefixed with ‘Q’ to indicate they are part of qualifying for the competition
status
string
The current status of the match, one of: NotStarted, InProgress, Suspended, Finished
tableNumber
string
The number table the match is being played on
teamA
object
Team Status object for the first team in the match
teamB
object
Team Status object for the second team in the match
startTime
object
startTime object indicating when the match is scheduled to start
competitonId
integer
Identifier for the competition
round
string
The round this event is being played in. In case of a qualifier event the round number is prepended with a ‘Q’, like “Q3”. Otherwise it’s simply a number, e.g. “3”. The rounds work backwards, with 1 being the final, 2 being the semi-finals, 3 the quarters etc
Field Name
Type
Description
status
string
Indicates if the player detail is known for this team. Values are KnownTableTennisTeam, UnknownTableTennisTeam or Bye. For UnknownTableTennisTeam or Bye, no other fields will be present
team
object
A table tennis Team Object
Field Name
Type
Description
Player1
object
Player object containing details for the first player in the team
Player2
object
Player object containing details for the second player in the team. Only present if a doubles team
seed
int
This team’s seeding for the competition
entryType
string
This team’s entry type for the competition. Possible values are: Qualifier or Standard
Field Name
Type
Description
time
timestamp
Contains either the start time for the match (generally if it’s the first match of the day on a court) or the earliest time it could start (e.g. if there is a rain delay and they know play will not start until midday) or an estimate of the start time based on the start time of the previous match
status
string
Indicates the type of information held for the start time.
StartsAt: The time in which the match is expected to start.
NotBefore: The time in which the match will not start before.
EstimatedStart: The time in which the match is estimated to start.
FollowsPrevious: The match will follow the previous match on the same court, therefore the time attributed with a 'Follows Previous' state is a rough estimate of the start time of that match.
NoInformation: No information available.
The response format is the same as the one of the /tournaments/{id}/draws endpoint.
A table tennis draw on the DDE is first of all defined by the draw type, with each competition in a table tennis tournament having its own draw.
For example, the majority of table tennis tournaments require one or more qualifying rounds, which typically take place over the weekend before the tournament week starting. On the DDE, a qualifying round can be identified by each match's specific event ID. Event IDs are explained in detail on this page.
We recommend that you request the https://dde-api.imggaming.com/tabletennis/competitions/{id}/draws
REST endpoint every minute so that you have the most up-to-date information on the draws from live/upcoming tournaments.
Filed Name
Type
Description
competitionId
string
Unique identifier for this competition
participantType
string
Identifies the competition type e.g MD - Mens Doubles, LS - Ladies singles. There will be a draw object for each singles competition in the tournament and each doubles competition.
drawSize
int
Number of positions in the draw
entrySize
int
Number of teams in the draw (if not equal to drawSize then some teams will be given byes)
matches
array[object]
Array of Match objects describing the matches that are to be played
Field Name
Type
Description
eventId
string
Unique identifier for this match within the competition - to match this with the eventID returned in the /[id]/events end point you just need to concatenate it with the competitionID
round
int
(Knockout tournament only) Which round of the draw this match is in. The rounds work backwards, with 1 being the final, 2 being the semi finals, 3 the quarters etc
teamA
object
A team status object describing the first team taking part (if known)
teamB
object
A team status object describing the second team taking part (if known)
estimatedDate
date
Indicates the date when the match is likely to be played
estimatedTime
timestamp
Please be advised that this is merely a placeholder until the official Order of Play has been released and will be defaulted to 10am local time
Field Name
Type
Description
status
string
Indicates if the player detail is known for this team. Values are KnownTableTennisTeam, UnknownTableTennisTeam or Bye. For UnknownTableTennisTeam or Bye, no other fields will be present
team
object
A table tennis Team Object
Field Name
Type
Description
Player1
object
Player object containing details for the first player in the team
Player2
object
Player object containing details for the second player in the team. Only present if a doubles team
seed
int
This team’s seeding for the competition
entryType
string
This team’s entry type for the competition. Possible values are: Qualifier or Standard
You can use the Table Tennis REST API to create calls to get the data you need to integrate with IMG Arena.
In addition to the basic packet fields undo packets have the following additional fields:
Field Name
JSON type
Description
game
int
The game in which the point was scored
scores
array (scores)
An array of the game scores up until this point
matchScore
array (match score)
An array of the current match score after correction
undoneEventSeqNums
array (number)
An array of the seqNum
s of packets undone by this correction
All packets have at least the following fields, and may have additional fields depending on the value of eventElementType
:
Field name
JSON type
Description
id
number
The unique match identifier
eventElementType
string
A discriminator field that can be used to identify the type of packet. Possible values:
PointScored
PointStarted
Correction
Injury
MatchStatusUpdate
PointScored
Sanction
Undo