> ## 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.

# Get a booking by ID

> Returns a single booking by ID if it belongs to the organizer associated with your Public API credentials.



## OpenAPI

````yaml /openapi.json get /v0/bookings/{id}
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: 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.
paths:
  /v0/bookings/{id}:
    get:
      tags:
        - Bookings
      summary: Get a booking by ID
      description: >-
        Returns a single booking by ID if it belongs to the organizer associated
        with your Public API credentials.
      parameters:
        - schema:
            type: string
          example: '67123'
          in: path
          name: id
          required: true
          description: The ID of the resource to query by
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Booking'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                description: Not found
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 404
                  error:
                    type: string
                  message:
                    type: string
components:
  schemas:
    Booking:
      title: Booking
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the booking.
          example: 6399c20015d60ae3ff28f24c
        externalBookingId:
          type: string
          description: >-
            The caller's own correlation id, present on bookings created through
            the import API.
          example: ORD-100234
        externalOrderId:
          type: string
          description: >-
            The caller's own order id, present on imported bookings that were
            part of an order. Every booking of that order carries the same one,
            so bookings sharing it were one purchase.
          example: ORDER-4471
        status:
          $ref: '#/components/schemas/BookingStatus'
        source:
          $ref: '#/components/schemas/BookingSource'
        booker:
          anyOf:
            - $ref: '#/components/schemas/Booker'
            - type: 'null'
          description: The booker — the person who made the booking.
        eventId:
          type: string
          description: The event the booking belongs to.
          example: '2365756'
        eventOccurrenceId:
          type: string
          description: The event occurrence the booking belongs to.
          example: 6399c11c58f29f001ca95935
        ticketId:
          type: string
          description: The ticket the booking was made against.
          example: 6399c11c58f29f001ca95934
        bookedAt:
          $ref: '#/components/schemas/ISODate'
        createdAt:
          $ref: '#/components/schemas/ISODate'
        updatedAt:
          $ref: '#/components/schemas/ISODate'
        transactionId:
          type: string
          description: The payment transaction id, if any.
          example: 6399c20015d60ae3ff28f24e
        amount:
          anyOf:
            - $ref: '#/components/schemas/Price'
            - type: 'null'
          description: The total amount paid for the booking.
        tracking:
          type: object
          properties:
            utmParams:
              $ref: '#/components/schemas/UtmParams'
          additionalProperties: false
          description: Digital marketing tracking parameters.
        bookingReference:
          type: string
          description: A stable, human-readable booking reference.
          example: br_K9F3P7W2QX5T
        participantCount:
          type: number
          description: The number of participants (entries) in the booking.
        gdprRedacted:
          type: boolean
      required:
        - id
        - status
        - booker
        - ticketId
        - createdAt
        - updatedAt
        - amount
        - participantCount
        - gdprRedacted
      additionalProperties: false
      description: >-
        A booking — the transaction record for a registration. A booking may
        contain one or more participants (entries); read them via `GET
        /v0/bookings/{id}/participants`.
    BookingStatus:
      title: BookingStatus
      type: string
      enum:
        - CONFIRMED
        - CANCELLED
        - WITHDRAWN
        - DEFERRED
        - PENDING
        - REFUNDED
        - REFUNDING
        - TO_BE_TRANSFERRED
        - TRANSFERRED_EVENTS
        - TRANSFERRED_TO_CREDIT
        - FAILED
      description: >-
        The booking status. This field will contain one of the following values:

        - CONFIRMED — The user has the application or registration fully
        confirmed.


        For an application, this means the user is allowed to register for the
        event.


        For a registration, this means the user has paid and is fully registered
        for the event.

        - CANCELLED — The booking has been cancelled.


        For an application, this means the user is not allowed to register for
        the event.


        For a registration, this indicates that the user's entry has been
        cancelled, and they should not be allowed to participate in the event.

        - WITHDRAWN — The user has withdrawn their application or registration.


        For an application, this means the user is not allowed to register for
        the event.


        For a registration, this indicates that the user has withdrawn their
        registration and should not be allowed to participate in the event.


        **Opt in with `?features=withdrawn_status`** to receive this value on a
        participant's status. Without the feature, a withdrawn participant is
        reported as `CANCELLED` for backwards compatibility. This gate applies
        only to participant status — a booking's own `status` always reports
        `WITHDRAWN`.

        - DEFERRED — The user has deferred their application or registration.


        This is semantically equivalent to CANCELLED and WITHDRAWN, with the
        distinction that the user is allowed to register for the event in the
        future.

        - PENDING — The application or registration is not yet confirmed.


        For an application, this means that manual approval or a ballot draw is
        pending to conclude the application's final status.


        For a registration, this indicates that the registration process is not
        yet finalized. The user has been refunded for their registration.

        - REFUNDED — The user has been refunded for their registration.

        - REFUNDING — The user is in the process of being refunded for their
        registration.

        - TO_BE_TRANSFERRED — The user has requested a transfer of their
        registration, but the transfer has not yet been confirmed.

        - TRANSFERRED_EVENTS — The user has transferred their registration to
        another event.

        - TRANSFERRED_TO_CREDIT — The user has transferred their registration to
        credit on their account.

        - FAILED — The application was rejected (either manually or through
        ballot failure), as opposed to being cancelled by either the participant
        or the organizer, or withdrawn by the participant.
    BookingSource:
      title: BookingSource
      type: string
      enum:
        - INTERNAL
        - EXTERNAL
        - API
      description: |-
        How this booking originated.
        - `INTERNAL` — booked through Let's Do This.
        - `EXTERNAL` — imported from a third-party platform.
        - `API` — imported by the organizer via the Public API.
    Booker:
      title: Booker
      type: object
      properties:
        firstName:
          type: string
          description: The first name of the booker.
          example: Jean-Luc
        lastName:
          type: string
          description: The last name of the booker.
          example: Picard
        email:
          type: string
          description: The email address of the booker.
          example: jean@earlgrey.com
        phone:
          type: string
          description: The phone number of the booker.
          example: +44 7700 900000
        companyName:
          type: string
          description: The company name of the booker.
          example: Starfleet
        address:
          $ref: '#/components/schemas/BookerAddress'
        miscFields:
          type: array
          items:
            $ref: '#/components/schemas/BookerMiscField'
          description: Additional custom fields for the booker.
      required:
        - firstName
        - lastName
        - email
        - phone
        - companyName
        - address
        - miscFields
      additionalProperties: false
      description: Contact information for the person who made a booking.
      example:
        firstName: Jean-Luc
        lastName: Picard
        email: jean@earlgrey.com
        companyName: Starfleet
        address:
          line1: 1701 Enterprise Ave
          line2: ''
          city: San Francisco
          county: San Francisco
          country: US
          postcode: '94101'
        miscFields: []
    ISODate:
      title: ISODate
      type: string
      description: >-
        Represents a date and time in ISO 8601 format as a string.


        The string should follow the format `YYYY-MM-DDTHH:mm:ss.sssZ`, where:

        - `YYYY`: Four-digit year

        - `MM`: Two-digit month (01-12)

        - `DD`: Two-digit day of the month (01-31)

        - `T`: Delimiter indicating the start of the time component

        - `HH`: Two-digit hour in 24-hour format (00-23)

        - `mm`: Two-digit minutes (00-59)

        - `ss.sss`: Seconds with milliseconds (00.000-59.999)

        - `Z`: UTC timezone designator


        **Example:** To represent 11:30 AM on May 8th, 2026, the value would be:
        `"2026-05-08T11:30:00.000Z"`.
      example: '2026-05-08T11:30:00.000Z'
    Price:
      title: Price
      type: object
      properties:
        value:
          $ref: '#/components/schemas/PriceValue'
        currencyCode:
          $ref: '#/components/schemas/CurrencyCode'
      required:
        - value
        - currencyCode
      additionalProperties: false
      description: >-
        A monetary value in 100x base unit format. For example, 1 GBP is
        represented as: _{ "value": 100, "currencyCode": "GBP" }_


        And 5 cents are represented as: _{ "value": 5, "currencyCode": "USD" }_
    UtmParams:
      title: UtmParams
      type: object
      properties:
        utmSource:
          type: string
          description: The source that referred the user.
          example: newsletter
        utmMedium:
          type: string
          description: The medium that referred the user.
          example: email
        utmCampaign:
          type: string
          description: The campaign that referred the user.
          example: bank-holiday
      additionalProperties: false
      description: Specifies the UTM parameters associated with a booking or application.
    BookerAddress:
      title: BookerAddress
      type: object
      properties:
        line1:
          type: string
        line2:
          type: string
        city:
          type: string
        county:
          type: string
        country:
          type: string
        postcode:
          type: string
      required:
        - line1
        - line2
        - city
        - county
        - country
        - postcode
      additionalProperties: false
    BookerMiscField:
      title: BookerMiscField
      type: object
      properties:
        fieldId:
          type: string
        fieldName:
          type: string
        value:
          type: string
      required:
        - fieldId
        - fieldName
        - value
      additionalProperties: false
    PriceValue:
      title: PriceValue
      type: number
      description: >-
        A monetary value in 100x base unit format. For example, 1 GBP is
        represented as: 100, and 5 cents are represented as: 5
      example: 5000
    CurrencyCode:
      title: CurrencyCode
      type: string
      enum:
        - AUD
        - CAD
        - DKK
        - EUR
        - GBP
        - INR
        - MXN
        - PHP
        - USD
        - ZERO
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````