---
title: "List programs"
method: GET
path: "/v2/loyalties/programs"
tags: ["Programs"]
---

# List programs

`GET /v2/loyalties/programs`

<Info>

<Badge color="gray">Documentation in progress</Badge>

This documentation is in progress. The parameters, fields, request and response bodies, and other data may be subject to change. If you need more information or you want to share feedback, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.

</Info>

Returns a cursor-paginated list of loyalty programs. Supports filtering by `id`, `name`,
`status` and `created_at`. The same field cannot be used in both ascending and descending
order at once.

## Query parameters

- `filters` ProgramListFilters — Filters accepted by the program list endpoint.
  - `junction` 'AND' | 'OR', nullable — Logical junction applied between field filters. Defaults to `AND`.
  - `id` ProgramIdFilterConditions — Filter conditions for the program `id` field (ID field type). Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Values must match the program id pattern `^lprg_[a-f0-9]+$`. Each condition accepts a single string or an array of strings (max 1 item for `$is`/`$is_not`, max 100 items for `$in`/`$not_in`).
    - `conditions` object, required
      - `$is` union — Field equals the given id.
        - string
        - string[]
      - `$is_not` union — Field does not equal the given id.
        - string
        - string[]
      - `$in` union — Field equals any of the given ids.
        - string
        - string[]
      - `$not_in` union — Field equals none of the given ids.
        - string
        - string[]
  - `name` ProgramStringFilterConditions — Filter conditions for string fields (STRING field type). Allowed conditions: `$is`, `$is_not`, `$contains`, `$not_contain`, `$starts_with`, `$ends_with`, `$in`, `$not_in`, `$has_value`, `$is_unknown`. Each condition accepts a single string or an array of strings (max 1 item, except `$in`/`$not_in` which allow up to 10 items).
    - `conditions` object, required
      - `$is` union — Field equals the given value.
        - string
        - string[]
      - `$is_not` union — Field does not equal the given value.
        - string
        - string[]
      - `$contains` union — Field contains the given substring.
        - string
        - string[]
      - `$not_contain` union — Field does not contain the given substring.
        - string
        - string[]
      - `$starts_with` union — Field starts with the given prefix.
        - string
        - string[]
      - `$ends_with` union — Field ends with the given suffix.
        - string
        - string[]
      - `$in` union — Field equals any of the given values (up to 10).
        - string
        - string[]
      - `$not_in` union — Field equals none of the given values (up to 10).
        - string
        - string[]
      - `$has_value` string, nullable — Field has a value (is not null).
      - `$is_unknown` string, nullable — Field has no value (is null).
  - `status` ProgramStatusFilterConditions — Filter conditions for the program `status` field (ENUM field type). Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Allowed values: `ACTIVE`, `INACTIVE`, `DRAFT`. Each condition accepts a single value or an array of values (max 1 item for `$is`/`$is_not`, up to 10 items for `$in`/`$not_in`).
    - `conditions` object, required
      - `$is` union — Field equals the given status.
        - 'ACTIVE' | 'INACTIVE' | 'DRAFT'
        - string[]
      - `$is_not` union — Field does not equal the given status.
        - 'ACTIVE' | 'INACTIVE' | 'DRAFT'
        - string[]
      - `$in` union — Field equals any of the given statuses (up to 10).
        - 'ACTIVE' | 'INACTIVE' | 'DRAFT'
        - string[]
      - `$not_in` union — Field equals none of the given statuses (up to 10).
        - 'ACTIVE' | 'INACTIVE' | 'DRAFT'
        - string[]
  - `created_at` ProgramDateFilterConditions — Filter conditions for date fields (DATE field type). Allowed conditions: `$before`, `$after` (date values), `$is`, `$more_than`, `$less_than` (non-negative integers, interpreted as a number of days), `$has_value`, `$is_unknown`. Each condition accepts a single value or an array with a single value.
    - `conditions` object, required
      - `$before` union — Field is before the given date.
        - string, date-time
        - string[]
      - `$after` union — Field is after the given date.
        - string, date-time
        - string[]
      - `$is` union — Field is exactly the given number of days ago. A non-negative integer number of days.
        - string
        - string[]
      - `$more_than` union — Field is more than the given number of days ago. A non-negative integer number of days.
        - string
        - string[]
      - `$less_than` union — Field is less than the given number of days ago. A non-negative integer number of days.
        - string
        - string[]
      - `$has_value` string, nullable — Field has a value (is not null).
      - `$is_unknown` string, nullable — Field has no value (is null).
- `limit` union
  - number
  - string
- `order` union
  - string[]
  - '-created_at' | 'created_at' | 'name' | '-name'
- `cursor` string, nullable

## Response `200`

Paginated list of programs.

- ProgramListResponse — Cursor-paginated list of programs.
  - `object` 'list' — Object type marker.
  - `data` Program[] — Programs on the current page.
    - `id` string — Unique program identifier.
    - `name` string — Program name.
    - `status` 'DRAFT' | 'ACTIVE' | 'INACTIVE' | 'DELETED' — Program status.
    - `start_date` string, date-time, nullable — Program validity start date (ISO 8601), or `null` when not set.
    - `end_date` string, date-time, nullable — Program validity end date (ISO 8601), or `null` when not set.
    - `validity_hours` ProgramValidityHours — Validity hours configuration of the program.
      - `type` 'DAILY' | 'ANY_TIME' — Validity hours mode.
      - `daily` ProgramValidityDailyHours[] — Daily validity windows. Present only when `type` is `DAILY`.
        - `days_of_week` integer[] — Days of week the window applies to. 0 = Sunday through 6 = Saturday.
        - `start_time` string — Window start time in `HH:mm` format.
        - `end_time` string — Window end time in `HH:mm` format.
    - `metadata` object — Arbitrary key-value metadata. Defaults to `{}`.
    - `created_at` string, date-time — Creation timestamp (ISO 8601).
    - `updated_at` string, date-time, nullable — Last update timestamp (ISO 8601), or `null` when never updated.
    - `object` 'program' — Object type marker.
  - `cursor` ProgramListCursor — Cursor for fetching the next page of results. Present only when more results are available.
    - `next` string — Cursor id to pass as the `cursor` query parameter in the next request.
    - `expires_at` string, date-time — Timestamp after which the cursor expires and can no longer be used.

## Other responses

- `400` — Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.
- `404` — Resource not found.
- `409` — Conflict - e.g. duplicate resource or invalid state transition.
- `500` — Internal server error.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-loyalty-v2-api.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-loyalty-v2-api/revisions/69be73b5cff0/schema)
