> ## Documentation Index
> Fetch the complete documentation index at: https://voucherify-rc-lv2-guides.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List program activities

> 
<Warning>

<Badge color="yellow">BETA endpoint</Badge>

This is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.

</Warning>

Returns a cursor-paginated list of activities recorded for a program (created, updated,
deleted, activated, deactivated and assignment changes). Supports filtering by activity
`id`, `type` and `created_at`.



## OpenAPI

````yaml /openapi/loyalties-v2.json get /v2/loyalties/programs/{programId}/activities
openapi: 3.1.0
info:
  title: Voucherify Loyalty v2 API
  version: 2.0.0
  description: >-
    Complete OpenAPI specification for the Voucherify Loyalty v2 API.

    All endpoints require the LOYALTY_V2 feature flag.


    Combined from per-domain specs: programs.yaml, members.yaml,
    program-operations.yaml, card-definitions.yaml, earning-rules.yaml,
    tier-structures.yaml, benefits.yaml, rewards.yaml, examine.yaml
servers:
  - url: '{protocol}://{host}'
    variables:
      protocol:
        default: https
        enum:
          - https
          - http
      host:
        default: api.voucherify.io
security:
  - X-App-Id: []
    X-App-Token: []
  - bearerAuth: []
tags:
  - name: Programs
    description: >-
      Loyalty program CRUD, lifecycle management, program-scoped resource
      assignments (card definitions, earning rules, rewards, tier structures),
      member management (create, list, get, activate, deactivate, delete),
      membership retrieval (member + program + cards with tier progress, by
      customer ID, customer source ID, or member ID), card operations (points
      adjustment, pending points, expiring points, transactions), reward
      purchases, and activity history.
  - name: Card Definitions
    description: >-
      CRUD operations, lifecycle management, and activity history for card
      definitions. Card definitions describe the configuration for loyalty
      cards, including code generation, points expiration, earning/spending
      limits, pending points, refunds, and balance settings.
  - name: Earning Rules
    description: >-
      Manage earning rules that define how customers earn points or receive
      incentives based on triggers (events, segments, custom events). Includes
      CRUD, lifecycle, and activity history.
  - name: Tier Structures
    description: >-
      CRUD operations, lifecycle management, and activity history for tier
      structures. Includes nested tier definitions (create, list, update,
      delete) within tier structures. Tier structures define the tiering model
      for loyalty programs — how members qualify for and move between tiers.
  - name: Benefits
    description: >-
      Manage benefit definitions (fixed points, proportional points, material,
      digital). Includes CRUD, lifecycle transitions, and activity history.
  - name: Rewards
    description: >-
      CRUD, lifecycle operations, and activity history for reward definitions.
      Rewards can be material (product/SKU) or digital (discount coupons, gift
      vouchers).
  - name: Examine
    description: >-
      Evaluation endpoints that estimate earning opportunities and reward
      availability for a customer across their loyalty program memberships,
      without side effects.
paths:
  /v2/loyalties/programs/{programId}/activities:
    get:
      tags:
        - Programs
      summary: List program activities
      description: >-

        <Warning>


        <Badge color="yellow">BETA endpoint</Badge>


        This is a work-in-progress documentation of a BETA endpoint. The
        parameters, fields, request and response bodies, and other data may be
        subject to change. If you want to share feedback or improvements,
        contact [Voucherify support](https://www.voucherify.io/contact-support)
        or your Technical Account Manager.


        </Warning>


        Returns a cursor-paginated list of activities recorded for a program
        (created, updated,

        deleted, activated, deactivated and assignment changes). Supports
        filtering by activity

        `id`, `type` and `created_at`.
      operationId: listProgramActivities
      parameters:
        - name: id
          in: path
          required: true
          description: Unique program identifier.
          schema:
            type: string
            pattern: ^lprg_[a-f0-9]+$
        - name: filters
          in: query
          required: false
          description: >-
            Filters for the activity list. Nested object serialized in the query
            string

            (e.g. `filters[type][conditions][$is]=vl.program.created`). Only the
            condition

            operators supported by each field type are allowed.
          style: deepObject
          explode: true
          schema:
            oneOf:
              - $ref: '#/components/schemas/ProgramActivityListFilters'
              - type: 'null'
        - name: limit
          in: query
          required: false
          description: >-
            Maximum number of items to return. Between 1 and 100. Defaults to
            10. Non-integer values are rounded.
          schema:
            type:
              - number
              - string
              - 'null'
            minimum: 1
            maximum: 100
            default: 10
        - name: order
          in: query
          required: false
          description: >-
            Sorting order. A single value or an array of values. Prefix with `-`
            for descending.

            Defaults to `-created_at`. The same field cannot be used in both
            ascending and

            descending order at once.
          schema:
            oneOf:
              - type: array
                items:
                  type: string
                  enum:
                    - created_at
                    - '-created_at'
              - type: string
                enum:
                  - created_at
                  - '-created_at'
              - type: 'null'
        - name: cursor
          in: query
          required: false
          description: Pagination cursor returned by a previous call (`cursor.next`).
          schema:
            type:
              - string
              - 'null'
            pattern: ^lcrsapr_[a-f0-9]+$
      responses:
        '200':
          description: Paginated list of program activities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramActivityListResponse'
        '400':
          description: >-
            Validation error - request body or query parameters failed
            validation, or the operation is not allowed in the current resource
            state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict - e.g. duplicate resource or invalid state transition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ProgramActivityListFilters:
      type: object
      description: Filters accepted by the program activities list endpoint.
      properties:
        junction:
          description: Logical junction applied between field filters. Defaults to `AND`.
          oneOf:
            - type: string
              enum:
                - AND
                - OR
            - type: 'null'
        id:
          description: Filter by activity id.
          oneOf:
            - $ref: '#/components/schemas/ProgramActivityIdFilterConditions'
            - type: 'null'
        type:
          description: Filter by activity type.
          oneOf:
            - $ref: '#/components/schemas/ProgramActivityTypeFilterConditions'
            - type: 'null'
        created_at:
          description: Filter by activity creation date.
          oneOf:
            - $ref: '#/components/schemas/ProgramDateFilterConditions'
            - type: 'null'
      additionalProperties: false
    ProgramActivityListResponse:
      type: object
      description: Cursor-paginated list of program activities.
      properties:
        object:
          type: string
          description: Object type marker.
          const: list
        data:
          type: array
          description: Activities on the current page.
          items:
            $ref: '#/components/schemas/ProgramActivity'
        cursor:
          description: Pagination cursor, or `null` when there are no more results.
          oneOf:
            - $ref: '#/components/schemas/ProgramListCursor'
            - type: 'null'
    ErrorResponse:
      type: object
      description: Standard error response returned by all Loyalty v2 endpoints.
      properties:
        code:
          type: integer
          description: HTTP status code of the error.
        key:
          type: string
          description: Machine-readable error key.
        message:
          type: string
          description: Human-readable error message.
        details:
          type: string
          description: Additional details about the error.
        request_id:
          type: string
          description: Unique identifier of the request that produced the error.
        resource_id:
          type: string
          description: Unique identifier of the resource that produced the error.
        resource_type:
          type: string
          description: Type of the resource that produced the error.
    ProgramActivityIdFilterConditions:
      type: object
      description: >-
        Filter conditions for the activity `id` field (ID field type). Allowed
        conditions:

        `$is`, `$is_not`, `$in`, `$not_in`. Values must match the program
        activity id pattern

        `^laprg_[a-f0-9]+$`. Each condition accepts a single string or an array
        of strings

        (max 1 item for `$is`/`$is_not`, max 100 items for `$in`/`$not_in`).
      properties:
        conditions:
          type: object
          minProperties: 1
          additionalProperties: false
          properties:
            $is:
              description: Field equals the given id.
              oneOf:
                - type: string
                  pattern: ^laprg_[a-f0-9]+$
                - type: array
                  items:
                    type: string
                    pattern: ^laprg_[a-f0-9]+$
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $is_not:
              description: Field does not equal the given id.
              oneOf:
                - type: string
                  pattern: ^laprg_[a-f0-9]+$
                - type: array
                  items:
                    type: string
                    pattern: ^laprg_[a-f0-9]+$
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $in:
              description: Field equals any of the given ids.
              oneOf:
                - type: string
                  pattern: ^laprg_[a-f0-9]+$
                - type: array
                  items:
                    type: string
                    pattern: ^laprg_[a-f0-9]+$
                  minItems: 1
                  maxItems: 100
                - type: 'null'
            $not_in:
              description: Field equals none of the given ids.
              oneOf:
                - type: string
                  pattern: ^laprg_[a-f0-9]+$
                - type: array
                  items:
                    type: string
                    pattern: ^laprg_[a-f0-9]+$
                  minItems: 1
                  maxItems: 100
                - type: 'null'
      required:
        - conditions
      additionalProperties: false
    ProgramActivityTypeFilterConditions:
      type: object
      description: >-
        Filter conditions for the activity `type` field (ENUM field type).
        Allowed conditions:

        `$is`, `$is_not`, `$in`, `$not_in`. Allowed values are the program
        activity types.

        Each condition accepts a single value or an array of values (max 1 item
        for

        `$is`/`$is_not`, up to 10 items for `$in`/`$not_in`).
      properties:
        conditions:
          type: object
          minProperties: 1
          additionalProperties: false
          properties:
            $is:
              description: Field equals the given type.
              oneOf:
                - type: string
                  enum:
                    - vl.program.created
                    - vl.program.updated
                    - vl.program.deleted
                    - vl.program.activated
                    - vl.program.deactivated
                    - vl.program.card_definition.assigned
                    - vl.program.card_definition.unassigned
                    - vl.program.earning_rule.assigned
                    - vl.program.earning_rule.unassigned
                    - vl.program.reward.assigned
                    - vl.program.reward.unassigned
                    - vl.program.reward.updated
                    - vl.program.tier_structure.assigned
                    - vl.program.tier_structure.unassigned
                - type: array
                  items:
                    type: string
                    enum:
                      - vl.program.created
                      - vl.program.updated
                      - vl.program.deleted
                      - vl.program.activated
                      - vl.program.deactivated
                      - vl.program.card_definition.assigned
                      - vl.program.card_definition.unassigned
                      - vl.program.earning_rule.assigned
                      - vl.program.earning_rule.unassigned
                      - vl.program.reward.assigned
                      - vl.program.reward.unassigned
                      - vl.program.reward.updated
                      - vl.program.tier_structure.assigned
                      - vl.program.tier_structure.unassigned
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $is_not:
              description: Field does not equal the given type.
              oneOf:
                - type: string
                  enum:
                    - vl.program.created
                    - vl.program.updated
                    - vl.program.deleted
                    - vl.program.activated
                    - vl.program.deactivated
                    - vl.program.card_definition.assigned
                    - vl.program.card_definition.unassigned
                    - vl.program.earning_rule.assigned
                    - vl.program.earning_rule.unassigned
                    - vl.program.reward.assigned
                    - vl.program.reward.unassigned
                    - vl.program.reward.updated
                    - vl.program.tier_structure.assigned
                    - vl.program.tier_structure.unassigned
                - type: array
                  items:
                    type: string
                    enum:
                      - vl.program.created
                      - vl.program.updated
                      - vl.program.deleted
                      - vl.program.activated
                      - vl.program.deactivated
                      - vl.program.card_definition.assigned
                      - vl.program.card_definition.unassigned
                      - vl.program.earning_rule.assigned
                      - vl.program.earning_rule.unassigned
                      - vl.program.reward.assigned
                      - vl.program.reward.unassigned
                      - vl.program.reward.updated
                      - vl.program.tier_structure.assigned
                      - vl.program.tier_structure.unassigned
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $in:
              description: Field equals any of the given types (up to 10).
              oneOf:
                - type: string
                  enum:
                    - vl.program.created
                    - vl.program.updated
                    - vl.program.deleted
                    - vl.program.activated
                    - vl.program.deactivated
                    - vl.program.card_definition.assigned
                    - vl.program.card_definition.unassigned
                    - vl.program.earning_rule.assigned
                    - vl.program.earning_rule.unassigned
                    - vl.program.reward.assigned
                    - vl.program.reward.unassigned
                    - vl.program.reward.updated
                    - vl.program.tier_structure.assigned
                    - vl.program.tier_structure.unassigned
                - type: array
                  items:
                    type: string
                    enum:
                      - vl.program.created
                      - vl.program.updated
                      - vl.program.deleted
                      - vl.program.activated
                      - vl.program.deactivated
                      - vl.program.card_definition.assigned
                      - vl.program.card_definition.unassigned
                      - vl.program.earning_rule.assigned
                      - vl.program.earning_rule.unassigned
                      - vl.program.reward.assigned
                      - vl.program.reward.unassigned
                      - vl.program.reward.updated
                      - vl.program.tier_structure.assigned
                      - vl.program.tier_structure.unassigned
                  minItems: 1
                  maxItems: 10
                - type: 'null'
            $not_in:
              description: Field equals none of the given types (up to 10).
              oneOf:
                - type: string
                  enum:
                    - vl.program.created
                    - vl.program.updated
                    - vl.program.deleted
                    - vl.program.activated
                    - vl.program.deactivated
                    - vl.program.card_definition.assigned
                    - vl.program.card_definition.unassigned
                    - vl.program.earning_rule.assigned
                    - vl.program.earning_rule.unassigned
                    - vl.program.reward.assigned
                    - vl.program.reward.unassigned
                    - vl.program.reward.updated
                    - vl.program.tier_structure.assigned
                    - vl.program.tier_structure.unassigned
                - type: array
                  items:
                    type: string
                    enum:
                      - vl.program.created
                      - vl.program.updated
                      - vl.program.deleted
                      - vl.program.activated
                      - vl.program.deactivated
                      - vl.program.card_definition.assigned
                      - vl.program.card_definition.unassigned
                      - vl.program.earning_rule.assigned
                      - vl.program.earning_rule.unassigned
                      - vl.program.reward.assigned
                      - vl.program.reward.unassigned
                      - vl.program.reward.updated
                      - vl.program.tier_structure.assigned
                      - vl.program.tier_structure.unassigned
                  minItems: 1
                  maxItems: 10
                - type: 'null'
      required:
        - conditions
      additionalProperties: false
    ProgramDateFilterConditions:
      type: object
      description: >-
        Filter conditions for date fields (DATE field type). Allowed conditions:

        `$before`, `$after` (date values), `$is`, `$more_than`, `$less_than`

        (non-negative integers, interpreted as a number of days), `$has_value`,
        `$is_unknown`.

        Each condition accepts a single value or an array with a single value.
      properties:
        conditions:
          type: object
          minProperties: 1
          additionalProperties: false
          properties:
            $before:
              description: Field is before the given date.
              oneOf:
                - type: string
                  format: date-time
                - type: array
                  items:
                    type: string
                    format: date-time
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $after:
              description: Field is after the given date.
              oneOf:
                - type: string
                  format: date-time
                - type: array
                  items:
                    type: string
                    format: date-time
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $is:
              description: >-
                Field is exactly the given number of days ago. A non-negative
                integer number of days.
              oneOf:
                - type: string
                - type: array
                  items:
                    type: string
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $more_than:
              description: >-
                Field is more than the given number of days ago. A non-negative
                integer number of days.
              oneOf:
                - type: string
                - type: array
                  items:
                    type: string
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $less_than:
              description: >-
                Field is less than the given number of days ago. A non-negative
                integer number of days.
              oneOf:
                - type: string
                - type: array
                  items:
                    type: string
                  minItems: 1
                  maxItems: 1
                - type: 'null'
            $has_value:
              description: Field has a value (is not null).
              oneOf:
                - type: string
                - type: array
                  maxItems: 1
                - type: 'null'
            $is_unknown:
              description: Field has no value (is null).
              oneOf:
                - type: string
                - type: array
                  maxItems: 1
                - type: 'null'
      required:
        - conditions
      additionalProperties: false
    ProgramActivity:
      type: object
      description: >-
        An activity recorded for a program. The `data` payload always contains
        the `program`

        object snapshot; assignment activities additionally include the related
        resource

        (`card_definition`/`earning_rule`/`reward`/`tier_structure`) and the
        assignment object

        (`program_card_definition`/`program_earning_rule`/`program_reward`/`program_tier_structure`).
      properties:
        id:
          type: string
          description: Unique activity identifier.
          pattern: ^laprg_[a-f0-9]+$
        program_id:
          type: string
          description: Unique identifier of the program the activity relates to.
          pattern: ^lprg_[a-f0-9]+$
        type:
          type: string
          description: Activity type.
          enum:
            - vl.program.created
            - vl.program.updated
            - vl.program.deleted
            - vl.program.activated
            - vl.program.deactivated
            - vl.program.card_definition.assigned
            - vl.program.card_definition.unassigned
            - vl.program.earning_rule.assigned
            - vl.program.earning_rule.unassigned
            - vl.program.reward.assigned
            - vl.program.reward.unassigned
            - vl.program.reward.updated
            - vl.program.tier_structure.assigned
            - vl.program.tier_structure.unassigned
        data:
          type: object
          description: >-
            Activity payload. Always includes a `program` snapshot; assignment
            activities also include the assigned/unassigned resource and
            assignment objects.
        created_at:
          type: string
          format: date-time
          description: Activity timestamp (ISO 8601).
        group_id:
          type: string
          description: >-
            Unique identifier grouping activities recorded within the same
            operation.
        source:
          $ref: '#/components/schemas/ProgramActivitySource'
          description: Origin of the activity. Omitted when unknown.
    ProgramListCursor:
      type: object
      description: >-
        Cursor for fetching the next page of results. Present only when more
        results are available.
      properties:
        next:
          type: string
          description: >-
            Cursor id to pass as the `cursor` query parameter in the next
            request.
        expires_at:
          type: string
          format: date-time
          description: Timestamp after which the cursor expires and can no longer be used.
    ProgramActivitySource:
      type: object
      description: Origin of the activity.
      properties:
        channel:
          type: string
          description: Channel the activity originated from.
          enum:
            - USER_PORTAL
            - API
            - CLIENT_API
            - INTERNAL
        user:
          type: object
          description: >-
            User that triggered the activity. Present for user-originated
            activities.
          properties:
            id:
              type: string
              description: User identifier.
        api_key:
          type: object
          description: >-
            API key that triggered the activity. Present for API-originated
            activities.
          properties:
            name:
              type: string
              description: API key name.
            app_id:
              type: string
              description: Application id of the API key.
            client_app_id:
              type: string
              description: Client application id of the API key.
  securitySchemes:
    X-App-Id:
      type: apiKey
      name: X-App-Id
      in: header
    X-App-Token:
      type: apiKey
      name: X-App-Token
      in: header
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````