> ## Documentation Index
> Fetch the complete documentation index at: https://partner-help.letsdothis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List the races linked to a membership

> Returns the races linked to this membership, oldest first, including past and cancelled entries. Each entry has a source: RESERVED_PLACE (a place reserved for the member, such as a ballot entry, and the booking made from it) or MEMBER_BOOKING (a race booked with this membership, such as a free member entry). More sources may be added. Ordinary bookings and guest passes issued to other people are excluded. Claim status applies to reserved places and is separate from reservation and booking status. Each entry is one event, with eventTitle and eventDate; booking has its status and the race booked, and is null while a reserved place is unclaimed. Reservation codes, participant details and billing data are never returned.

> [!NOTE]
>
> This endpoint is in beta: its request and response contract can still change while it's being developed.


## OpenAPI

````yaml /openapi.json get /v0/memberships/{membershipId}/entries
openapi: 3.1.0
info:
  title: Let's Do This API
  version: 0.1.0
  description: >
    The full reference — getting started, pagination, error responses, rate
    limits and the changelog — lives at

    [partner-help.letsdothis.com/api-reference](https://partner-help.letsdothis.com/api-reference/overview).

    This page is the interactive OpenAPI view of the same specification.


    # Authentication


    Create an API key from **Settings** → **Credentials** in your Let's Do This
    account and send it as a bearer token:


    ```bash

    curl --request GET \
     --url "https://api.letsdothis.com/v0/participants" \
     --header "Authorization: Bearer YOUR-API-KEY"
    ```


    Keep the key secret: it identifies your organization, so do not ship it in a
    website or native app. If a key is exposed,

    revoke it from the same section and create a replacement.


    # OpenAPI schema


    Download the [OpenAPI schema](https://api.letsdothis.com/documentation/json)
    to use with Postman or an OpenAPI client

    generator.
servers:
  - url: https://api.letsdothis.com
    description: Production
  - url: https://api.staging.letsdothis.com
    description: Staging
security:
  - bearerAuth: []
tags:
  - name: Events
    x-group: Events
    description: Events that participants can register for.
  - name: EventOccurrences
    x-group: Event occurrences
    description: >-
      Event occurrences scoped to the organizer associated with your Public API
      credentials. Unlike the public Events catalog, results are limited to your
      own events.
  - name: Races
    x-group: Races
    description: >-
      Races within an event occurrence. An event occurrence may have one or more
      races, for example a 5K and a 10K within the same race day.
  - name: Tickets
    x-group: Tickets
    description: Tickets that are available for events.
  - name: BookingForms
    x-group: Booking forms
    description: >-
      Booking forms define the questions a booker answers when registering for a
      ticket. A ticket usually references a single booking form, so expect zero
      or one, while a booking form may be shared across multiple tickets.
  - name: BookingFormFields
    x-group: Booking form fields
    description: >-
      Booking form fields are the individual questions on a booking form — their
      type, label, options, and whether an answer is required. A field can be
      reused across multiple forms.
  - name: Bookings
    x-group: Bookings
    description: >-
      Bookings are the transaction record for a registration. A booking may
      contain one or more participants (entries).
  - name: Membership
    x-group: Memberships
    description: >-
      Membership schemes, purchased policies and the memberships on them, owned
      by your organizer. Policies are billing contracts; a membership is one
      person on a policy.
  - name: Participant
    x-group: Participants
    description: Participants are users who successfully booked an event.
  - name: LineItem
    x-group: Line items
    description: Financial details related to individual items within transactions.
  - name: AddOns
    x-group: Add-ons
    description: >-
      Organizer-owned products that can be purchased and allocated to
      participants. Imported products retain stable external identities.
  - name: DiscountCodes
    x-group: Discount codes
    description: >-
      Discount codes participants enter at checkout to reduce the price of a
      booking.
  - name: Credits
    x-group: Credits
    description: >-
      Credits are balances participants can spend at checkout, identified by
      their email address.
  - name: Referrals
    x-group: Referrals
    description: >-
      Referral programs, the referrers registered on them, and asynchronous
      imports of historical referrals.
  - name: Application
    x-group: Applications
    description: >-
      Applications are created when a user applies for tickets that are set up
      to require an application process, such as balloted or "Good For Age"
      entries.
  - name: Partner
    x-group: Partners
    description: >-
      Partners that were created by the organization who can have Reserved
      Entries assigned to them.
  - name: ReservedEntries
    x-group: Reserved entries
    description: >-
      Reserved Entries are entries that are reserved for a partner. After being
      assigned, the partner can then allocate these entries to participants.
  - name: Timing
    x-group: Timing
    description: >-
      Timing providers push bib numbers and bib-pack shipments back to Let's Do
      This for the startlist entries they received. Available to select timing
      partners only.
  - name: Identity
    x-group: API key
    description: >-
      What your API key can reach. Available to every key, including scoped
      ones.
paths:
  /v0/memberships/{membershipId}/entries:
    get:
      tags:
        - Membership
      summary: List the races linked to a membership
      description: >-
        Returns the races linked to this membership, oldest first, including
        past and cancelled entries. Each entry has a source: RESERVED_PLACE (a
        place reserved for the member, such as a ballot entry, and the booking
        made from it) or MEMBER_BOOKING (a race booked with this membership,
        such as a free member entry). More sources may be added. Ordinary
        bookings and guest passes issued to other people are excluded. Claim
        status applies to reserved places and is separate from reservation and
        booking status. Each entry is one event, with eventTitle and eventDate;
        booking has its status and the race booked, and is null while a reserved
        place is unclaimed. Reservation codes, participant details and billing
        data are never returned.
      parameters:
        - schema:
            type:
              - number
              - 'null'
            minimum: 1
            maximum: 500
            example: 100
          in: query
          name: page[size]
          required: false
          description: >-
            The number of entries to return per page. Range between 1 - 500,
            defaults to 100
        - schema:
            type:
              - string
              - 'null'
          in: query
          name: page[after]
          required: false
          description: >-
            Accepts an existing page cursor. For more details see the definition
            of PageCursor in the response.
        - schema:
            type:
              - string
              - 'null'
          in: query
          name: page[before]
          required: false
          description: >-
            Accepts an existing page cursor. For more details see the definition
            of PageCursor in the response.
        - schema:
            type: string
            pattern: ^[a-fA-F0-9]{24}$
          in: path
          name: membershipId
          required: true
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedMembershipEntries'
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - statusCode
                  - message
                properties:
                  code:
                    type: string
                    enum:
                      - MEMBERSHIP_RESOURCE_NOT_FOUND
                      - MEMBERSHIP_INVALID_REQUEST
                      - MEMBERSHIP_PORTAL_CONFIGURATION_REQUIRED
                      - MEMBERSHIP_BILLING_UNAVAILABLE
                      - MEMBERSHIP_FROZEN
                      - MEMBERSHIP_ALREADY_CANCELLED
                    description: >-
                      Stable error identifier. RESOURCE_NOT_FOUND covers missing
                      and foreign resources alike. INVALID_REQUEST covers
                      malformed input or fields that cannot be edited.
                      PORTAL_CONFIGURATION_REQUIRED requires account setup;
                      BILLING_UNAVAILABLE means billing cannot be resolved or
                      reached. FROZEN and ALREADY_CANCELLED are reserved for
                      future lifecycle writes.
                  statusCode:
                    type: integer
                  message:
                    type: string
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - statusCode
                  - message
                properties:
                  code:
                    type: string
                    enum:
                      - MEMBERSHIP_RESOURCE_NOT_FOUND
                      - MEMBERSHIP_INVALID_REQUEST
                      - MEMBERSHIP_PORTAL_CONFIGURATION_REQUIRED
                      - MEMBERSHIP_BILLING_UNAVAILABLE
                      - MEMBERSHIP_FROZEN
                      - MEMBERSHIP_ALREADY_CANCELLED
                    description: >-
                      Stable error identifier. RESOURCE_NOT_FOUND covers missing
                      and foreign resources alike. INVALID_REQUEST covers
                      malformed input or fields that cannot be edited.
                      PORTAL_CONFIGURATION_REQUIRED requires account setup;
                      BILLING_UNAVAILABLE means billing cannot be resolved or
                      reached. FROZEN and ALREADY_CANCELLED are reserved for
                      future lifecycle writes.
                  statusCode:
                    type: integer
                  message:
                    type: string
components:
  schemas:
    PagedMembershipEntries:
      title: PagedMembershipEntries
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/MembershipEntry'
        page:
          $ref: '#/components/schemas/PageCursor'
      required:
        - data
        - page
      additionalProperties: false
    MembershipEntry:
      title: MembershipEntry
      type: object
      properties:
        id:
          type: string
        membershipId:
          type: string
        source:
          $ref: '#/components/schemas/MembershipEntrySource'
        claimStatus:
          type:
            - string
            - 'null'
          enum:
            - CLAIMED
            - UNCLAIMED
            - null
          description: Reserved places only; null for member bookings.
        reservationStatus:
          anyOf:
            - $ref: '#/components/schemas/MembershipReservationStatus'
            - type: 'null'
          description: Reserved places only; null for member bookings.
        expiresAt:
          type:
            - string
            - 'null'
          description: When an unclaimed reserved place lapses; null for member bookings.
        eventId:
          type: string
        eventOccurrenceId:
          type: string
        eventTitle:
          type:
            - string
            - 'null'
        eventDate:
          type:
            - string
            - 'null'
          description: >-
            When the event starts: its earliest race. Null when no race has a
            date.
        booking:
          anyOf:
            - $ref: '#/components/schemas/MembershipEntryBooking'
            - type: 'null'
          description: The member's booking; null while a reserved place is unclaimed.
      required:
        - id
        - membershipId
        - source
        - claimStatus
        - reservationStatus
        - expiresAt
        - eventId
        - eventOccurrenceId
        - eventTitle
        - eventDate
        - booking
      additionalProperties: false
    PageCursor:
      title: PageCursor
      type: object
      properties:
        totalResults:
          type: number
          description: The total number of results available.
        first:
          type: string
          description: The cursor for the first page of results.
        last:
          type: string
          description: The cursor for the last page of results.
        prev:
          type: string
          description: The cursor for the previous page of results.
        next:
          type: string
          description: The cursor for the next page of results.
      required:
        - totalResults
        - first
        - last
        - prev
        - next
      additionalProperties: false
      description: >-
        **Cursor details for pagination**.

        - In scenarios with large amounts of data, it's common to return only a
        subset of data in a single request, known as a "page".

        - Most API responses include two objects: a 'data' object with the query
        results, and a 'PageCursor' object detailing the current page.

        - Cursors can be used to navigate to earlier or later pages in the set
        of results. For instance, passing the 'next' cursor from 'PageCursor'
        fetches the next set of results.

        - Cursors are base64 encoded strings.
      example:
        totalResults: 506
        first: >-
          eyJpZCI6IjYzOTljMjAwMTVkNjBhZTNmZjI4ZjI0YyIsInVwZGF0ZWRBdCI6IjIwMjItMTItMTRUMTI6MzA6NTkuMjE3WiJ9
        last: >-
          eyJpZCI6IjY1NGNkZDIxZDlhMTU3ODdiNzFkMTM0YSIsInVwZGF0ZWRBdCI6IjIwMjMtMTEtMTNUMTU6MTE6MTIuNzI0WiJ9
        prev: ''
        next: >-
          eyJpZCI6IjY0NzBkNTkwM2RjOWE5OWJhMTA0Y2ZhYiIsInVwZGF0ZWRBdCI6IjIwMjMtMTEtMTNUMTU6MTE6MTIuNjE4WiJ9
    MembershipEntrySource:
      title: MembershipEntrySource
      type: string
      enum:
        - RESERVED_PLACE
        - MEMBER_BOOKING
      description: >-
        Where a membership entry comes from: a place reserved for the member,
        such as a ballot entry, or a race booked with the membership, such as a
        free member entry. More sources may be added; skip entries whose source
        you don't handle.
    MembershipReservationStatus:
      title: MembershipReservationStatus
      type: string
      enum:
        - NOT_ALLOCATED
        - ALLOCATED
        - INVITATION_SENT
        - INVITATION_OPENED
        - COMPLETED
        - REVOKED
        - CANCELED
      description: >-
        Where the reserved place is in its lifecycle: not yet assigned
        (`NOT_ALLOCATED`), assigned to the member (`ALLOCATED`), invited
        (`INVITATION_SENT`, `INVITATION_OPENED`), booked (`COMPLETED`), or
        withdrawn (`REVOKED`, `CANCELED`). Use `claimStatus` and
        `booking.status` to tell whether the member actually holds an entry.
    MembershipEntryBooking:
      title: MembershipEntryBooking
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          description: The booking's status, for example `CONFIRMED` or `CANCELLED`.
        race:
          anyOf:
            - $ref: '#/components/schemas/MembershipEntryRace'
            - type: 'null'
          description: >-
            The race booked. A booking moved to another race in the event shows
            the race it's in now. Null when it can no longer be resolved.
      required:
        - id
        - status
        - race
      additionalProperties: false
    MembershipEntryRace:
      title: MembershipEntryRace
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        startDate:
          type:
            - string
            - 'null'
      required:
        - id
        - title
        - startDate
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.