GPX Tracker API Documentation

Base URL: https://gpx.octal.be

Available Devices

Devices: moto1, moto2

/api/devices

Lists all available devices

curl -X GET "https://gpx.octal.be/api/devices"

Live Response:

{
  "path": "/api/devices",
  "value": [
    "moto1",
    "moto2"
  ]
}

/api/standing

Current race standings and device aliases

curl -X GET "https://gpx.octal.be/api/standing"

Live Response:

{
  "path": "/api/standing",
  "value": {
    "first": "moto1",
    "second": "moto2"
  }
}

/api/position/moto1

Current position of moto1

curl -X GET "https://gpx.octal.be/api/position/moto1"

Live Response:

{
  "path": "/api/position/moto1",
  "value": {
    "latitude": 49.61159896850586,
    "longitude": 3.22316837310791
  }
}

/api/position/moto2

Current position of moto2

curl -X GET "https://gpx.octal.be/api/position/moto2"

Live Response:

{
  "path": "/api/position/moto2",
  "value": {
    "latitude": 49.61592864990234,
    "longitude": 3.22189211845398
  }
}

/api/gap/time/first/second/racing

Time gap between first and second (racing format)

curl -X GET "https://gpx.octal.be/api/gap/time/first/second/racing"

Live Response:

{
  "path": "/api/gap/time/first/second/racing",
  "unit": "racing",
  "value": "00'54''"
}

/api/gap/time/moto1/moto2

Time gap between moto1 and moto2

curl -X GET "https://gpx.octal.be/api/gap/time/moto1/moto2"

Live Response:

{
  "path": "/api/gap/time/moto1/moto2",
  "unit": "s",
  "value": 54
}

/api/gap/distance/moto1/moto2

Distance gap between moto1 and moto2

curl -X GET "https://gpx.octal.be/api/gap/distance/moto1/moto2"

Live Response:

{
  "path": "/api/gap/distance/moto1/moto2",
  "unit": "km",
  "value": 0.5
}

/api/gap/distance/moto1/start

Distance from start for moto1

curl -X GET "https://gpx.octal.be/api/gap/distance/moto1/start"

Live Response:

{
  "path": "/api/gap/distance/moto1/start",
  "unit": "km",
  "value": 188.4
}

/api/gap/distance/moto2/start

Distance from start for moto2

curl -X GET "https://gpx.octal.be/api/gap/distance/moto2/start"

Live Response:

{
  "path": "/api/gap/distance/moto2/start",
  "unit": "km",
  "value": 187.9
}

/api/gap/distance/moto1/end

Distance to end for moto1

curl -X GET "https://gpx.octal.be/api/gap/distance/moto1/end"

Live Response:

{
  "path": "/api/gap/distance/moto1/end",
  "unit": "km",
  "value": 0.4
}

/api/gap/distance/moto2/end

Distance to end for moto2

curl -X GET "https://gpx.octal.be/api/gap/distance/moto2/end"

Live Response:

{
  "path": "/api/gap/distance/moto2/end",
  "unit": "km",
  "value": 0.9
}

/api/gap/distance/first/end

Distance to end for first place

curl -X GET "https://gpx.octal.be/api/gap/distance/first/end"

Live Response:

{
  "path": "/api/gap/distance/first/end",
  "unit": "km",
  "value": 0.4
}

/api/gap/distance/second/start

Distance from start for second place

curl -X GET "https://gpx.octal.be/api/gap/distance/second/start"

Live Response:

{
  "path": "/api/gap/distance/second/start",
  "unit": "km",
  "value": 187.9
}

/api/speed/moto1/mean/50

Mean speed for moto1 over 50 points

curl -X GET "https://gpx.octal.be/api/speed/moto1/mean/50"

Live Response:

{
  "path": "/api/speed/moto1/mean/50",
  "unit": "km/h",
  "value": 0
}

/api/speed/moto2/mean/50

Mean speed for moto2 over 50 points

curl -X GET "https://gpx.octal.be/api/speed/moto2/mean/50"

Live Response:

{
  "path": "/api/speed/moto2/mean/50",
  "unit": "km/h",
  "value": 0
}

/api/poi/elevation/moto1

Current elevation for moto1

curl -X GET "https://gpx.octal.be/api/poi/elevation/moto1"

Live Response:

{
  "path": "/api/poi/elevation/moto1",
  "unit": "m",
  "value": 44
}

/api/poi/elevation/moto2

Current elevation for moto2

curl -X GET "https://gpx.octal.be/api/poi/elevation/moto2"

Live Response:

{
  "path": "/api/poi/elevation/moto2",
  "unit": "m",
  "value": 42
}

/api/poi/slope/moto1

Current slope for moto1

curl -X GET "https://gpx.octal.be/api/poi/slope/moto1"

Live Response:

{
  "path": "/api/poi/slope/moto1",
  "unit": "%",
  "value": 1
}

/api/poi/slope/moto2

Current slope for moto2

curl -X GET "https://gpx.octal.be/api/poi/slope/moto2"

Live Response:

{
  "path": "/api/poi/slope/moto2",
  "unit": "%",
  "value": 0
}

Data refreshes every 5 seconds. Last update: 2026-01-26T23:41:50.986472Z