---
title: "List program rewards summary reports"
method: GET
path: "/v2/loyalties/programs/{programId}/reports/rewards/summary"
tags: ["Programs"]
---

# List program rewards summary reports

`GET /v2/loyalties/programs/{programId}/reports/rewards/summary`

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/programs/{programId}/reports/rewards/summary`
- Auth: one of:
  - API key in header `X-App-Id` and API key in header `X-App-Token`
  - HTTP bearer

Returns all-time reward-purchase totals for the program, one row per reward with a recorded purchase attempt. Filters rows with `filters[reward_id]`. Returns at most 100 rows, ordered by `id` descending. `limit` and `order` are not query parameters. A filter that matches no rows returns an empty `data` array.

Returns `400` when query validation fails. Returns `404` when the program does not exist.

## Query parameters

- `filters` RewardsReportListFilters
  - `junction` 'AND' | 'OR', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `reward_id` RewardsReportFilterRewardIdConditions: ID filter conditions for reward ID. Values must match pattern `^lrew_[a-f0-9]+$`. `$is` and `$is_not` accept a single value (string or 1-element array). `$in` and `$not_in` accept a string or an array of 1-100 values.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lrew_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lrew_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lrew_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lrew_[a-f0-9]+`.
        - string
        - string[]

## Response `200`

Program rewards summary report.

- LoyaltiesProgramsReportsRewardsSummaryListResponseBody: Response body schema for **GET** `/v2/loyalties/programs/{programId}/reports/rewards/summary`.
  - `data` RewardsReportSummaryEntry[], required: List of summary rows, one per reward with a recorded purchase attempt, ordered by `id` descending. Contains at most 100 rows. Empty when no purchase attempts were recorded.
    - `id` string, required: Identifies the summary row (format: `lprrs_` followed by hexadecimal characters).
    - `reward_id` string, required: Identifies the reward (`lrew_...`).
    - `success_count` number, required: Counts approved reward purchases.
    - `failures_count` number, required: Counts reward purchase attempts that failed.
    - `failures_breakdown` RewardsReportFailuresBreakdown, required: Counts failed reward purchase attempts by reason. A reason is present only when it was recorded. Empty when no failures were recorded. Keys can also be a card-transaction rejection reason or a publication error key.
      - `COOLDOWN` number: Counts failures caused by the cooldown limit.
      - `FREQUENCY` number: Counts failures caused by the frequency limit.
      - `OUT_OF_STOCK` number: Counts failures caused by missing stock.
      - `REWARD_NOT_FOUND` number: Counts failures caused by a missing reward.
      - `REWARD_NOT_ACTIVE` number: Counts failures caused by an inactive reward.
      - `PROGRAM_NOT_FOUND` number: Counts failures caused by a missing program.
      - `MEMBER_NOT_FOUND` number: Counts failures caused by a missing member.
      - `MEMBER_NOT_ACTIVE` number: Counts failures caused by an inactive member.
      - `PUBLICATION_FAILED` number: Counts failures caused by a failed voucher publication.
      - `TARGET_CARD_NOT_FOUND` number: Counts failures caused by a missing target card.
      - `POINTS_PURCHASE_FAILED` number: Counts failures caused by a failed points purchase.
      - `UNEXPECTED_ERROR` number: Counts failures caused by an unexpected error.
    - `object` 'program_rewards_summary_report', required: Object type marker. Always `program_rewards_summary_report`.
  - `object` 'report', required: Object type marker. Always `report`.

## Other responses

- `400`: Query parameters failed validation.
- `404`: Program not found.
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `d29b33490051`: 1 breaking, 12 warning, 2 info
  - the `data/items/failures_breakdown` response's property type changed from `object` to no type for status `200`
  - removed the optional property `data/items/failures_breakdown/COOLDOWN` from the response with the `200` status
  - removed the optional property `data/items/failures_breakdown/FREQUENCY` from the response with the `200` status
  - removed the optional property `data/items/failures_breakdown/MEMBER_NOT_ACTIVE` from the response with the `200` status
  - …11 more
- **2026-10-14** (v2) `be14b3318eb3`: 2 breaking, 14 info
  - for the `query` request parameter `filters`, the type changed from no type to `object`
  - the `data/items/failures_breakdown` response's property type changed from no type to `object` for status `200`
  - api operation id `getProgramRewardsSummaryReport` removed and replaced with `listProgramRewardsSummaryReports`
  - added the optional property `data/items/failures_breakdown/COOLDOWN` to the response with the `200` status
  - …12 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/reports/rewards/summary/get.md)

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) - [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/revisions/e0d9f2d2532f?raw)
