> ## 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 form field by ID

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



## OpenAPI

````yaml /openapi.json get /v0/booking-form-fields/{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/booking-form-fields/{id}:
    get:
      tags:
        - BookingFormFields
      summary: Get a booking form field by ID
      description: >-
        Returns a single booking form field 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/BookingFormField'
        '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:
    BookingFormField:
      title: BookingFormField
      type: object
      properties:
        id:
          type: string
          description: >-
            The unique identifier of the field. Stable across the forms a field
            is used on. Use this as the `:id` when looking the field up.
        publicId:
          type: string
          description: >-
            A non-unique grouping key that correlates equivalent fields across
            forms and tickets. Informational only — not usable as a lookup
            `:id`.
        type:
          $ref: '#/components/schemas/BookingFormFieldType'
        name:
          type: string
          description: The default label of the field.
        nameByLocale:
          type: object
          additionalProperties:
            type: string
          description: >-
            Field label translated to multiple locales. Always includes the
            default name.
        description:
          type: string
          description: The default description of the field, if any.
        descriptionByLocale:
          type: object
          additionalProperties:
            type: string
          description: >-
            Field description translated to multiple locales. Present only when
            the field has a description.
        required:
          type: boolean
          description: Whether an answer to this field is required to complete a booking.
        options:
          type: array
          items:
            $ref: '#/components/schemas/BookingFormFieldOption'
          description: The selectable options, for choice fields (select, radio, checkbox).
        importContract:
          $ref: '#/components/schemas/BookingFormFieldImportContract'
      required:
        - id
        - type
        - name
        - nameByLocale
        - required
      additionalProperties: false
      description: >-
        A booking form field definition — the type, label, options, and
        required-ness of a single question a booker is asked.
      example:
        id: 6651a3e8f2b47c0019d3a8d4
        publicId: tshirt-size
        type: SELECT
        name: T-shirt size
        nameByLocale:
          en-GB: T-shirt size
        required: true
        options:
          - id: 6651a3e8f2b47c0019d3a8e1
            label: Small
            labelByLocale:
              en-GB: Small
          - id: 6651a3e8f2b47c0019d3a8e2
            label: Medium
            labelByLocale:
              en-GB: Medium
          - id: 6651a3e8f2b47c0019d3a8e3
            label: Large
            labelByLocale:
              en-GB: Large
    BookingFormFieldType:
      title: BookingFormFieldType
      type: string
      enum:
        - TEXT
        - TEXT_AREA
        - EMAIL
        - PHONE_NUMBER
        - ADDRESS
        - DATE
        - DURATION
        - SELECT
        - GROUP_SELECT
        - RADIO_BUTTONS
        - CHECK_BOXES
        - WAIVER
        - CUSTOM_COMPONENT
        - CHARITY_MARKETING_OPT_INS
        - HTML
      description: >-
        The type of a booking form field, determining how it is rendered and
        what answer it collects.
    BookingFormFieldOption:
      title: BookingFormFieldOption
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the option.
        label:
          type: string
          description: The default label of the option.
        labelByLocale:
          type: object
          additionalProperties:
            type: string
          description: >-
            Option label translated to multiple locales. Always includes the
            default label.
      required:
        - id
        - label
        - labelByLocale
      additionalProperties: false
      description: A selectable option on a choice field (select, radio, or checkbox).
    BookingFormFieldImportContract:
      title: BookingFormFieldImportContract
      type: object
      properties:
        placement:
          $ref: '#/components/schemas/ImportFieldPlacement'
        answerShape:
          $ref: '#/components/schemas/ImportAnswerShape'
        subKeys:
          type: array
          items:
            type: string
          description: >-
            Sub-ids for keyedValues answers (address sub-keys, group-select
            groups).
        optionValues:
          type: array
          items:
            type: string
          description: The exact tokens import validation accepts for choice fields.
        readId:
          type: string
          description: >-
            The id this field's answer surfaces under when reading bookings
            back, when it differs from the import id (e.g. `email` reads as
            `emailAddress`).
        format:
          type: string
          description: >-
            The accepted value pattern, for fields whose scalar has a strict
            shape (durations: `H:MM`, `M:SS`, or `H:MM:SS`).
        subKeyOptions:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Per-sub-key accepted tokens for keyed composites that constrain them
            (group selects). Addresses accept free text and carry no entry.
        subKeyReadIds:
          type: object
          additionalProperties:
            type: string
          description: >-
            For keyed answers whose sub-answers surface as flat per-sub-key
            fields on booking reads (addresses): import sub-key → the field id
            it reads back under (e.g. `addressLineCity` → `addressCity`).
      required:
        - placement
        - answerShape
      additionalProperties: false
      description: >-
        How to express an answer for this field in an import payload, and how to
        find it again on booking reads.
      example:
        placement: participant
        answerShape: keyedValues
        subKeys:
          - addressLine1
          - addressLine2
          - addressLineCity
          - addressLineCounty
          - addressLineCountry
          - addressLinePostcode
    ImportFieldPlacement:
      title: ImportFieldPlacement
      type: string
      enum:
        - participant
        - booker
      description: Where an import answer for this field belongs in the import payload.
    ImportAnswerShape:
      title: ImportAnswerShape
      type: string
      enum:
        - value
        - values
        - keyedValues
      description: The slot an import answer for this field uses.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````