Download OpenAPI specification:
Consumer-visible changes to the public API.
2026-07-02
GET /v0/event-occurrences now accepts the standard page[size], page[after], and page[before] query params, matching the other list endpoints. The legacy pageSize, cursor[after], and cursor[before] params continue to work but are deprecated. The response schema is renamed to PagedOrganizerEventOccurrenceSummaries; the previous EventOccurrencesResponse name remains as a deprecated alias.
2026-07-01
The races list (GET /v0/event-occurrences/{id}/races), the event tickets list (GET /v0/events/{id}/tickets), and the reserved entry groups list (GET /v0/events/{id}/reserved-entries) now return a page cursor alongside data and accept page[size], page[after] and page[before], matching the other list endpoints. All continue to return every item by default, so existing integrations are unaffected. The response schemas are renamed to PagedRaceSummaries, PagedTickets, and PagedReservedEntryGroups; the previous Races, Tickets, and ReservedEntryGroups schema names remain as deprecated aliases.
2026-07-01
You can retrieve an individual event occurrence with GET /v0/event-occurrences/{id}. Access is scoped to the organizer associated with your Public API credentials.
2026-06-30
GET /v0/races/{id} now includes eventOccurrenceId and eventId, so you can navigate from a race back to its event occurrence and event. These fields are returned on the single-race response; the race lists stay lean.
2026-06-30
You can retrieve an individual race with GET /v0/races/{id}. Access is scoped to the organizer that owns the race's event occurrence.
2026-06-30
You can look up which booking forms reference a given field with GET /v0/booking-form-fields/{id}/booking-forms. A field can be shared across many forms, so this returns a paginated list.
2026-06-30
You can read the individual questions on a booking form. Use GET /v0/booking-form-fields to list fields, GET /v0/booking-form-fields/{id} to fetch one, and GET /v0/booking-forms/{id}/fields to list the fields on a specific form. Each field exposes its type, label, options, and whether an answer is required.
2026-06-30
You can retrieve a single booking form with GET /v0/booking-forms/{id}, and traverse between tickets and their booking forms: GET /v0/tickets/{id}/booking-forms lists the booking forms a ticket uses (usually zero or one), and GET /v0/booking-forms/{id}/tickets lists the tickets that share a booking form.
2026-06-30
You can retrieve a single ticket with GET /v0/tickets/{id}, and list the tickets belonging to a race with GET /v0/races/{id}/tickets. Ticket titles now include a titleByLocale map, always seeded with the default (en-GB) title alongside any translations.
2026-06-01
You can retrieve races for an event occurrence. Use GET /v0/event-occurrences/{id}/races if your integration needs race-level data.
2026-05-26
Application responses include stand-alone notes added from the dashboard. Use the notes field on application responses to read notes that are not approval or rejection reasons.
2026-05-26
Participant responses include bookingSource. Use this field to distinguish bookings made through Let's Do This from participants imported from an external platform.
2026-05-22
Partner lookups can use givenGain as an external ID type. Use externalId=givenGain when you need to query partners by their GivenGain identifier.
2026-05-20
When ?features=teams is enabled, participant team objects include roles with the participant's team role descriptions.
2026-05-08
Requests with a malformed resource ID in the path (for example GET /v0/participants/not-a-valid-id) now return 404 Not Found instead of 500 Internal Server Error.
2026-04-14
Applications for tickets where donation is implied by the ticket include a synthetic hasDonated field, so integrations receive the same shape as tickets that ask the donation question directly.