Skip to content

Race Data

Read a race's aid stations, cutoffs and crew access

Every aid station and checkpoint of a distance: mile, per-pass cutoffs, crew, pacer and drop-bag access, hike-in, cell service and supplies, with the race policy applied. No key.

Method

GET

Path

/api/public/v1/events/{idOrSlug}/aid-stations

Authentication

None. Served from https://www.endurancehq.app with open CORS.

Caching

CDN 5 minutes, purged when the organizer edits stations.

Request

curl "https://www.endurancehq.app/api/public/v1/events/{idOrSlug}/aid-stations"

Path parameters

idOrSlugstring, required

Query schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "raceOptionId": {
      "description": "The distance. Without it, the event's only distance, else the event level.",
      "type": "string"
    }
  },
  "additionalProperties": false
}

Response

Success status: 200

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "timezone": {
          "description": "IANA zone the race's wall-clock times are stated in.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "slug",
        "name",
        "timezone"
      ],
      "additionalProperties": false
    },
    "raceOption": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The distance this answer is for; null for the event level."
    },
    "raceOptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "distance": {
            "type": [
              "number",
              "null"
            ]
          },
          "distanceUnit": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "distance",
          "distanceUnit"
        ],
        "additionalProperties": false
      },
      "description": "Every distance of the event, to ask per distance with raceOptionId."
    },
    "aidStations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "aid",
              "checkpoint"
            ]
          },
          "mile": {
            "type": [
              "number",
              "null"
            ]
          },
          "location": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "lat": {
                    "type": "number"
                  },
                  "lon": {
                    "type": "number"
                  }
                },
                "required": [
                  "lat",
                  "lon"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "cutoffs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "pass": {
                  "type": "number",
                  "description": "1 is the first visit; looped courses list each visit."
                },
                "local": {
                  "description": "Wall-clock time as the race states it, YYYY-MM-DDTHH:mm.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "at": {
                  "description": "The real instant (ISO 8601, UTC) in the event's time zone.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "elapsedSeconds": {
                  "description": "Elapsed race time, when the cutoff is stated that way.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "pass",
                "local",
                "at",
                "elapsedSeconds"
              ],
              "additionalProperties": false
            }
          },
          "crew": {
            "type": "object",
            "properties": {
              "allowed": {
                "type": "boolean"
              },
              "notes": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "allowed",
              "notes"
            ],
            "additionalProperties": false
          },
          "pacer": {
            "type": "object",
            "properties": {
              "allowed": {
                "type": "boolean"
              },
              "notes": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "allowed",
              "notes"
            ],
            "additionalProperties": false
          },
          "dropBag": {
            "type": "object",
            "properties": {
              "allowed": {
                "type": "boolean"
              },
              "notes": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "allowed",
              "notes"
            ],
            "additionalProperties": false
          },
          "vehicleAccess": {
            "type": [
              "string",
              "null"
            ]
          },
          "hikeIn": {
            "type": "boolean",
            "description": "No vehicle access: crews walk in."
          },
          "cellService": {
            "description": "reliable, spotty or none.",
            "type": [
              "string",
              "null"
            ]
          },
          "parkingNotes": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "contributors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "standing": {
                  "description": "What they are to the race, such as \"2025 finisher, Sunlight aid station volunteer\".",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "credit": {
                  "type": "string",
                  "description": "The credit line to show: \"Course notes by Jackson Strand, 2025 finisher, Sunlight aid station volunteer\"."
                },
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Fields their published corrections changed, such as crewNotes or durationMinutes."
                }
              },
              "required": [
                "name",
                "standing",
                "credit",
                "fields"
              ],
              "additionalProperties": false,
              "description": "Someone whose correction the race organizer reviewed and published."
            },
            "description": "People whose published corrections this item carries; credit them where it is shown."
          }
        },
        "required": [
          "id",
          "name",
          "kind",
          "mile",
          "location",
          "description",
          "cutoffs",
          "crew",
          "pacer",
          "dropBag",
          "vehicleAccess",
          "hikeIn",
          "cellService",
          "parkingNotes",
          "supplies",
          "contributors"
        ],
        "additionalProperties": false
      }
    },
    "attribution": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string",
          "const": "Endurance HQ"
        },
        "eventUrl": {
          "type": "string",
          "description": "The race's official site; link it wherever the data is shown."
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "standing": {
                "description": "What they are to the race, such as \"2025 finisher, Sunlight aid station volunteer\".",
                "type": [
                  "string",
                  "null"
                ]
              },
              "credit": {
                "type": "string",
                "description": "The credit line to show: \"Course notes by Jackson Strand, 2025 finisher, Sunlight aid station volunteer\"."
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Fields their published corrections changed, such as crewNotes or durationMinutes."
              }
            },
            "required": [
              "name",
              "standing",
              "credit",
              "fields"
            ],
            "additionalProperties": false,
            "description": "Someone whose correction the race organizer reviewed and published."
          },
          "description": "Everyone whose course corrections the organizer published for this race."
        }
      },
      "required": [
        "provider",
        "eventUrl",
        "contributors"
      ],
      "additionalProperties": false,
      "description": "Who to credit wherever this data is shown."
    }
  },
  "required": [
    "event",
    "raceOption",
    "raceOptions",
    "aidStations",
    "attribution"
  ],
  "additionalProperties": false
}