**Version: 202607**

# List redemption campaigns

**GET** `/openapi/2026-07/loyalty/redemption-campaigns`

Return campaigns where members can redeem points for discount codes

## Request

**Query Parameters**

- `member_id` string

  Optional member ID. When present, only campaigns redeemable by this member are returned
- `status` string

  Campaign status: active or inactive. Empty returns all
- `cursor` string

  Pagination cursor
- `limit` int32

  Page size. Default 50, max 200

## Responses

**200**

OK

**application/json**

**Schema | Example**

**Schema**

- `code` string

  error code
- `message` string

  error message
- `data` object

  - `active_points` int64

    Member active points. Returned when the request contains a member ID
  - `items` object[]

    Campaign list

    *   Array \[

    - `campaign_id` string

      Campaign ID
    - `name` string

      Campaign name
    - `event_type` string

      Event type, for example redeem\_discount\_code
    - `activity_type` string

      Activity type: order\_discount, product\_discount, free\_shipping, or buy\_x\_get\_y
    - `active` boolean

      Whether the campaign is active
    - `redeem_points` int64

      Points required per redemption
    - `limit_redeem_count` int32

      Per-member max redemption count. Zero means unlimited
    - `member_used_times` int64

      Times this member has redeemed. Returned only with member context
    - `execution_schedule` object

      Execution schedule rule (corresponds to vo.ExecutionScheduleRule); strongly typed

      - `type` string

        Schedule type: time\_range / weekly / monthly / cycle
      - `effective_started_at` string

        Effective start time, RFC3339 (empty means open-start)
      - `effective_ended_at` string

        Effective end time, RFC3339 (empty means open-end)
      - `months` string[]

        Months (effective when type=monthly), 1-12 as string
      - `days` string[]

        Days. weekly: 0-6 (Sun-Sat); monthly: 1-31; otherwise unused
      - `date` string

        Specific date string (e.g. yyyy-MM-dd)
    - `member_condition` object

      Applicable member range

      - `type` string

        Type: scope or expression
      - `scope` object

        Scope payload when type is scope
      - `expression` object

        Expression payload when type is expression
    - `campaign_reward` object

      Campaign reward config

      - `discount_code_activity` object

        Discount-code activity config; present when event\_type=redeem\_discount\_code

        - `name` string

          Campaign name
        - `discount_type` string

          Discount type: percentage / fixed\_amount / free\_shipping / bxgy
        - `discount_value` string

          Discount value; percentage carries a numeric string (e.g. "10"); fixed\_amount carries an amount string (e.g. "10.00"); free\_shipping / bxgy leave it empty
        - `prerequisite_type` string

          Prerequisite condition type: none / subtotal / quantity
        - `prerequisite_value` string

          Prerequisite condition value; amount string when subtotal, quantity when quantity
        - `max_free_shipping` string

          Max free-shipping amount (free-shipping only); -1 means unlimited. String preserves decimals
        - `applicable_rule` object

          Applicable resource rule

          - `applicable_type` string

            Applicable type: all / include\_products / include\_collections
          - `applicable_product_ids` string[]

            Product IDs when applicable\_type=include\_products
          - `applicable_variant_ids` string[]

            Variant IDs when applicable\_type=include\_products
          - `applicable_collection_ids` string[]

            Collection IDs when applicable\_type=include\_collections
        - `obtain_products` object

          Obtain products rule (BXGY only)

          - `applicable_rule` object

            Applicable rule for obtainable products

            - `applicable_type` string

              Applicable type: all / include\_products / include\_collections
            - `applicable_product_ids` string[]

              Product IDs when applicable\_type=include\_products
            - `applicable_variant_ids` string[]

              Variant IDs when applicable\_type=include\_products
            - `applicable_collection_ids` string[]

              Collection IDs when applicable\_type=include\_collections
          - `product_count` uint32

            Obtain product count
          - `obtain_type` string

            Obtain discount type: free / percentage / fixed\_amount
          - `obtain_value` string

            Obtain discount value; decimal string
        - `use_with_other` boolean

          Allow stacking with other discounts
        - `limit_user_discount` int32

          Per-member campaign usage cap; -1 means unlimited
        - `limit_code_user_discount` int32

          Per-member per-code usage cap; -1 means unlimited
        - `limit_order_discount` int32

          Per-order usage cap; -1 means unlimited
        - `limit_code_max_discount` int32

          Per-code total usage cap; -1 means unlimited
        - `started_at` string

          Campaign start time; ISO 8601 UTC
        - `ended_at` string

          Campaign end time; ISO 8601 UTC. Empty string means open-ended
    *   \]
  - `next_cursor` string

    Next-page cursor
  - `has_more` boolean

    Whether more pages exist
  - `limit` int32

    Returned page size

```json
{
  "code": "string",
  "message": "string",
  "data": {
    "active_points": 0,
    "items": [
      {
        "campaign_id": "string",
        "name": "string",
        "event_type": "string",
        "activity_type": "string",
        "active": true,
        "redeem_points": 0,
        "limit_redeem_count": 0,
        "member_used_times": 0,
        "execution_schedule": {
          "type": "string",
          "effective_started_at": "string",
          "effective_ended_at": "string",
          "months": [
            "string"
          ],
          "days": [
            "string"
          ],
          "date": "string"
        },
        "member_condition": {
          "type": "string",
          "scope": {},
          "expression": {}
        },
        "campaign_reward": {
          "discount_code_activity": {
            "name": "string",
            "discount_type": "string",
            "discount_value": "string",
            "prerequisite_type": "string",
            "prerequisite_value": "string",
            "max_free_shipping": "string",
            "applicable_rule": {
              "applicable_type": "string",
              "applicable_product_ids": [
                "string"
              ],
              "applicable_variant_ids": [
                "string"
              ],
              "applicable_collection_ids": [
                "string"
              ]
            },
            "obtain_products": {
              "applicable_rule": {
                "applicable_type": "string",
                "applicable_product_ids": [
                  "string"
                ],
                "applicable_variant_ids": [
                  "string"
                ],
                "applicable_collection_ids": [
                  "string"
                ]
              },
              "product_count": 0,
              "obtain_type": "string",
              "obtain_value": "string"
            },
            "use_with_other": true,
            "limit_user_discount": 0,
            "limit_code_user_discount": 0,
            "limit_order_discount": 0,
            "limit_code_max_discount": 0,
            "started_at": "string",
            "ended_at": "string"
          }
        }
      }
    ],
    "next_cursor": "string",
    "has_more": true,
    "limit": 0
  }
}
```
