API Reference Changelog

Let's Do This API — Changelog (0.1.0)

Download OpenAPI specification:

Consumer-visible changes to the public API.

July 2026

Standardise event-occurrences list pagination

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.


Paginate the races, tickets, and reserved-entry-groups lists

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.


Read a single event occurrence

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.


June 2026

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.


Read a single race

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.


Find the booking forms that use a field

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.


Read booking form fields

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.


Read booking forms

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.


Read individual tickets and a race's tickets

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.


Races by event occurrence

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.


May 2026

Application notes

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.

Participant booking source

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.

GivenGain partner lookup

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.

Team roles on participants

2026-05-20

When ?features=teams is enabled, participant team objects include roles with the participant's team role descriptions.

Clearer errors for invalid IDs

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.


April 2026

Implied donation field on applications

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.


March 2026

Charity opt-in partner names

2026-03-11

Participant charityOptIn values return partner names instead of opaque partner IDs where the partner can be resolved.