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

# Check whether an email is registered

> Answers whether an email address holds a confirmed place in the event occurrence.

Built for partners who need a yes/no at the point of sale — a sponsor validating a participant discount, for example — without access to any participant data. The response carries only the occurrence id and the answer, and an email that is not registered (or has never been seen) is simply `false`.

Only entries with a confirmed status count. Pending payment, deferred, withdrawn, cancelled, refunded and transferred entries answer `false`.

Send the email in the request body, not the URL. Matching is case-insensitive and ignores surrounding whitespace.

Supports [scoped API keys](/api-reference/scoped-keys): this is the `registrationStatus` endpoint, and it reads the occurrence from the path. A key limited by endpoint must include `registrationStatus`; a key limited by occurrence must include the occurrence in the path; a key limited by both must satisfy both.

This endpoint is rate limited per API key in two ways: a burst limit of a few requests per second, and a daily quota that bounds what one key can look up in 24 hours. Exceeding either answers `429`; the burst limit includes a `retry-after` header.



## OpenAPI

````yaml /openapi.json post /v0/event-occurrences/{id}/registration-status
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/event-occurrences/{id}/registration-status:
    post:
      tags:
        - EventOccurrences
      summary: Check whether an email is registered
      description: >-
        Answers whether an email address holds a confirmed place in the event
        occurrence.


        Built for partners who need a yes/no at the point of sale — a sponsor
        validating a participant discount, for example — without access to any
        participant data. The response carries only the occurrence id and the
        answer, and an email that is not registered (or has never been seen) is
        simply `false`.


        Only entries with a confirmed status count. Pending payment, deferred,
        withdrawn, cancelled, refunded and transferred entries answer `false`.


        Send the email in the request body, not the URL. Matching is
        case-insensitive and ignores surrounding whitespace.


        Supports [scoped API keys](/api-reference/scoped-keys): this is the
        `registrationStatus` endpoint, and it reads the occurrence from the
        path. A key limited by endpoint must include `registrationStatus`; a key
        limited by occurrence must include the occurrence in the path; a key
        limited by both must satisfy both.


        This endpoint is rate limited per API key in two ways: a burst limit of
        a few requests per second, and a daily quota that bounds what one key
        can look up in 24 hours. Exceeding either answers `429`; the burst limit
        includes a `retry-after` header.
      parameters:
        - schema:
            type: string
          example: '12345678901'
          in: path
          name: id
          required: true
          description: The ID of the event occurrence to query by.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrationStatusRequest'
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationStatus'
        '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
        '429':
          description: Rate limit exceeded
          headers:
            retry-after:
              schema:
                type: integer
              description: Seconds to wait before retrying the request.
            x-ratelimit-limit:
              schema:
                type: integer
              description: Requests permitted in the current window.
            x-ratelimit-remaining:
              schema:
                type: integer
              description: Requests still permitted in the current window.
            x-ratelimit-reset:
              schema:
                type: integer
              description: Seconds until the current window resets.
          content:
            application/json:
              schema:
                description: Rate limit exceeded
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 429
                  error:
                    type: string
                  message:
                    type: string
components:
  schemas:
    RegistrationStatusRequest:
      title: RegistrationStatusRequest
      type: object
      properties:
        email:
          type: string
          description: >-
            The participant's email address as entered at registration. Matching
            is case-insensitive and ignores surrounding whitespace.
          format: email
          maxLength: 254
          example: runner@example.com
      required:
        - email
      additionalProperties: false
      description: Ask whether an email address is registered for an event occurrence.
      example:
        email: runner@example.com
    RegistrationStatus:
      title: RegistrationStatus
      type: object
      properties:
        eventOccurrenceId:
          type: string
          description: The event occurrence the answer is for.
          example: '12345678901'
        registered:
          type: boolean
          description: >-
            `true` when the email holds at least one confirmed entry in the
            occurrence. Pending, deferred, withdrawn, cancelled, refunded and
            transferred entries do not count, and an email we have never seen is
            simply `false`.
      required:
        - eventOccurrenceId
        - registered
      additionalProperties: false
      description: >-
        Whether an email address holds a confirmed place in an event occurrence.
        Deliberately carries nothing about the participant beyond the answer.
      example:
        eventOccurrenceId: '12345678901'
        registered: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````