> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Discounts

> Retrieve a list of discount codes

# List Discounts

Returns a paginated list of discount codes in the store.

## Request

```bash theme={null}
curl -X GET "https://api.launchmystore.io/api/v1/discounts.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Parameters

<ParamField query="page" type="integer" default="1">
  Page number for pagination
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Number of items per page
</ParamField>

<ParamField query="status" type="string">
  Filter by status: `active`, `expired`, `scheduled`, `disabled`
</ParamField>

<ParamField query="code" type="string">
  Search by discount code (partial, case-insensitive match)
</ParamField>

## Response

Returns the standard response envelope. The `data` object contains the
discount rows plus flat pagination counters.

<ResponseField name="status" type="integer">
  HTTP status code (e.g. `200`)
</ResponseField>

<ResponseField name="state" type="string">
  Response state: `success` or `error`
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable message (`null` on success)
</ResponseField>

<ResponseField name="data.discounts" type="array">
  Array of discount objects

  <Expandable title="Discount Object">
    <ResponseField name="couponId" type="string">
      Unique discount ID (UUID)
    </ResponseField>

    <ResponseField name="code" type="string">
      Discount code (e.g., "SUMMER20")
    </ResponseField>

    <ResponseField name="type" type="string">
      Discount type: `Percentage`, `Flat`, `FreeShipping`, `BuyXGetY`, `Freebie`
    </ResponseField>

    <ResponseField name="status" type="string">
      Current status: `Active` or `Inactive`
    </ResponseField>

    <ResponseField name="discountPercentage" type="number">
      Percentage value (set when `type` is `Percentage`, otherwise `null`)
    </ResponseField>

    <ResponseField name="discountAmount" type="number">
      Flat discount amount (set when `type` is `Flat`, otherwise `null`)
    </ResponseField>

    <ResponseField name="minOrderTotal" type="number">
      Minimum order total required for the discount to apply
    </ResponseField>

    <ResponseField name="totalCoupons" type="integer">
      Maximum number of uses (`0` for unlimited)
    </ResponseField>

    <ResponseField name="usedCount" type="integer">
      Number of times the discount has been used
    </ResponseField>

    <ResponseField name="usesPerCustomer" type="integer">
      Uses allowed per customer (`null` for unlimited)
    </ResponseField>

    <ResponseField name="applyOnProducts" type="array">
      Product IDs the discount is scoped to
    </ResponseField>

    <ResponseField name="startDate" type="string">
      Start date
    </ResponseField>

    <ResponseField name="endDate" type="string">
      End date (`null` for no end date)
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      Creation timestamp (ISO 8601)
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      Last update timestamp (ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="data.total" type="integer">
  Total number of matching discounts
</ResponseField>

<ResponseField name="data.page" type="integer">
  Current page number
</ResponseField>

<ResponseField name="data.limit" type="integer">
  Page size used for this request
</ResponseField>

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "discounts": [
      {
        "couponId": "f73049dc-b4d4-4f85-99c2-681a5e351a8a",
        "code": "SUMMER20",
        "type": "Percentage",
        "status": "Active",
        "discountPercentage": 20,
        "discountAmount": null,
        "minOrderTotal": 50,
        "totalCoupons": 500,
        "usedCount": 145,
        "usesPerCustomer": 1,
        "applyOnProducts": [],
        "startDate": "2024-06-01T00:00:00Z",
        "endDate": "2024-08-31T23:59:59Z",
        "createdAt": "2024-05-15T10:00:00Z",
        "updatedAt": "2024-07-01T14:30:00Z"
      },
      {
        "couponId": "a912c0de-1f44-4c0a-9b2e-2f1d77c3e110",
        "code": "FREESHIP",
        "type": "FreeShipping",
        "status": "Active",
        "discountPercentage": null,
        "discountAmount": null,
        "minOrderTotal": 75,
        "totalCoupons": 0,
        "usedCount": 89,
        "usesPerCustomer": null,
        "applyOnProducts": [],
        "startDate": "2024-01-01T00:00:00Z",
        "endDate": null,
        "createdAt": "2024-01-01T08:00:00Z",
        "updatedAt": "2024-01-01T08:00:00Z"
      }
    ],
    "total": 15,
    "page": 1,
    "limit": 50
  },
  "count": null,
  "pagination": null
}
```

## Error Response

Errors return the same envelope with an `error` state and the message under
`message`:

```json theme={null}
{
  "status": 500,
  "state": "error",
  "message": "Something went wrong",
  "data": null
}
```
