> ## 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 event occurrences

> Returns a paginated list of event occurrences owned by your account.

Results are scoped to the organizer associated with your Public API credentials, so the per-item organizer block from the marketplace events endpoint is omitted.

Published and draft occurrences are both returned, discoverable or not, and past dates are included however old. The only occurrences omitted are those with no start date, which this response has no shape for.



## OpenAPI

````yaml /openapi.json get /v0/event-occurrences
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:
    get:
      tags:
        - EventOccurrences
      summary: List event occurrences
      description: >-
        Returns a paginated list of event occurrences owned by your account.


        Results are scoped to the organizer associated with your Public API
        credentials, so the per-item organizer block from the marketplace events
        endpoint is omitted.


        Published and draft occurrences are both returned, discoverable or not,
        and past dates are included however old. The only occurrences omitted
        are those with no start date, which this response has no shape for.
      parameters:
        - schema:
            type: string
            format: date
          in: query
          name: startDate[gte]
          required: false
          description: Minimum start date filter (inclusive) in YYYY-MM-DD format
        - schema:
            type: string
            format: date
          in: query
          name: startDate[lte]
          required: false
          description: Maximum start date filter (inclusive) in YYYY-MM-DD format
        - schema:
            type: string
            format: date-time
          in: query
          name: lastModified[gte]
          required: false
          description: >-
            Minimum last modified timestamp filter (inclusive) in ISO 8601
            format
        - schema:
            type: string
            format: date-time
          in: query
          name: lastModified[lte]
          required: false
          description: >-
            Maximum last modified timestamp filter (inclusive) in ISO 8601
            format
        - schema:
            type: integer
            minimum: 1
            maximum: 200
          in: query
          name: page[size]
          required: false
          description: >-
            The number of entries to return per page. Range between 1 - 200,
            defaults to 100.
        - schema:
            type: string
          in: query
          name: page[after]
          required: false
          description: >-
            Accepts an existing page cursor to return results after it. For more
            details see the definition of PageCursor in the response.
        - schema:
            type: string
          in: query
          name: page[before]
          required: false
          description: >-
            Accepts an existing page cursor to return results before it. For
            more details see the definition of PageCursor in the response.
        - schema:
            type: integer
            deprecated: true
            minimum: 1
            maximum: 200
          in: query
          name: pageSize
          required: false
          description: Maximum number of results to return. Use `page[size]` instead.
        - schema:
            type: string
            deprecated: true
          in: query
          name: cursor[before]
          required: false
          description: >-
            Cursor to paginate through results before a given value. Use
            `page[before]` instead.
        - schema:
            type: string
            deprecated: true
          in: query
          name: cursor[after]
          required: false
          description: >-
            Cursor to paginate through results after a given value. Use
            `page[after]` instead.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedOrganizerEventOccurrenceSummaries'
components:
  schemas:
    PagedOrganizerEventOccurrenceSummaries:
      title: PagedOrganizerEventOccurrenceSummaries
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OrganizerEventOccurrenceSummary'
        page:
          $ref: '#/components/schemas/PageCursor'
      required:
        - data
        - page
      additionalProperties: false
      description: A paginated list of an organizer's event occurrence summaries.
    OrganizerEventOccurrenceSummary:
      title: OrganizerEventOccurrenceSummary
      type: object
      properties:
        id:
          type: string
          description: Unique event occurrence identifier.
          example: '12345678901'
        title:
          type: string
          description: >-
            Default event title. Use `titleByLocale` for available translations
            in different locales.
          example: Example Half Marathon 2026
        titleByLocale:
          type: object
          additionalProperties:
            type: string
          description: >-
            Event title translated to multiple locales.


            Will always include the default title, and may also specify
            translations in a number of other locales.
          example:
            en-GB: Example Half Marathon 2026
            fr-FR: Exemple Semi-Marathon 2026
        tags:
          type: array
          items:
            type: string
          description: Categorization tags for the event
          example:
            - flat
            - charity-run
            - closed-roads
        content:
          $ref: '#/components/schemas/EventContent'
        startDate:
          type: string
          description: A plain date string representing the event's start date
        location:
          $ref: '#/components/schemas/EventLocation'
        images:
          $ref: '#/components/schemas/EventImages'
        priceRange:
          $ref: '#/components/schemas/PriceRange'
      required:
        - id
        - title
        - titleByLocale
        - tags
        - content
        - startDate
        - location
        - images
        - priceRange
      additionalProperties: false
      description: >-
        A lean summary of an event occurrence, returned in list contexts where
        the full occurrence payload is unnecessary. Currently identical to
        `OrganizerEventOccurrence`; it exists to pin the list shape so the full
        occurrence (returned by `GET /v0/event-occurrences/:id`) can grow
        independently without widening the list response.
      example:
        id: 66a2b3c4d5e6f708192a3b4c
        title: City River Run
        titleByLocale:
          en-US: City River Run
        tags:
          - running
          - 10k
          - road
        content:
          excerpt: A fast, welcoming city run along the riverfront.
          courseDetails: A mostly flat, single-loop course on closed roads.
          racedayLogistics: Packet pickup opens at 6:30 AM near the start line.
        startDate: '2026-10-18'
        location:
          coordinates:
            latitude: 45.5152
            longitude: -122.6784
          address:
            city: Portland
            formatted: Riverfront Park, Portland, OR, USA
            countryCode: US
            countryName: United States
            countyLine: Multnomah County
            postCode: '97204'
        images:
          hero: https://images.letsdothis.com/events/city-river-run/hero.jpg
          logo: https://images.letsdothis.com/events/city-river-run/logo.png
          all:
            - https://images.letsdothis.com/events/city-river-run/course.jpg
        priceRange:
          min:
            value: 6500
            currencyCode: USD
          max:
            value: 8500
            currencyCode: USD
    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
    EventContent:
      title: EventContent
      type: object
      properties:
        excerpt:
          type: string
          description: (Optional) HTML-formatted event description
        courseDetails:
          type: string
          description: (Optional) HTML-formatted course description
        racedayLogistics:
          type: string
          description: (Optional) HTML-formatted race day information
        travel:
          type: string
          description: (Optional) HTML-formatted travel information
        spectators:
          type: string
          description: (Optional) HTML-formatted spectator information
      additionalProperties: false
    EventLocation:
      title: EventLocation
      type: object
      properties:
        coordinates:
          type: object
          properties:
            latitude:
              type: number
              description: The latitude in degrees. In the range [-90.0, +90.0].
            longitude:
              type: number
              description: The longitude in degrees. In the range [-180.0, +180.0].
          additionalProperties: false
        address:
          type: object
          properties:
            city:
              type: string
            formatted:
              type: string
            countryCode:
              type: string
            countryName:
              type: string
            addressLine1:
              type: string
            addressLine2:
              type: string
            countyLine:
              type: string
            postCode:
              type: string
          additionalProperties: false
      required:
        - address
      additionalProperties: false
      description: Event location
      example:
        coordinates:
          latitude: 50.8398169
          longitude: -0.1460002
        address:
          city: Brighton
          formatted: Preston Park, Preston Rd, Brighton BN1 6SD, UK
          countryCode: GB
          countryName: United Kingdom
          countyLine: Brighton and Hove
          postCode: BN1 6SD
    EventImages:
      title: EventImages
      type: object
      properties:
        hero:
          type: string
          description: (Optional) Hero image URL for the event
        logo:
          type: string
          description: (Optional) Event logo URL
        all:
          type: array
          items:
            type: string
          description: >-
            All other image URLs associated with the event (excluding the hero
            image and event logo)
      required:
        - all
      additionalProperties: false
    PriceRange:
      title: PriceRange
      type: object
      properties:
        min:
          $ref: '#/components/schemas/Price'
        max:
          $ref: '#/components/schemas/Price'
      additionalProperties: false
    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" }_
    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

````