> ## 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 participants by their answer to a booking form field

> Returns confirmed participants whose answer to a booking form field matches the supplied value. Each result includes participant identity details and the matched answer.

Specify the field's public ID and an exact `value`, including any surrounding whitespace. Matching uses the public ID stored with each participant's answer. If multiple fields share that public ID, an answer to any of them can match. No matching answers returns an empty list.

For example, use a marketing opt-in field and its affirmative answer to find participants who opted in.



## OpenAPI

````yaml /openapi.json get /v0/event-occurrences/{id}/form-field-responses/{publicId}
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/event-occurrences/{id}/form-field-responses/{publicId}:
    get:
      tags:
        - Participant
      summary: List participants by their answer to a booking form field
      description: >-
        Returns confirmed participants whose answer to a booking form field
        matches the supplied value. Each result includes participant identity
        details and the matched answer.


        Specify the field's public ID and an exact `value`, including any
        surrounding whitespace. Matching uses the public ID stored with each
        participant's answer. If multiple fields share that public ID, an answer
        to any of them can match. No matching answers returns an empty list.


        For example, use a marketing opt-in field and its affirmative answer to
        find participants who opted in.
      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: Use page.next from the previous response to fetch the next page.
        - schema:
            type:
              - string
              - 'null'
          in: query
          name: page[before]
          required: false
          description: Use page.prev from the previous response to fetch the previous page.
        - schema:
            type:
              - string
              - 'null'
            enum:
              - '1'
              - '-1'
              - null
            example: '1'
          in: query
          name: sort[updatedAt]
          required: false
          description: Sort by update date. 1 for ascending, -1 for descending.
        - schema:
            type:
              - string
              - 'null'
            enum:
              - '1'
              - '-1'
              - null
            example: '1'
          in: query
          name: sort[createdAt]
          required: false
          description: Sort by creation date. 1 for ascending, -1 for descending.
        - schema:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-01-01T20:15:00.000Z'
          in: query
          name: createdAt[after]
          required: false
          description: Only return entries created after this date.
        - schema:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-01-01T20:15:00.000Z'
          in: query
          name: createdAt[before]
          required: false
          description: Only return entries created before this date.
        - schema:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-01-01T20:15:00.000Z'
          in: query
          name: updatedAt[after]
          required: false
          description: Only return entries updated after this date.
        - schema:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-01-01T20:15:00.000Z'
          in: query
          name: updatedAt[before]
          required: false
          description: Only return entries updated before this date.
        - schema:
            type: string
            minLength: 1
            example: Opt-in
          in: query
          name: value
          required: true
          description: >-
            The exact recorded answer to match, including any surrounding
            whitespace. Use the stored value or option key, which may differ
            from the displayed label. Blank values are rejected.
        - schema:
            type: string
          example: '12345678901'
          in: path
          name: id
          required: true
          description: The ID of the event occurrence to query by.
        - schema:
            type: string
          example: marketingOptIn
          in: path
          name: publicId
          required: true
          description: >-
            The public ID the organizer gave the booking form field, as a
            participant's `fields` report it.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedFormFieldRespondents'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                description: Bad request
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 400
                  error:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Unauthorized
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 401
                  error:
                    type: string
                  message:
                    type: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Forbidden
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 403
                  error:
                    type: string
                  message:
                    type: string
        '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:
    PagedFormFieldRespondents:
      title: PagedFormFieldRespondents
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/FormFieldRespondent'
        page:
          type: object
          properties:
            totalResults:
              type: number
              description: The exact total number of matching participants.
            prev:
              type: string
              description: >-
                Cursor for the previous page, or an empty string if there is
                none.
            next:
              type: string
              description: Cursor for the next page, or an empty string if there is none.
          required:
            - totalResults
            - prev
            - next
          additionalProperties: false
      required:
        - data
        - page
      additionalProperties: false
      description: >-
        A cursor-paginated list of participants whose answer to one booking form
        field matched.
    FormFieldRespondent:
      title: FormFieldRespondent
      type: object
      properties:
        participantId:
          type:
            - string
            - 'null'
          description: >-
            Stable identifier for the participant, as used elsewhere in this
            API.
        firstName:
          type:
            - string
            - 'null'
        lastName:
          type:
            - string
            - 'null'
        emailAddress:
          type:
            - string
            - 'null'
          format: email
        eventOccurrenceId:
          type:
            - string
            - 'null'
        publicId:
          type: string
          description: The public ID of the field that was matched, as you asked for it.
        fieldName:
          type:
            - string
            - 'null'
        value:
          type: string
          description: The participant's recorded answer. Always the value you filtered on.
        createdAt:
          anyOf:
            - $ref: '#/components/schemas/ISODate'
            - type: 'null'
        updatedAt:
          anyOf:
            - $ref: '#/components/schemas/ISODate'
            - type: 'null'
      required:
        - participantId
        - firstName
        - lastName
        - emailAddress
        - eventOccurrenceId
        - publicId
        - fieldName
        - value
        - createdAt
        - updatedAt
      additionalProperties: false
      description: >-
        A participant's identity details and matched answer to one booking form
        field. Other booking form answers are not included.
      example:
        participantId: 7d22e97f-b583-4e5b-a2bb-1b927f826a32
        firstName: John
        lastName: Runner
        emailAddress: john@invalid.test
        eventOccurrenceId: '21111177561'
        publicId: marketingOptIn
        fieldName: Marketing updates
        value: Opt-in
        createdAt: '2026-05-12T16:45:00.000Z'
        updatedAt: '2026-05-12T16:45:03.000Z'
    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'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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