---
title: "List coupons"
method: GET
path: "/api/v1/coupons"
tags: ["Coupons"]
---

# List coupons

`GET /api/v1/coupons`

## Query parameters

- `search` string
- `filter` 'ALL' | 'ACTIVE' | 'INACTIVE' | 'ARCHIVED'
- `order_by` string
- `page` integer
- `per_page` integer

## Response `200`

List of coupons

- CouponListResponse
  - `data` Coupon[], required
    - `archived_at` string, date-time, nullable
    - `code` string, required
    - `created_at` string, date-time, required
    - `description` string, nullable
    - `disabled` boolean, required
    - `discount` union, required
      - PercentageDiscount
        - `percentage` string, required
      - FixedDiscount
        - `amount` string, required
        - `currency` string, required
    - `expires_at` string, date-time, nullable
    - `id` string, MeteroidId, required
    - `plan_ids` PlanId[], required
    - `recurring_value` integer, nullable
    - `redemption_count` integer, required
    - `redemption_limit` integer, nullable
    - `reusable` boolean, required
  - `pagination_meta` PaginationResponse, required
    - `page` integer, required
    - `per_page` integer, required
    - `total_items` integer, required
    - `total_pages` integer, required

## Other responses

- `401` — Unauthorized
- `429` — Too many requests

## Changes

- **2026-08-12** (v1) `4e013b4e4a8f` — 2 breaking, 4 info
  - the response property `data/items/description` became nullable for the status `200`
  - the response property `data/items/description` became optional for the status `200`
  - added the optional property `data/items/archived_at` to the response with the `200` status
  - added the required property `data/items/created_at` to the response with the `200` status
  - …2 more
- **2026-03-31** (v1) `ee465c53a423` — 2 breaking, 1 info
  - the `data/items/discount/oneOf[#/components/schemas/FixedDiscount]/amount` response's property type/format changed from `string`/`decimal` to `string`/`` for status `200`
  - the `data/items/discount/oneOf[#/components/schemas/PercentageDiscount]/percentage` response's property type/format changed from `string`/`decimal` to `string`/`` for status `200`
  - response discriminator property name changed for `data/items/discount` response property from `discriminator` to `type` for the response status `200`
- **2026-03-30** (v1) `5cb340234766` — 1 info
  - added the new optional `query` request parameter `order_by`
- **2026-03-27** (v1) `de35c02bb0d2` — 1 warning, 1 info
  - added the new `TOO_MANY_REQUESTS` enum value to the `code` response property for the response status `401`
  - added the non-success response with the status `429`
- **2026-03-20** (v1) `51c7018cc5ef` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/meteroid-oss/apis/meteroid/changes/api/v1/coupons/get.md)

---

[API](https://skmtc.dev/meteroid-oss/apis/meteroid.md) · [All operations](https://skmtc.dev/meteroid-oss/apis/meteroid/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/meteroid-oss/meteroid/revisions/03f9d8ae5c5e/schema)
