---
title: "Get reward by ID"
method: GET
path: "/v2/loyalties/rewards/{rewardId}"
tags: ["Rewards"]
---

# Get reward by ID

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

## Request

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

Returns a single reward by its ID.

## Response `200`

The reward.

- V2LoyaltiesRewardsGetResponseBody: 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`.
        - `tier_structure_id` string, required: Identifies the tier structure.
        - `tier_ids` string[], required: Lists the qualifying tier IDs.
  - `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.
        - `period` LoyaltyV2ActivityRewardPurchaseLimitsCooldownFixedCooldownPeriod, required: Fixed cooldown period after a reward purchase.
          - `value` integer, required: Length of the cooldown period.
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required: Unit of the cooldown period.
    - `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`.
        - `type` 'TIME_BASED', required: Limit type. Always `TIME_BASED`.
        - `period` LoyaltyV2ActivityCardDefinitionLimitTimeBasedPeriod, required: Time-based limit period.
          - `type` 'CURRENT_PERIOD', required: Period type.
          - `current_period` object: Current-period configuration. Present when `type` is `CURRENT_PERIOD`.
            - `unit` 'DAY' | 'WEEK' | 'MONTH' | 'QUARTER' | 'YEAR', required: Calendar period unit.
        - `triggers` LoyaltyV2ActivityRewardPurchaseLimitsFrequencyLimitTriggers, required: Maximum number of purchases allowed in the period.
          - `max` integer, required: Maximum number of purchases in the configured period.
  - `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`.

## Other responses

- `404`: The reward doesn't exist. A deleted reward is not found. Returned for any unknown reward ID, including a value that does not match `lrew_[a-f0-9]+`. `key` is `not_found` and `resource_type` is `reward`.
- `500`: Internal server error.

## Changes

- **2026-10-12** (v2) `d050da3a1603`: 11 breaking, 6 warning, 3 info
  - removed the required property `costs` from the response with the `200` status
  - removed the required property `created_at` from the response with the `200` status
  - removed the required property `id` from the response with the `200` status
  - removed the required property `metadata` from the response with the `200` status
  - …16 more
- **2026-10-12** (v2) `c56e6909b766`: 1 breaking, 19 info
  - added the new path request parameter `rewardId`
  - removed `#/components/schemas/RewardResponse` from the response body `allOf` list for the response status `200`
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - …16 more
- **2026-10-12** (v2) `0f9c09c099aa`: 1 breaking, 1 warning, 3 info
  - the `allOf[#/components/schemas/RewardResponse]/purchase_limits/cooldown/fixed_cooldown` response's property type changed from no type to `object` for status `200`
  - deleted the `path` request parameter `rewardId`
  - added the optional property `allOf[#/components/schemas/RewardResponse]/costs/items/name` to the response with the `200` status
  - removed `#/components/schemas/RewardPurchaseLimitsCooldownFixedCooldown, subschema #2` from the `allOf[#/components/schemas/RewardResponse]/purchase_limits/cooldown/fixed_cooldown` response property `oneOf` list for the response status `200`
  - …1 more
- …earlier changes not shown

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