RESTful API for accessing Vestigio route rankings and athlete data
https://vestigio.app
The Vestigio API provides programmatic access to route rankings, trial data, and athlete information. All endpoints return JSON responses and follow RESTful conventions.
Currently, the API endpoints are publicly accessible. Future versions may require API keys or OAuth authentication.
/api/ranking
Returns the complete ranking for a specific route, including all trial details and athlete information.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The route GUID (not the numeric ID) |
GET /api/ranking?id=abc123-def456-ghi789
Returns a JSON object with route information and an array of ranking entries.
{
"route": {
"id": 1,
"name": "Cerro San Cristóbal",
"description": "Ruta desde Plaza Italia hasta la cumbre",
"meters": 3500,
"minutes": 45,
"city": "Santiago",
"country": "Chile",
"guid": "abc123-def456-ghi789"
},
"ranking": [
{
"trialId": 123,
"seconds": 1845,
"timeFormatted": "00:30:45",
"startMillis": 1704067200000,
"endMillis": 1704069045000,
"daysOld": 5,
"valid": true,
"suspicious": false,
"discipline": "Running",
"user": {
"id": 45,
"guid": "user-guid-123",
"email": "athlete@example.com",
"publicName": "John Doe",
"alias": "SpeedRunner",
"gender": 1,
"age": 28,
"city": "Santiago",
"country": "Chile",
"instagram": "@speedrunner"
},
"startLocation": {
"id": 10,
"name": "Plaza Italia",
"latLong": "-33.4378,-70.6504",
"city": "Santiago",
"country": "Chile"
},
"endLocation": {
"id": 11,
"name": "Cerro San Cristóbal",
"latLong": "-33.4245,-70.6389",
"city": "Santiago",
"country": "Chile"
}
}
]
}
Missing required parameter
{
"error": "Missing routeId parameter"
}
Route not found
{
"error": "Route not found for id=abc123-def456-ghi789"
}
route (object) - Route informationranking (array) - Array of trial/ranking entries, sorted by time (fastest first)id (number) - Route numeric IDname (string) - Route namedescription (string) - Route descriptionmeters (number) - Route distance in metersminutes (number) - Estimated time in minutescity (string) - City where route is locatedcountry (string) - Country where route is locatedguid (string) - Route unique identifier (use this for API calls)trialId (number) - Trial IDseconds (number) - Elapsed time in secondstimeFormatted (string) - Formatted time (HH:MM:SS)startMillis (number) - Start timestamp in millisecondsendMillis (number) - End timestamp in millisecondsdaysOld (number) - Days since the trial was completedvalid (boolean) - Whether the trial is validsuspicious (boolean) - Whether the trial is flagged as suspiciousdiscipline (string|null) - Discipline name (e.g., "Running", "Cycling")user (object|null) - Athlete/user informationstartLocation (object|null) - Start location detailsendLocation (object|null) - End location detailsid (number) - User numeric IDguid (string) - User unique identifieremail (string) - User email addresspublicName (string) - Public display name (alias or email prefix)alias (string|null) - User alias/usernamegender (number) - Gender (0 = female, 1 = male)age (number) - User agecity (string|null) - User citycountry (string|null) - User countryinstagram (string|null) - Instagram handleid (number) - Location numeric IDname (string) - Location namelatLong (string) - Coordinates in "lat,lng" formatcity (string|null) - Citycountry (string|null) - Countryguid (not the numeric id) in API callsAdditional API endpoints will be documented here as they become available. Check back regularly for updates.
For questions, issues, or feature requests related to the API, please contact us.