---
title: "List loyalty programs"
method: GET
path: "/v1/loyalty_programs"
tags: ["Loyalty"]
---

# List loyalty programs

`GET /v1/loyalty_programs`

## Request

- Base URL: `https://yourbaseurl.talon.one`
- URL: `https://yourbaseurl.talon.one/v1/loyalty_programs`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `Authorization`
- TypeScript: <https://skmtc.dev/talon/apis/management-api/docs/v1/loyalty_programs/get.ts> (a function with typed inputs; its response is checked against the schema)

> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.

List the loyalty programs of the account.

## Response `200`

OK

- object
  - `totalResultSize` integer, required
  - `data` LoyaltyProgram[], required
    - `id` integer, required: The ID of loyalty program.
    - `created` string, date-time, required: The time this entity was created.
    - `title` string, required: The display title for the Loyalty Program.
    - `description` string, required: Description of our Loyalty Program.
    - `subscribedApplications` integer[], required: A list containing the IDs of all applications that are subscribed to this Loyalty Program.
    - `defaultValidity` string, required: The default duration after which new loyalty points should expire. Can be 'unlimited' or a specific time. The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported: - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day. - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
    - `defaultPending` string, required: The default duration of the pending time after which points should be valid. Accepted values: 'immediate', 'on_action' or a specific time. The time format is a number followed by one letter indicating the time unit, like '30s', '40m', '1h', '5D', '7W', or 10M'. These rounding suffixes are also supported: - '_D' for rounding down. Can be used as a suffix after 'D', and signifies the start of the day. - '_U' for rounding up. Can be used as a suffix after 'D', 'W', and 'M', and signifies the end of the day, week, and month.
    - `allowSubledger` boolean, required: Indicates if this program supports subledgers inside the program.
    - `usersPerCardLimit` integer: The max amount of user profiles with whom a card can be shared. This can be set to 0 for no limit. This property is only used when `cardBased` is `true`.
    - `sandbox` boolean, required: Indicates if this program is a live or sandbox program. Programs of a given type can only be connected to Applications of the same type.
    - `programJoinPolicy` 'not_join' | 'points_activated' | 'points_earned': The policy that defines when the customer joins the loyalty program. - `not_join`: The customer does not join the loyalty program but can still earn and spend loyalty points. **Note**: The customer does not have a program join date. - `points_activated`: The customer joins the loyalty program only when their earned loyalty points become active for the first time. - `points_earned`: The customer joins the loyalty program when they earn loyalty points for the first time.
    - `tiersExpirationPolicy` 'tier_start_date' | 'program_join_date' | 'customer_attribute' | 'absolute_expiration': The policy that defines how tier expiration, used to reevaluate the customer's current tier, is determined. - `tier_start_date`: The tier expiration is relative to when the customer joined the current tier. - `program_join_date`: The tier expiration is relative to when the customer joined the loyalty program. - `customer_attribute`: The tier expiration is determined by a custom customer attribute. - `absolute_expiration`: The tier is reevaluated at the start of each tier cycle. For this policy, it is required to provide a `tierCycleStartDate`.
    - `tierCycleStartDate` string, date-time: Timestamp at which the tier cycle starts for all customers in the loyalty program. **Note**: This is only required when the tier expiration policy is set to `absolute_expiration`.
    - `tiersExpireIn` string: The amount of time after which the tier expires and is reevaluated. The time format is an **integer** followed by one letter indicating the time unit. Examples: `30s`, `40m`, `1h`, `5D`, `7W`, `10M`, `15Y`. Available units: - `s`: seconds - `m`: minutes - `h`: hours - `D`: days - `W`: weeks - `M`: months - `Y`: years You can round certain units up or down: - `_D` for rounding down days only. Signifies the start of the day. - `_U` for rounding up days, weeks, months and years. Signifies the end of the day, week, month or year.
    - `tiersDowngradePolicy` 'one_down' | 'balance_based': The policy that defines how customer tiers are downgraded in the loyalty program after tier reevaluation. - `one_down`: If the customer doesn't have enough points to stay in the current tier, they are downgraded by one tier. - `balance_based`: The customer's tier is reevaluated based on the amount of active points they have at the moment.
    - `cardCodeSettings` CodeGeneratorSettings
      - `validCharacters` string[], required: List of characters used to generate the random parts of a code.
      - `couponPattern` string, required: The pattern used to generate codes, such as coupon codes, referral codes, and loyalty cards. The character `#` is a placeholder and is replaced by a random character from the `validCharacters` set.
    - `returnPolicy` 'only_pending' | 'within_balance' | 'unlimited': The policy that defines the rollback of points in case of a partially returned, cancelled, or reopened [customer session](https://docs.talon.one/docs/dev/concepts/entities/customer-sessions). - `only_pending`: Only pending points can be rolled back. - `within_balance`: Available active points can be rolled back if there aren't enough pending points. The active balance of the customer cannot be negative. - `unlimited`: Allows negative balance without any limit.
    - `accountID` integer, required: The ID of the Talon.One account that owns this program.
    - `name` string, required: The internal name for the Loyalty Program. This is an immutable value.
    - `tiers` LoyaltyTier[]: The tiers in this loyalty program.
      - `id` integer, required: The internal ID of this entity.
      - `created` string, date-time, required: The time this entity was created.
      - `programID` integer, required: The ID of the loyalty program that owns this entity.
      - `programName` string: The integration name of the loyalty program that owns this entity.
      - `programTitle` string: The Campaign Manager-displayed name of the loyalty program that owns this entity.
      - `name` string, required: The name of the tier.
      - `minPoints` number, required: The minimum amount of points required to enter the tier.
    - `timezone` string, required: A string containing an IANA timezone descriptor.
    - `cardBased` boolean, required: Defines the type of loyalty program: - `true`: the program is a card-based. - `false`: the program is profile-based.
    - `canUpdateTiers` boolean: `True` if the tier definitions can be updated.
    - `canUpdateTierExpirationPolicy` boolean: `True` if the tier expiration policy can be updated.
    - `canUpgradeToAdvancedTiers` boolean: `True` if the program can be upgraded to use the `tiersExpireIn` and `tiersDowngradePolicy` properties.
    - `canUpdateSubledgers` boolean: `True` if the `allowSubledger` property can be updated in the loyalty program.

---

[API](https://skmtc.dev/talon/apis/management-api.md) - [All operations](https://skmtc.dev/talon/apis/management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/talon/apis/management-api/revisions/7ef1b9504c3a?raw)
