Intervals Developers
API Reference
Sign inGet API key
IntroductionAuthenticationErrorsPaginationRate LimitsIdempotency

Endpoints

GETYour organizationGETAll eventsGETRetrieve an eventPOSTCreate an eventGETAll registrationsPOSTRegister a participantGETAll recurrencesGETAll collectionsGETRetrieve a collectionGETEvents in a collection
Changelog
Sign inGet API key

Endpoints

Register a participant

Sign up a participant for an event run. The event is derived from the event run ID. Requires an Idempotency-Key header so retries never create duplicate registrations.

POST/registration
curl -X POST https://api.intervals.run/registration \
  -H "Authorization: Bearer INTERVALS_PARTNER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "eventRunId": "r41abc567def890",
    "email": "runner@example.com",
    "name": "Alex Johnson",
    "status": "confirmed"
  }'

Headers

Content-Typestringrequired

Must be application/json.

Idempotency-Keystringrequired

Required. Unique key that makes creation safe to retry — resending the same key replays the original result. UUID recommended.

Request Body

application/json

eventRunIdstringrequired

ID of the event run (distance) to register for

emailstringrequired

Participant email address

namestring

Participant display name

statusenum<string>required

Registration status (defaults to confirmed)

Available options: confirmed,cancelled,waitlist,refunded

paceGroupstring

Pace group / corral assignment. Must match a label the event declares (see the event's paceGroups); an unknown label is rejected with 422 INVALID_PACE_GROUP.

notesstring

Additional notes

Authorization

write:participants
{
  "data": {
    "participantId": "p89xyz345uvw678"
  }
}

What you can build

All registrationsAll recurrences

Request

curl -X POST https://api.intervals.run/registration \
  -H "Authorization: Bearer INTERVALS_PARTNER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "eventRunId": "r41abc567def890",
    "email": "runner@example.com",
    "name": "Alex Johnson",
    "status": "confirmed"
  }'

Response

{
  "data": {
    "participantId": "p89xyz345uvw678"
  }
}