> ## 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 discount code

> Returns one of your discount codes by ID, described with the same fields an import accepts. The `id` is the `discountCodeId` an import reports for the code. Codes belonging to another organizer, and deleted codes, return 404.

<Warning>This endpoint is restricted and not generally available: organizations that have not been enabled receive a `403`. Contact your Let's Do This representative if you'd like access.</Warning>


## OpenAPI

````yaml /openapi.json get /v0/discount-codes/{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/discount-codes/{id}:
    get:
      tags:
        - DiscountCodes
      summary: Get a discount code
      description: >-
        Returns one of your discount codes by ID, described with the same fields
        an import accepts. The `id` is the `discountCodeId` an import reports
        for the code. Codes belonging to another organizer, and deleted codes,
        return 404.
      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/DiscountCode'
        '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:
    DiscountCode:
      title: DiscountCode
      type: object
      properties:
        id:
          type: string
          description: The unique ID of the discount code.
        code:
          type: string
          description: The code participants enter at checkout, uppercased.
        group:
          type: string
          description: >-
            The internal code name: a free-form grouping label shown in the
            organizer dashboard and never seen by participants. Omitted when the
            code has none.
        description:
          type: string
          description: >-
            An internal description of the code, shown in the organizer
            dashboard.
        percentage:
          type: integer
          description: >-
            The percentage discount the code applies. Omitted for flat-rate
            codes.
        flatRate:
          type: integer
          description: >-
            The fixed discount the code applies, in the minor unit of the
            event's currency (e.g. pence, cents).
        maxValue:
          type: integer
          description: >-
            The maximum total value the code can discount, in the minor unit of
            the event's currency.
        startDate:
          $ref: '#/components/schemas/ISODate'
        expiresAt:
          $ref: '#/components/schemas/ISODate'
        firstBookingOnly:
          type: boolean
          description: Whether the code only applies to a booker's first booking.
        limitUsage:
          type: integer
          description: How many times the code can be used in total.
        limitUsagePerUser:
          type: integer
          description: How many times a single user can use the code.
        limitUsagePerTransaction:
          type: integer
          description: How many entries a single transaction can apply the code to.
        eventIds:
          type: array
          items:
            type: string
          description: >-
            The events the code is restricted to. Empty when it allows all of
            them.
        eventOccurrenceIds:
          type: array
          items:
            type: string
          description: >-
            The event occurrences the code is restricted to. Empty when it
            allows all of them.
        appliesTo:
          type: array
          items:
            $ref: '#/components/schemas/DiscountCodeAppliesTo'
          description: >-
            Which parts of the basket the code discounts. Omitted when the code
            is restricted to none of the categories this API names — an
            unrestricted code comes off the whole basket.
        appliesPer:
          $ref: '#/components/schemas/DiscountCodeAppliesPer'
        createdAt:
          $ref: '#/components/schemas/ISODate'
      required:
        - id
        - code
        - eventIds
        - eventOccurrenceIds
        - appliesPer
      additionalProperties: false
      description: A discount code belonging to your organizer.
      example:
        id: 661718293a4b5c6d7e8f901a
        code: FLEETFEET5
        group: fleet-feet-2026
        description: Fleet Feet post-race in-store incentive
        flatRate: 500
        maxValue: 500
        startDate: '2026-09-01T00:00:00.000Z'
        expiresAt: '2026-12-31T23:59:59.000Z'
        limitUsage: 1
        limitUsagePerUser: 1
        eventIds: []
        eventOccurrenceIds:
          - '21111177799'
        appliesTo:
          - TICKETS
        appliesPer: TRANSACTION
        createdAt: '2026-08-01T09:15:00.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'
    DiscountCodeAppliesTo:
      title: DiscountCodeAppliesTo
      type: string
      enum:
        - TICKETS
        - BOOKING_FEE
        - MERCH_AND_ADDONS
        - FORM_ITEMS
        - MEMBERSHIPS
      description: >-
        The part of the basket a discount code applies to. These are the same
        categories the organizer dashboard offers, so a code created through the
        API and one created in the dashboard describe themselves the same way.


        `MERCH_AND_ADDONS` covers every merchandise and add-on category;
        `FORM_ITEMS` covers the remaining booking form items.
    DiscountCodeAppliesPer:
      title: DiscountCodeAppliesPer
      type: string
      enum:
        - TRANSACTION
        - ENTRY
      description: >-
        How often a discount code comes off a basket. These are the same two
        options the organizer dashboard offers as its discount type.


        `TRANSACTION` discounts the basket once, however many entries it holds.
        `ENTRY` discounts each participant's entry separately, so a basket of
        three entries is discounted three times.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````