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

# List program tiers daily reports

`GET /v2/loyalties/programs/{programId}/reports/tiers/daily`

## Request

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

Returns aggregated tier-movement statistics for the program over the given date range and resolution, optionally filtered by tier structure and tier. Each row covers one tier structure, one tier, and one period with recorded movement. Periods without recorded movement are omitted. A filter that matches no rows returns an empty `data` array.

The date range is limited per resolution:
- 90 days for `day`,
- 12 weeks for `week`,
- 12 months for `month`,
- 4 quarters for `quarter`,
- `start_date` must be before `end_date`,
- `start_date` and `end_date` are inclusive.

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

## Query parameters

- `start_date` string, date, required
- `end_date` string, date, required
- `resolution` 'day' | 'week' | 'month' | 'quarter', required
- `filters` TiersReportListFilters: Filters for program tiers reports.
  - `junction` 'AND' | 'OR', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `tier_structure_id` TiersReportFilterTierStructureIdConditions: ID filter conditions for tier structure ID. Values must match pattern `^lts_[a-f0-9]+$`. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$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 `lts_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lts_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lts_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lts_[a-f0-9]+`.
        - string
        - string[]
  - `tier_id` TiersReportFilterTierIdConditions: ID filter conditions for tier ID. Values must match pattern `^lt_[a-f0-9]+$`. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$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 `lt_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lt_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lt_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lt_[a-f0-9]+`.
        - string
        - string[]

## Response `200`

Program tiers daily report.

- V2LoyaltiesProgramsReportsTiersDailyListResponseBody: Program tiers daily report result.
  - `data` TiersReportDailyEntry[], required: List of report entries, one per tier structure, tier, and aggregation period with recorded movement, ordered by `date` ascending. Empty when no movement was recorded in the range.
    - `date` string, date, required: Identifies the start of the aggregation period on the project-local calendar (`YYYY-MM-DD`). The date is truncated to the resolution. For `week` this is Monday. For `month` this is the first day. For `quarter` this is the quarter start.
    - `tier_structure_id` string, required: Unique identifier of the tier structure (format `lts_...`).
    - `tier_id` string, required: Unique identifier of the tier (format `lt_...`).
    - `joins` number, required: Number of members who joined this tier in the period.
    - `upgrades` number, required: Number of upgrades into this tier in the period.
    - `downgrades` number, required: Number of downgrades into this tier in the period.
    - `lefts` number, required: Number of members who left this tier in the period.
    - `prolongs` number, required: Counts expiration-date changes for members who stayed on this tier in the period.
    - `object` 'program_tiers_daily_report', required: Object type marker. Always `program_tiers_daily_report`.
  - `object` 'report', required: Object type marker. Always `report`.

## Other responses

- `400`: Query parameters failed validation, or `start_date` is not before `end_date`.
- `404`: Program not found.
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `be14b3318eb3`: 1 info
  - api operation id `getProgramTiersDailyReport` removed and replaced with `listProgramTiersDailyReports`
- **2026-10-14** (v2) `6a418ac8b7b1`: 1 info
  - api operation id `listProgramTiersDailyReports` removed and replaced with `getProgramTiersDailyReport`
- **2026-10-14** (v2) `f0e2ed1d9df6`: 1 info
  - api operation id `getProgramTiersDailyReport` removed and replaced with `listProgramTiersDailyReports`
- **2026-10-13** (v2) `58624588b18c`: 1 info
  - api operation id `listProgramTiersDailyReports` removed and replaced with `getProgramTiersDailyReport`
- **2026-10-13** (v2) `100ea5942966`: 1 info
  - api operation id `getProgramTiersDailyReport` removed and replaced with `listProgramTiersDailyReports`

[Operation history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/reports/tiers/daily/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)
