---
title: "Public: get the currently applicable sale for an audience"
method: GET
path: "/api/marketing/sales/applicable"
tags: ["marketing"]
---

# Public: get the currently applicable sale for an audience

`GET /api/marketing/sales/applicable`

## Request

- Base URL: `https://app.luxalgo.com`
- URL: `https://app.luxalgo.com/api/marketing/sales/applicable`
- Auth: none declared
- TypeScript: <https://skmtc.dev/luxalgo/apis/luxalgo-public-api/docs/api/marketing/sales/applicable/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `audience` string
- `country` string

## Response `200`

Success. The payload is wrapped in the standard { data, errors } envelope.

- object
  - `data` object, required
    - `sale` object, nullable, required
      - `name` string, nullable, required
      - `intervalTagline` string, nullable, required
      - `stripeCouponIds` string[], required
      - `colorScheme` string, nullable, required
      - `beginDate` string, nullable, required
      - `endDate` string, nullable, required
      - `audiences` string[], required
      - `hasCountdown` boolean, required
      - `isPublic` boolean, required
      - `countries` string[], required
      - `id` string, required
      - `createdAt` string, required
      - `updatedAt` string, required
      - `heroTheme` string, nullable, required
      - `heroMode` string, nullable, required
      - `heroConfig` object, nullable, required
        - `home` object
          - `badge` string
          - `h1` string
          - `sub` string, nullable
          - `primaryCta` object
            - `label` string, required
            - `href` string, required
          - `secondaryCta` object, nullable
            - `label` string, required
            - `href` string, required
        - `pricing` object
          - `h1` string
          - `sub` string, nullable
          - `bonusTagline` string
          - `annualOnly` boolean
          - `ctaLabel` string
          - `discountFirst` boolean
        - `homePricing` object
          - `h1` string
          - `sub` string, nullable
        - `seasonal` object
          - `season` 'winter' | 'spring' | 'summer' | 'fall'
          - `accent` string
          - `emoji` string
        - `prelaunch` object
          - `enabled` boolean, required
          - `beginDate` string, nullable
          - `h1` string
          - `sub` string, nullable
          - `notifyTag` string
      - `perks` object, nullable, required
      - `phases` object[], required
        - `label` string, required
        - `displayPercent` number, required
        - `stripeCouponIds` string[], required
        - `beginDate` string, required
        - `id` string, required
        - `sortOrder` number, required
      - `banner` object, nullable, required
        - `content` string, required
        - `linkUrl` string, nullable, required
        - `colorScheme` string, nullable, required
        - `beginDate` string, nullable, required
        - `endDate` string, nullable, required
        - `audiences` string[], required
        - `isPublic` boolean, required
        - `countries` string[], required
        - `surface` 'bar' | 'hero_pill' | 'app_bar', required
        - `targetPathnames` string[], required
        - `id` string, required
        - `saleId` string, nullable, required
        - `createdAt` string, required
        - `updatedAt` string, required
    - `activePhase` object, nullable, required
      - `label` string, required
      - `displayPercent` number, required
      - `stripeCouponIds` string[], required
      - `beginDate` string, required
      - `id` string, required
      - `sortOrder` number, required
    - `effectiveStripeCouponIds` string[], required
  - `errors` unknown

## Other responses

- `400`: Validation error — errors[].details carries the zod issues.
- `500`: Unexpected server error.

## Changes

- **2026-09-10** `a67b5113ae70`: 1 info
  - added the required property `data/sale/anyOf[subschema #1]/perks` to the response with the `200` status
- **2026-09-09** `7a2524fbf3bf`: 1 info
  - added the optional property `data/sale/anyOf[subschema #1]/heroConfig/anyOf[subschema #1]/homePricing` to the response with the `200` status

[Operation history](https://skmtc.dev/luxalgo/apis/luxalgo-public-api/changes/api/marketing/sales/applicable/get.md)

---

[API](https://skmtc.dev/luxalgo/apis/luxalgo-public-api.md) - [All operations](https://skmtc.dev/luxalgo/apis/luxalgo-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/luxalgo/apis/luxalgo-public-api/revisions/226c2d642643?raw)
