Links

*/times, reads and raw data

API with passings or detections (raw data timestamps) at virtual checkpoints respectively geofences, similar to a reader
  • Effortless detections with virtual timekeeping points (geofence) and with geolocations of participants. No timing hardware, no transponders.
  • Passings are recorded in a radius around the geofence. Set the radius in the setting of the data API of your event.
  • Flexibly adjust settings in between: add timekeeping points or change their locations of a running event or even of a past event, recalculate detections with new parameters.

Request

URL https://racemap.com/api/data/v1/:eventId/times Method GET

Optional query with id of a checkpoint

Response

Event object

Field
Description [unit]
Sample
name
Name of event
"Sample live | 100km Duathlon"
location
Location
"🇩🇪 Dresden"
startTime
Start time in UTC
"2022-03-09T07:00:03.201Z"
endTime
End time in UTC
"2022-03-09T14:59:38.201Z"
timekeepings
Array for checkpoint objects
starters
Array for participant objects

Checkpoint object

Field
Description
Sample
name
Name of virtual timekeeping point
"Split 5"
offset
Distance [m] along the shadowtrack
49222.81
id
Unique Racemap ID of timekeeping point
"_d15macicg"
position
Array with longitude, latitude, hight [m]
13.881129999, 51.075250000, 250

Participant object

Field
Description [unit]
Sample
id
Unique Racemap ID of participant
"61a2122f181c0a6c4bb5376e"
importId
User-defined ID with imported participant data, Generic API (importId) or RACE|RESULT API (Id)
"UniqueImportId_2" or "null" if no importId exists
startNumber
Bib number
"2"
name
Name
"CLV Megware"
times
Object for checkpoint arrays
null if no locations within startTime and endTime {} if there are locations but no detections

Checkpoint array

Description
Sample
Unique Racemap ID of timekeeping point, array for detection objects
_2hmv4wcsb

Detection object

Field
Description [unit]
Sample
time
Timestamp of detection in UTC
"2022-03-09T10:08:00.000Z"
distanceToSplit
Distance [m] of detection from timekeeping point
43.96

Sample response

{
"name": "Sample Event | 100km-Duathlon",
"location": "🇩🇪 Dresden",
"startTime": "2020-04-25T06:00:00.000Z",
"endTime": "2020-10-30T18:15:00.000Z",
"timekeepings": [
{
"name": "Start",
"offset": 0,
"id": "_t9kp7roge",
"position": [13.704099056608415, 51.02740202001082, 161]
},
{
"name": "Ruppendorf",
"offset": 29537.54,
"id": "_l7z9ygc3f",
"position": [13.599722542890463, 50.90910508578093, 377]
},
{
"name": "🕖",
"offset": 48150.06,
"id": "_xdbst6t0c",
"position": [13.633563734472718, 50.77911506210913, 570]
},
{
"name": "Bergwertung",
"offset": 49975.36,
"id": "_b31s55hd3",
"position": [13.623273503927214, 50.76995405256768, 743]
},
{
"name": "🕖",
"offset": 67682.87,
"id": "_a218n2064",
"position": [13.69125, 50.82612, 471]
},
{
"name": "Bergwertung",
"offset": 68805.8,
"id": "_l542jdzag",
"position": [13.697525647974043, 50.83382486871975, 603]
},
{
"name": "Finish",
"offset": 100314.54,
"id": "_muwe600tp",
"position": [13.704065646340139, 51.0271269953974, 164]
}
],
"starters": [
{
"id": "60a3b6791474227ee54a5bdf",
"importId": "UniqueImportId_1",
"startNumber": "01",
"name": "Konrad",
"times": null
},
{
"id": "60a3b679147422b72a4a5be0",
"importId": "UniqueImportId_2",
"startNumber": "02",
"name": "Jörg",
"times": {
"_t9kp7roge": [
{
"time": "2020-04-26T14:52:45.000Z",
"distanceToSplit": 11.46
},
{
"time": "2020-04-26T14:52:50.000Z",
"distanceToSplit": 12.61
},
{
"time": "2020-04-26T14:52:55.000Z",
"distanceToSplit": 22.52
},
{
"time": "2020-04-26T14:53:00.000Z",
"distanceToSplit": 38.67
}
],
"_l7z9ygc3f": [
{
"time": "2020-04-26T10:19:45.000Z",
"distanceToSplit": 20.36
},
{
"time": "2020-04-26T10:19:50.000Z",
"distanceToSplit": 26.4
}
],
"_xdbst6t0c": [
{
"time": "2020-04-26T11:30:35.000Z",
"distanceToSplit": 44.03
},
{
"time": "2020-04-26T11:30:40.000Z",
"distanceToSplit": 14.17
},
{
"time": "2020-04-26T11:30:45.000Z",
"distanceToSplit": 15.18
},
{
"time": "2020-04-26T11:30:50.000Z",
"distanceToSplit": 40.98
}
],
"_b31s55hd3": [
{
"time": "2020-04-26T11:41:00.000Z",
"distanceToSplit": 39.18
},
{
"time": "2020-04-26T11:41:05.000Z",
"distanceToSplit": 19.22
},
{
"time": "2020-04-26T11:41:10.000Z",
"distanceToSplit": 4.46
},
{
"time": "2020-04-26T11:41:15.000Z",
"distanceToSplit": 32.33
}
],
"_a218n2064": [
{
"time": "2020-04-26T13:00:20.000Z",
"distanceToSplit": 47.27
},
{
"time": "2020-04-26T13:00:25.000Z",
"distanceToSplit": 31.78
},
{
"time": "2020-04-26T13:00:30.000Z",
"distanceToSplit": 16.19
},
{
"time": "2020-04-26T13:00:35.000Z",
"distanceToSplit": 8.29
},
{
"time": "2020-04-26T13:00:40.000Z",
"distanceToSplit": 17.85
},
{
"time": "2020-04-26T13:00:45.000Z",
"distanceToSplit": 27.8
},
{
"time": "2020-04-26T13:00:50.000Z",
"distanceToSplit": 40.04
}
],
"_l542jdzag": [
{
"time": "2020-04-26T13:08:35.000Z",
"distanceToSplit": 40.64
},
{
"time": "2020-04-26T13:08:40.000Z",
"distanceToSplit": 26.12
},
{
"time": "2020-04-26T13:08:45.000Z",
"distanceToSplit": 12.82
},
{
"time": "2020-04-26T13:08:50.000Z",
"distanceToSplit": 4.25
},
{
"time": "2020-04-26T13:08:55.000Z",
"distanceToSplit": 15.45
},
{
"time": "2020-04-26T13:09:00.000Z",
"distanceToSplit": 30.58
},
{
"time": "2020-04-26T13:09:05.000Z",
"distanceToSplit": 46.71
}
],
"_muwe600tp": [
{
"time": "2020-04-26T08:20:25.000Z",
"distanceToSplit": 46.54
},
{
"time": "2020-04-26T08:20:30.000Z",
"distanceToSplit": 39.3
},
{
"time": "2020-04-26T14:50:35.000Z",
"distanceToSplit": 26.75
},
{
"time": "2020-04-26T14:50:40.000Z",
"distanceToSplit": 4.86
},
{
"time": "2020-04-26T14:50:45.000Z",
"distanceToSplit": 19.61
},
{
"time": "2020-04-26T14:52:45.000Z",
"distanceToSplit": 26.33
},
{
"time": "2020-04-26T14:52:55.000Z",
"distanceToSplit": 32.5
},
{
"time": "2020-04-26T14:53:00.000Z",
"distanceToSplit": 46.08
}
]
}
}
]
}

Sample response with id of checkpoint

Times array with detection objects

Field
Description [unit]
Sample
id
Unique Racemap ID of participant
"60a3b679147422b72a4a5be0"
importId
User-defined ID with imported participant data, Generic API (importId) or RACE|RESULT API (Id)
"UniqueImportId_2"
startNumber
Bib number
"02"
name
Name
"Jörg"
time
Timestamp of detection in UTC
"2022-03-09T10:08:00.000Z"
distanceToSplit
Distance [m] of detection from timekeeping point
16.19
{
"name": "Sample | 100km Duathlon",
"location": "🇩🇪 Dresden",
"startTime": "2020-04-25T06:00:00.000Z",
"endTime": "2020-10-30T18:15:00.000Z",
"timekeepingId": "_b31s55hd3",
"timekeepingName": "Bergwertung",
"times": [
{
"id": "60a3b679147422b72a4a5be0",
"importId": "UniqueImportId_2",
"startNumber": "02",
"name": "Jörg",
"time": "2020-04-26T11:41:00.000Z",
"distanceToSplit": 39.18
},
{
"id": "60a3b679147422b72a4a5be0",
"importId": "UniqueImportId_2",
"startNumber": "02",
"name": "Jörg",
"time": "2020-04-26T11:41:05.000Z",
"distanceToSplit": 19.22
},
{
"id": "60a3b679147422b72a4a5be0",
"importId": "UniqueImportId_2",
"startNumber": "02",
"name": "Jörg",
"time": "2020-04-26T11:41:10.000Z",
"distanceToSplit": 4.46
},
{
"id": "60a3b679147422b72a4a5be0",
"importId": "UniqueImportId_2",
"startNumber": "02",
"name": "Jörg",
"time": "2020-04-26T11:41:15.000Z",
"distanceToSplit": 32.33
},
{
"id": "60a3b67914742230ef4a5be2",
"importId": "UniqueImportId_3",
"startNumber": "03",
"name": "Leupold",
"time": "2020-05-01T10:34:45.000Z",
"distanceToSplit": 52.28
},
{
"id": "60a3b67914742230ef4a5be2",
"importId": "UniqueImportId_3",
"startNumber": "03",
"name": "Leupold",
"time": "2020-05-01T10:34:50.000Z",
"distanceToSplit": 27.7
},
{
"id": "60a3b67914742230ef4a5be2",
"importId": "UniqueImportId_3",
"startNumber": "03",
"name": "Leupold",
"time": "2020-05-01T10:34:55.000Z",
"distanceToSplit": 1.95
},
{
"id": "60a3b67914742230ef4a5be2",
"importId": "UniqueImportId_3",
"startNumber": "03",
"name": "Leupold",
"time": "2020-05-01T10:35:00.000Z",
"distanceToSplit": 31.06
},
{
"id": "60a3b67914742223014a5bea",
"importId": "UniqueImportId_11",
"startNumber": "11",
"name": "Michi",
"time": "2020-05-02T09:26:30.000Z",
"distanceToSplit": 50.33
},
{
"id": "60a3b679147422101b4a5be3",
"importId": "UniqueImportId_4",
"startNumber": "04",
"name": " KRad",
"time": "2020-05-02T09:26:35.000Z",
"distanceToSplit": 52.28
},
{
"id": "60a3b67914742223014a5bea",
"importId": "UniqueImportId_11",
"startNumber": "11",
"name": "Michi",
"time": "2020-05-02T09:26:40.000Z",
"distanceToSplit": 2.83
},
{
"id": "60a3b679147422101b4a5be3",
"importId": "UniqueImportId_4",
"startNumber": "04",
"name": " KRad",
"time": "2020-05-02T09:26:45.000Z",
"distanceToSplit": 2.92
},
{
"id": "60a3b679147422101b4a5be3",
"importId": "UniqueImportId_4",
"startNumber": "04",
"name": " KRad",
"time": "2020-05-02T09:26:50.000Z",
"distanceToSplit": 47.5
},
{
"id": "60a3b67914742207e84a5be7",
"importId": "UniqueImportId_8",
"startNumber": "08",
"name": " Richi",
"time": "2020-05-02T09:29:00.000Z",
"distanceToSplit": 9.65
},
{
"id": "60a3b679147422b9ba4a5beb",
"importId": "UniqueImportId_12",
"startNumber": "12",
"name": "Christoph",
"time": "2020-05-02T09:46:10.000Z",
"distanceToSplit": 22.24
},
{
"id": "60a3b67914742200964a5be8",
"importId": "UniqueImportId_9",
"startNumber": "09",
"name": "Jens",
"time": "2020-05-02T09:46:20.000Z",
"distanceToSplit": 23.42
},
{
"id": "60a3b679147422b9ba4a5beb",
"importId": "UniqueImportId_12",
"startNumber": "12",
"name": "Christoph",
"time": "2020-05-02T09:46:20.000Z",
"distanceToSplit": 32.36
},
{
"id": "60a3b67914742200964a5be8",
"importId": "UniqueImportId_9",
"startNumber": "09",
"name": "Jens",
"time": "2020-05-02T09:46:30.000Z",
"distanceToSplit": 25.51
},
{
"id": "60a3b679147422151c4a5be9",
"importId": "UniqueImportId_10",
"startNumber": "10",
"name": "Martin",
"time": "2020-05-02T09:46:50.000Z",
"distanceToSplit": 40.8
},
{
"id": "60a3b679147422151c4a5be9",
"importId": "UniqueImportId_10",
"startNumber": "10",
"name": "Martin",
"time": "2020-05-02T09:47:00.000Z",
"distanceToSplit": 5.78
},
{
"id": "60a3b679147422d55d4a5be4",
"importId": "UniqueImportId_5",
"startNumber": "05",
"name": "Basti",
"time": "2020-05-02T11:33:25.000Z",
"distanceToSplit": 36.56
},
{
"id": "60a3b679147422d55d4a5be4",
"importId": "UniqueImportId_5",
"startNumber": "05",
"name": "Basti",
"time": "2020-05-02T11:33:30.000Z",
"distanceToSplit": 13.6
},
{
"id": "60a3b679147422a4814a5be5",
"importId": "UniqueImportId_6",
"startNumber": "06",
"name": "Diddi Knoppers",
"time": "2020-05-02T12:47:25.000Z",
"distanceToSplit": 29.33
},
null
]
}

Export to RACE|RESULT

RACE|RESULT event settings: Main Window, Simple API
  • Type: Custom
  • Details: rawdata/addmanual
Settings create an API key to push external data to RACE|RESULT. The duration of the key is limited. Sample: https://api.raceresult.com/180472/G5XQYZKPIPU5J1RSCVIZ48QKVU5JIIJP
Data from Racemap */times API need be transferred to RACE|RESULT API format, e.g. with a python script:
Using this format virtual detections are imported in RACE|RESULT one by one.