---
title: "List Card Definition Activities"
method: GET
path: "/v2/loyalties/card-definitions/{cardDefinitionId}/activities"
tags: ["Card Definitions"]
---

# List Card Definition Activities

`GET /v2/loyalties/card-definitions/{cardDefinitionId}/activities`

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/card-definitions/{cardDefinitionId}/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 card definition
(creation, updates, deletion, state transitions and program assignments).
Returns `404` when the card definition does not exist.

## Query parameters

- `limit` union
  - number
  - string
- `order` union
  - 'created_at' | '-created_at'
  - string[]
- `cursor` string, nullable
- `filters` LoyaltiesCardDefinitionsActivitiesListRequestQuery: Request query schema for **GET** `/v2/loyalties/card-definitions/{cardDefinitionId}/activities`.
  - `junction` 'AND' | 'OR' | 'null', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `id` LoyaltiesCardDefinitionsActivitiesListRequestQueryId: ID field filter for activity IDs. Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Values must match the card definition activity ID pattern `^lacd_[a-f0-9]+$`. `$is`/`$is_not` accept a single value; `$in`/`$not_in` accept 1-100 values.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lacd_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lacd_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lacd_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lacd_[a-f0-9]+`.
        - string
        - string[]
  - `type` LoyaltiesCardDefinitionsActivitiesListRequestQueryType: Enum field filter for activity types. Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Values must be one of: `vl.card_definition.created`, `vl.card_definition.updated`, `vl.card_definition.deleted`, `vl.card_definition.activated`, `vl.card_definition.deactivated`, `vl.card_definition.drafted`, `vl.card_definition.assigned`, `vl.card_definition.unassigned`.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 10 values.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 10 values.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
  - `created_at` CardDefinitionDateFilter: Date field filter. Allowed conditions: `$before`, `$after`, `$is`, `$more_than`, `$less_than`, `$has_value`, `$is_unknown`. `$before`/`$after` accept a date string; `$is`/`$more_than`/`$less_than` accept a non-negative integer (number of days); `$has_value`/`$is_unknown` are presence checks. Single values may be passed as a string or a 1-element array.
    - `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: Matches when the field is set. The condition value is ignored.
      - `$is_unknown` string: Matches when the field is not set. The condition value is ignored.

## Response `200`

A paginated list of card definition activities.

- V2LoyaltiesCardDefinitionsActivitiesListResponseBody: Cursor-paginated list of card definition activities.
  - `data` CardDefinitionActivity[], required: The activities in the current page.
    - `id` string, required: Unique activity ID.
    - `type` 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned', required: Activity type.
    - `data` object, required: Activity payload. For created/updated/deleted/activated/deactivated/drafted activities it contains a `card_definition` snapshot (the state of the card definition at the time of the activity). For assigned/unassigned activities it additionally contains `program` and `program_card_definition` snapshots.
      - `card_definition` CardDefinition: A card definition.
        - `id` string, required: Unique card definition ID.
        - `name` string, required: Card definition name.
        - `type` 'INDIVIDUAL', required: Card definition type.
        - `status` 'DRAFT' | 'ACTIVE' | 'DELETED', required: Current card definition status.
        - `code_config` LoyaltyV2ActivityCardDefinitionCodeConfig, required: Card code generation configuration. Always present with server-side defaults applied.
          - `pattern` string, required: Code pattern where each `#` is replaced with a random character from the charset.
          - `length` integer, required: Number of `#` placeholders in the pattern.
          - `charset` string, required: Characters used for code generation.
          - `prefix` string, required: Fixed prefix prepended to every generated code. Empty string when not set.
          - `postfix` string, required: Fixed postfix appended to every generated code. Empty string when not set.
        - `points_expiration` CardDefinitionPointsExpiration, required: Points expiration policy. Always present; defaults to `NO_EXPIRATION`.
          - `type` 'NO_EXPIRATION' | 'ROLLING_EXPIRATION' | 'CALENDAR_EXPIRATION' | 'SLIDING_EXPIRATION', required: Points expiration type.
          - `rolling_expiration` CardDefinitionPointsExpirationRollingExpiration: Rolling expiration configuration.
            - `period` LoyaltyV2ActivityCardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
            - `rounding` LoyaltyV2ActivityCardDefinitionPointsExpirationRollingExpirationRounding: Rounding of the rolling expiration date.
              - …
          - `calendar_expiration` CardDefinitionPointsExpirationCalendarExpiration: Calendar expiration configuration.
            - `expiration_dates` LoyaltyV2ActivityCardDefinitionCalendarDate[], required: Calendar dates on which points expire.
              - …
          - `sliding_expiration` CardDefinitionPointsExpirationSlidingExpiration: Sliding expiration configuration.
            - `earning_activity` boolean: Whether earning points resets the expiration window.
            - `spending_activity` boolean: Whether spending points resets the expiration window.
            - `custom_activity` boolean: Whether the configured custom events reset the expiration window.
            - `custom_activity_types` string[], required: Custom event schema IDs that reset the expiration window. Empty array when `custom_activity` is false.
            - `period` LoyaltyV2ActivityCardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
        - `pending_points` CardDefinitionPendingPoints, required: Pending points activation policy. Always present; defaults to `IMMEDIATE`.
          - `type` 'IMMEDIATE' | 'PERIOD_BASED' | 'FIXED_DATES' | 'EVENT_BASED', required: Pending points activation type.
          - `period_based` CardDefinitionPendingPointsPeriodBased: Period-based pending points activation.
            - `period` LoyaltyV2ActivityCardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
          - `fixed_dates` CardDefinitionPendingPointsFixedDates: Fixed-dates pending points activation.
            - `dates` LoyaltyV2ActivityCardDefinitionCalendarDate[], required: Calendar dates on which pending points activate.
              - …
          - `event_based` CardDefinitionPendingPointsEventBased: Event-based pending points activation.
            - `event_types` string[], required: Custom event schema IDs that activate pending points.
            - `cancel_period` LoyaltyV2ActivityCardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
        - `earning_limits` CardDefinitionEarningLimits, required: Points earning limits. Always present; defaults to `NO_LIMIT` for both scopes.
          - `global` CardDefinitionEarningLimitsGlobal: Global (per card) earning limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether global earning limits apply.
            - `limits` CardDefinitionEarningLimitsGlobalLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
          - `transactions` CardDefinitionEarningLimitsTransactions: Per-transaction earning limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether per-transaction earning limits apply.
            - `limits` LoyaltyV2ActivityCardDefinitionEarningLimitsTransactionsLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
        - `spending_limits` CardDefinitionSpendingLimits, required: Points spending limits. Always present; defaults to `NO_LIMIT` for both scopes.
          - `global` CardDefinitionSpendingLimitsGlobal: Global (per card) spending limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether global spending limits apply.
            - `limits` CardDefinitionSpendingLimitsGlobalLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
          - `transactions` CardDefinitionSpendingLimitsTransactions: Per-transaction spending limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether per-transaction spending limits apply.
            - `limits` LoyaltyV2ActivityCardDefinitionSpendingLimitsTransactionsLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
        - `refunds` CardDefinitionRefunds, required: Refund handling configuration. Always present; defaults to `NONE` for both scopes.
          - `spent_points` CardDefinitionRefundsSpentPoints, required: How points spent on a refunded order are handled.
            - `type` 'NONE' | 'REFUNDABLE', required: Whether spent points are refundable.
            - `methods` LoyaltyV2ActivityCardDefinitionRefundsSpentPointsMethod[], required: Refund methods. Empty array when `type` is `NONE`.
              - …
          - `earned_points` CardDefinitionRefundsEarnedPoints, required: How points earned on a refunded order are handled.
            - `type` 'NONE' | 'REFUNDABLE', required: Whether earned points are revocable on refund.
            - `methods` LoyaltyV2ActivityCardDefinitionRefundsEarnedPointsMethod[], required: Revoke methods. Empty array when `type` is `NONE`.
              - …
        - `balance_settings` LoyaltyV2ActivityCardDefinitionBalanceSettings, required: Card balance settings. Always present; defaults to `allow_negative: false`.
          - `allow_negative` boolean, required: Whether the card balance is allowed to go below zero.
        - `pay_with_points` LoyaltyV2ActivityCardDefinitionPayWithPoints, required: Pay-with-points configuration. Always present; defaults to `NO_PAYMENTS`.
          - `type` 'NO_PAYMENTS' | 'EXCHANGE_RATIO', required: Pay-with-points type.
          - `exchange_ratio` object: Exchange ratio. Only present when `type` is `EXCHANGE_RATIO`.
            - `formula` string, required: Exchange ratio formula (always returned as a string).
        - `metadata` object, required: Arbitrary key-value metadata. Empty object when not set.
        - `created_at` string, date-time, required: Creation timestamp (ISO 8601).
        - `updated_at` string, date-time, nullable, required: Last update timestamp (ISO 8601). `null` when the card definition has never been updated.
        - `object` 'card_definition', required: Object type marker. Always `card_definition`.
    - `created_at` string, date-time, required: Activity timestamp (ISO 8601).
    - `group_id` string: Groups related activities triggered by the same operation.
    - `card_definition_id` string, required: ID of the card definition this activity belongs to.
    - `source` CardDefinitionActivitySource: Source that triggered the activity.
      - `channel` 'USER_PORTAL' | 'API' | 'CLIENT_API' | 'INTERNAL': Channel through which the activity was triggered.
      - `user` object: User that triggered the activity. Omitted when not applicable.
        - `id` string: User ID.
      - `api_key` object: API key used to trigger the activity. Omitted when not applicable.
        - `name` string: API key name.
        - `app_id` string: Application ID of the API key.
        - `client_app_id` string: Client application ID of the API key.
  - `cursor` CardDefinitionActivityListCursor, required: Pagination cursor for the activities list.
    - `next` string, required: Cursor ID to pass as the `cursor` query parameter to fetch the next page.
    - `expires_at` string, date-time: Timestamp after which the cursor expires.
  - `object` 'list', required: Object type marker. Always `list`.

## Other responses

- `400`: Validation error - the request body or query parameters are invalid.
- `404`: Resource not found
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `d29b33490051`: 3 breaking, 3 warning, 1 info
  - the `allOf[#/components/schemas/CardDefinitionActivityListResponse]/data/items/data/card_definition/oneOf[#/components/schemas/CardDefinition]/points_expiration/sliding_expiration` response's property type changed from `object` to no type for status `200`
  - removed the required property `allOf[#/components/schemas/CardDefinitionActivityListResponse]/data/items/data/card_definition/oneOf[#/components/schemas/CardDefinition]/points_expiration/sliding_expiration/custom_activity_types` from the response with the `200` status
  - removed the required property `allOf[#/components/schemas/CardDefinitionActivityListResponse]/data/items/data/card_definition/oneOf[#/components/schemas/CardDefinition]/points_expiration/sliding_expiration/period` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/CardDefinitionActivityListResponse]/data/items/data/card_definition/oneOf[#/components/schemas/CardDefinition]/points_expiration/sliding_expiration/custom_activity` 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/card-definitions/:cardDefinitionId/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)
