---
title: "List reward activities"
method: GET
path: "/v2/loyalties/rewards/{rewardId}/activities"
tags: ["Rewards"]
---

# List reward activities

`GET /v2/loyalties/rewards/{rewardId}/activities`

## Request

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

<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 activities recorded for the given reward
(created, updated, deleted, assigned, unassigned, activated, deactivated, drafted).
Returns `404` when the reward does not exist.

## Query parameters

- `limit` union
  - number
  - string
- `order` union
  - string[]
  - 'created_at' | '-created_at'
- `cursor` string, nullable
- `filters` LoyaltiesRewardsActivitiesListRequestQuery: Request query schema for **GET** `/v2/loyalties/rewards/{rewardId}/activities`.
  - `junction` 'AND' | 'OR', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `id` LoyaltiesRewardsActivitiesListRequestQueryId: ID filter conditions for reward activities. `$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. All values must match the activity ID pattern `^larew_[a-f0-9]+$`.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `larew_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `larew_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `larew_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `larew_[a-f0-9]+`.
        - string
        - string[]
  - `type` LoyaltiesRewardsActivitiesListRequestQueryType: Enum filter conditions for the activity `type` field. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$not_in` accept a string or an array of 1-10 values.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array.
        - 'vl.reward.created' | 'vl.reward.updated' | 'vl.reward.deleted' | 'vl.reward.assigned' | 'vl.reward.unassigned' | 'vl.reward.activated' | 'vl.reward.deactivated' | 'vl.reward.drafted': Reward activity type.
        - RewardActivityType[]
      - `$is_not` union: Excludes one value. A string or a one-element array.
        - 'vl.reward.created' | 'vl.reward.updated' | 'vl.reward.deleted' | 'vl.reward.assigned' | 'vl.reward.unassigned' | 'vl.reward.activated' | 'vl.reward.deactivated' | 'vl.reward.drafted': Reward activity type.
        - RewardActivityType[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 10 values.
        - 'vl.reward.created' | 'vl.reward.updated' | 'vl.reward.deleted' | 'vl.reward.assigned' | 'vl.reward.unassigned' | 'vl.reward.activated' | 'vl.reward.deactivated' | 'vl.reward.drafted': Reward activity type.
        - RewardActivityType[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 10 values.
        - 'vl.reward.created' | 'vl.reward.updated' | 'vl.reward.deleted' | 'vl.reward.assigned' | 'vl.reward.unassigned' | 'vl.reward.activated' | 'vl.reward.deactivated' | 'vl.reward.drafted': Reward activity type.
        - RewardActivityType[]
  - `created_at` RewardDateFilter: Date filter conditions. `$before`/`$after` accept an ISO-8601 date string (or a 1-element array of one); `$is`, `$more_than` and `$less_than` accept a non-negative integer value passed as a string; `$has_value` and `$is_unknown` take no meaningful value.
    - `conditions` object, required
      - `$before` union: Matches dates before the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string
        - string[]
      - `$after` union: Matches dates after the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string
        - string[]
      - `$is` union: Matches a date exactly the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$more_than` union: Matches dates more than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$less_than` union: Matches dates less than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$has_value` string, nullable: Matches when the field is set. The condition value is ignored.
      - `$is_unknown` string, nullable: Matches when the field is not set. The condition value is ignored.

## Response `200`

Cursor-paginated list of reward activities.

- V2LoyaltiesRewardsActivitiesListResponseBody: Cursor-paginated list of reward activities.
  - `data` RewardActivity[], required: The activities on the current page.
    - `id` string, required: Unique activity identifier, prefixed with `larew_`.
    - `type` 'vl.reward.created' | 'vl.reward.updated' | 'vl.reward.deleted' | 'vl.reward.assigned' | 'vl.reward.unassigned' | 'vl.reward.activated' | 'vl.reward.deactivated' | 'vl.reward.drafted', required: Reward activity type.
    - `data` RewardActivityData, required: Activity payload. `reward` is always present and contains a full snapshot of the reward at the time of the activity. For `vl.reward.assigned` and `vl.reward.unassigned` activities, `program` (a snapshot of the program) and `program_reward` (a snapshot of the program-reward assignment) are also present.
      - `reward` RewardResponse, required: A reward, as returned by the API.
        - `id` string, required: Unique reward identifier, prefixed with `lrew_`.
        - `name` string, required: Display name of the reward.
        - `type` 'MATERIAL' | 'DIGITAL', required: Reward type.
        - `status` 'ACTIVE' | 'DRAFT' | 'INACTIVE' | 'DELETED', required: Current lifecycle status of the reward.
        - `start_date` string, date-time, nullable, required: Date from which the reward is available, or `null` when not set.
        - `end_date` string, date-time, nullable, required: Date until which the reward is available, or `null` when not set.
        - `validity_hours` RewardValidityHoursResponse, required: Validity hours. `daily` is present only when `type` is DAILY; omitted otherwise.
          - `type` 'DAILY' | 'ANY_TIME', required: Whether the reward is purchasable at any time or only during specific daily windows.
          - `daily` LoyaltyV2ActivityRewardValidityDailyHoursResponse[]: Daily time windows. Present only when `type` is DAILY.
            - `days_of_week` integer[], required: Days of the week the window applies to, as integers 0-6 (0 = Sunday).
            - `start_time` string, required: Window start time in `HH:mm` format.
            - `end_time` string, required: Window end time in `HH:mm` format.
        - `material` RewardMaterialResponse: Material reward definition.
          - `type` 'PRODUCT' | 'SKU', required: Kind of material reward.
          - `product` LoyaltyV2ActivityRewardMaterialProduct: Product reference for a material reward.
            - `id` string, required: Product identifier, prefixed with `prod_`.
          - `sku` LoyaltyV2ActivityRewardMaterialSKU: SKU reference for a material reward.
            - `product_id` string, required: Unique identifier of the product the SKU belongs to, prefixed with `prod_`.
            - `id` string, required: SKU identifier, prefixed with `sku_`.
        - `digital` RewardDigitalResponse: Digital reward definition. Only the object matching `type` is present; the others are omitted.
          - `type` 'DISCOUNT_COUPONS' | 'GIFT_VOUCHERS' | 'LOYALTY_CARD_POINTS', required: Kind of digital reward.
          - `discount_coupons` LoyaltyV2ActivityRewardDigitalDiscountCoupons: Discount coupons digital reward configuration.
            - `campaign_id` string, required: Unique identifier of the discount coupons campaign to publish a coupon from, prefixed with `camp_`.
          - `gift_vouchers` LoyaltyV2ActivityRewardDigitalGiftVouchersResponse: Gift vouchers configuration.
            - `campaign_id` string, required: Unique identifier of the gift vouchers campaign, prefixed with `camp_`.
            - `balance` number, required: Gift card balance credited when the reward is delivered.
          - `loyalty_card_points` LoyaltyV2ActivityRewardDigitalLoyaltyCardPointsResponse: Loyalty card points configuration.
            - `points` integer, required: Number of points credited when the reward is delivered.
            - `card_definition_id` string, required: Unique identifier of the card definition points are credited to, prefixed with `lcdef_`.
        - `refunds` LoyaltyV2ActivityRewardRefunds, required: Refund policy for the reward.
          - `type` 'NONE' | 'REFUNDABLE', required: Whether reward purchases can be refunded.
        - `costs` RewardCostResponse[], required: Point costs of the reward. Empty array when no costs are defined.
          - `id` string, required: Unique cost identifier, prefixed with `lrcst_`.
          - `name` string, nullable: Display name of the cost. Omitted when not set. `null` when cleared.
          - `rules` RewardCostRuleGroupResponse: Rules group. Contains a `logic` formula string plus numbered rule definition properties (positive-integer keys).
            - `logic` string: Logical formula combining the numbered rule definitions, e.g. `"1 AND 2"`.
          - `spending` LoyaltyV2ActivityRewardCostSpendingResponse[], nullable: Points spending definitions, or `null` when none are defined.
            - `id` string, required: Unique spending identifier, prefixed with `lrspn_`. Assigned by the API when omitted on create/update.
            - `name` string, nullable: Optional display name of the spending definition, or `null`.
            - `points` integer, required: Number of points the member must spend.
            - `card_definition_id` string, required: Unique identifier of the card definition the points are spent from, prefixed with `lcdef_`.
          - `tier_rules` RewardCostTierRulesResponse, required: Tier requirements for a reward cost. `any_of` is omitted when `type` is `NO_REQUIREMENTS`.
            - `type` 'NO_REQUIREMENTS' | 'ANY_OF', required: Tier requirement type.
            - `any_of` RewardCostTierRulesAnyOfEntryResponse[]: Lists tier combinations that qualify. Present when `type` is `ANY_OF`.
              - …
        - `purchase_limits` RewardPurchaseLimits, required: Limits on how often a member can purchase the reward. Always present on reward responses; defaults to no cooldown and no frequency limit.
          - `cooldown` RewardPurchaseLimitsCooldown, required: Purchase cooldown limits for a reward.
            - `type` 'NO_COOLDOWN' | 'FIXED_COOLDOWN', required: Cooldown type. `NO_COOLDOWN` - no cooldown. `FIXED_COOLDOWN` - wait a fixed period after each purchase.
            - `fixed_cooldown` RewardPurchaseLimitsCooldownFixedCooldown: Fixed cooldown configuration.
              - …
          - `frequency` RewardPurchaseLimitsFrequency, required: Purchase frequency limits for a reward.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Frequency limit type. `NO_LIMIT` - unlimited purchases. `LIMITED` - limited by the `limits` array.
            - `limits` RewardPurchaseLimitsFrequencyLimit[], required: Frequency limit definitions. Empty array when `type` is `NO_LIMIT`; one entry when `type` is `LIMITED`.
              - …
        - `metadata` object, required: Arbitrary key-value metadata attached to the reward. Empty object when not set.
        - `created_at` string, date-time, required: Timestamp when the reward was created (ISO-8601).
        - `updated_at` string, date-time, nullable, required: Timestamp when the reward was last updated (ISO-8601), or `null` when never updated.
        - `object` 'reward', required: Object type marker; always `reward`.
      - `program` object: Snapshot of the program. Present only for assigned/unassigned activities.
      - `program_reward` object: Snapshot of the program-reward assignment. Present only for assigned/unassigned activities.
    - `created_at` string, date-time, required: Timestamp when the activity occurred (ISO-8601).
    - `group_id` string, nullable: Unique identifier grouping related activities recorded together. Omitted or `null` when the activity is not part of a group.
    - `source` RewardActivitySource: Origin of an activity.
      - `channel` 'USER_PORTAL' | 'API' | 'CLIENT_API' | 'INTERNAL', required: Channel through which the change was made.
      - `user` RewardActivitySourceUser: User reference in an activity source.
        - `id` string, required: User identifier.
      - `api_key` RewardActivitySourceApiKey: API key reference in an activity source.
        - `name` string: Name of the API key.
        - `app_id` string: Application identifier of the API key.
        - `client_app_id` string: Client application identifier of the API key.
    - `reward_id` string, required: Unique identifier of the reward the activity belongs to, prefixed with `lrew_`.
  - `cursor` RewardListCursor, required: Pagination cursor.
    - `next` string, required: Cursor value to pass as the `cursor` query parameter to fetch the next page.
    - `expires_at` string, date-time: Timestamp when the cursor expires.
  - `object` 'list', required: Object type marker; always `list`.

## 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.
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `ec801ade260d`: 4 breaking, 1 warning, 2 info
  - for the `query` request parameter `limit`, the type changed from `integer, null` to `number, string, null`
  - removed the required property `cursor` from the response with the `200` status
  - removed the required property `data` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - …3 more
- **2026-10-13** (v2) `f95b50556c93`: 2 breaking, 5 info
  - added the new path request parameter `rewardId`
  - for the `query` request parameter `limit`, the type changed from `number, string, null` to `integer, null`
  - removed `#/components/schemas/RewardActivityListResponse` from the response body `allOf` list for the response status `200`
  - added the non-success response with the status `409`
  - …3 more
- **2026-10-13** (v2) `9905dfce1d1e`: 4 breaking, 1 warning, 2 info
  - for the `query` request parameter `limit`, the type changed from `integer, null` to `number, string, null`
  - removed the required property `cursor` from the response with the `200` status
  - removed the required property `data` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - …3 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/rewards/:rewardId/activities/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)
