Welcome to the Triathlon API
Developer Hub

Whether you are a researcher, media, or a fan, you'll find comprehensive guides and documentation to help you get up and running with the Triathlon API.

Read the docs Register & manage your app

Live Timing Standard v1 (deprecated)

This timing standard is no longer supported

Please see this page for the current version of this timing standard.

ITU requires two hosted xml outputs to facilitate live coverage.

  1. Leaderboard
  2. Splits (for each athlete)

Each page should be updated immediately on receiving data, allowing 30 seconds for manual corrections if needed. Splits for singular athlete is denominated via a unique id number in the url. This number should be start_number, athlete_id or itu_id.

The ITU server will be the only application accessing these pages. This will ensure minimal stress and allow very frequent updates. The server will be set to read every 5-15 seconds.

itu_id is the internal athlete id of the ITU and will be provided along with the start lists by the ITU TD. athlete_id is your internal id.

Validation

Timing pages can be validated at http://www.triathlon.org/site/timing_validator providing the following options:

URL: Your xml file location (hosted by you)
Select Type: "leaderboard" or "splits" (defaults to leaderboard)

XML Schemas

XML Schemas may be found at:
Leaderboard: http://www.triathlon.org/scripts/leaderboard_schema.xsd
Splits: http://www.triathlon.org/scripts/splits_schema.xsd

Leaderboard

All fields are required, itu_id and difference may be empty but must be present.

Sample: http://www.triathlon.org/scripts/leaderboard.xml. Url syntax is discretionary.

<?xml version="1.0" encoding="UTF-8"?>
<timing>
   <event_name>ITU World Triathlon Series Yokohama</event_name>
   <category>Elite Female</category> //Use ITU Naming - Elite Women, Junior Women, U23 Women
   <timing_point>Finish</timing_point>
  //Use this naming structure Swim Lap 1, Swim Exit, Transition 1, Bike Lap 1, Bike Lap 2, ..., Transition 2, Run Lap 1, ...,  Finish 
   <athlete>
      <start_num>2</start_num> //(bib number) Must be integer
      <athlete_id>202</athlete_id> //(Your database id) Must be integer 
      <itu_id>40887</itu_id>//(Provided with start list) Must be integer
      <name>Gwen Jorgensen</name>//Full Name First letters Capitalised
      <country>USA</country> //ISO 3 Digit Format Uppercase 
      <time>01:57:05</time>race time in 6 digit format (hh:mm:ss)
      <difference />//Required field even if blank 
   </athlete>
   <athlete>
      <start_num>4</start_num>
      <athlete_id>204</athlete_id>
      <itu_id />
      <name>Emma Moffatt</name>
      <country>AUS</country>
      <time>01:57:19</time>
      <difference>00:14</difference>//Difference to leader in 4 digit format (mm:ss). (No + sign) 
   </athlete>
</timing>

Splits

Sample url: http://www.triathlon.org/scripts/splits.xml?ath=4. Url syntax is discretionary but the use of an ath parameter is recommended.

This page provides sequential timing information from each published timing point for an individual athlete. All fields are required, itu_id and difference may be empty but must be present.

<?xml version="1.0" encoding="UTF-8"?>
<splits>
   <event_name>ITU World Triathlon Series Yokohama</event_name>
   <category>Elite Female</category>
   <athlete>
      <start_num>4</start_num>
      <athlete_id>204</athlete_id>
      <itu_id />
      <name>Emma Moffatt</name>
      <country>AUS</country>
      <timing_point>
         //Repeat this element for each lap
         <name>Swim - Lap1</name>
         <time>00:09:35</time>
         //Race time 6 Digit (HH:mm:ss)
         <lap_time>00:09:35</lap_time>
         //lap time 6 Digit (HH:mm:ss) (changed from 4 digit)
         <difference />
         <position>1</position>
         //Overall position at this point of the race
      </timing_point>
      <timing_point>
         <name>Finish (Run - Lap4)</name>
         <time>01:57:19</time>
         <lap_time>00:05:16</lap_time>
         <difference>00:14</difference>
         <position>2</position>
      </timing_point>
   </athlete>
</splits>