> ## 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.

# Get Discount

> Retrieve a single discount code

# Get Discount

Returns a single discount code by its ID.

## Request

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

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.launchmystore.io/api/v1/discounts/disc_abc123.json', {
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
    }
  });
  ```
</CodeGroup>

## Path Parameters

<ParamField path="id" type="string" required>
  The unique discount ID
</ParamField>

## Response

Returns the standard response envelope with the discount under `data.discount`.

<ResponseField name="status" type="integer">
  HTTP status code
</ResponseField>

<ResponseField name="state" type="string">
  Result state, e.g. `success`
</ResponseField>

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

<ResponseField name="data" type="object">
  Wrapper containing the `discount`

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

    <ResponseField name="code" type="string">
      Discount code
    </ResponseField>

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

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

    <ResponseField name="discountPercentage" type="number">
      Discount percentage (for `Percentage` type)
    </ResponseField>

    <ResponseField name="discountAmount" type="number">
      Flat discount amount (for `Flat` type)
    </ResponseField>

    <ResponseField name="maxDiscount" type="number">
      Maximum discount cap
    </ResponseField>

    <ResponseField name="minOrderCondition" type="string">
      Minimum order condition: `OrderQuantity`, `OrderValue`
    </ResponseField>

    <ResponseField name="minOrderValue" type="number">
      Minimum order value to apply the discount
    </ResponseField>

    <ResponseField name="minOrderQuantity" type="number">
      Minimum item quantity to apply the discount
    </ResponseField>

    <ResponseField name="minOrderTotal" type="number">
      Minimum order total after which the coupon applies
    </ResponseField>

    <ResponseField name="usesPerCustomer" type="integer">
      Maximum uses per customer
    </ResponseField>

    <ResponseField name="usesPerOrder" type="integer">
      Maximum uses per order
    </ResponseField>

    <ResponseField name="totalCoupons" type="integer">
      Total redemptions allowed
    </ResponseField>

    <ResponseField name="usedCount" type="integer">
      Number of times used
    </ResponseField>

    <ResponseField name="discountProvided" type="number">
      Total discount provided across redemptions
    </ResponseField>

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

    <ResponseField name="showCoupon" type="boolean">
      Whether the coupon is shown publicly
    </ResponseField>

    <ResponseField name="onlinePayments" type="boolean">
      Whether limited to online payments
    </ResponseField>

    <ResponseField name="validForNewCustomers" type="boolean">
      Whether limited to new customers
    </ResponseField>

    <ResponseField name="autoApply" type="boolean">
      Whether the coupon auto-applies
    </ResponseField>

    <ResponseField name="buyQuantity" type="integer">
      Buy quantity (for `BuyXGetY` type)
    </ResponseField>

    <ResponseField name="getQuantity" type="integer">
      Get quantity (for `BuyXGetY` type)
    </ResponseField>

    <ResponseField name="freeShippingCondition" type="string">
      Free shipping condition: `EveryPurchase`, `AboveCertainAmount`
    </ResponseField>

    <ResponseField name="freeShippingAmount" type="number">
      Threshold for `AboveCertainAmount` free shipping
    </ResponseField>

    <ResponseField name="freebie" type="array">
      Freebie items (for `Freebie` type)
    </ResponseField>

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

    <ResponseField name="endDate" type="string">
      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>

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "discount": {
      "couponId": "disc_abc123",
      "code": "SUMMER20",
      "type": "Percentage",
      "status": "Active",
      "discountPercentage": 20,
      "discountAmount": null,
      "maxDiscount": 50,
      "minOrderCondition": "OrderValue",
      "minOrderValue": 50,
      "minOrderQuantity": null,
      "minOrderTotal": 50,
      "usesPerCustomer": 1,
      "usesPerOrder": null,
      "totalCoupons": 500,
      "usedCount": 145,
      "discountProvided": 1450,
      "applyOnProducts": [],
      "showCoupon": true,
      "onlinePayments": false,
      "validForNewCustomers": false,
      "autoApply": false,
      "buyQuantity": null,
      "getQuantity": null,
      "freeShippingCondition": "EveryPurchase",
      "freeShippingAmount": 0,
      "freebie": [],
      "startDate": "2024-06-01",
      "endDate": "2024-08-31",
      "storeId": "store_abc123",
      "createdAt": "2024-05-15T10:00:00.000Z",
      "updatedAt": "2024-05-15T10:00:00.000Z"
    }
  }
}
```

## Errors

On failure the same envelope is returned with `state: "error"` and a `message`:

```json theme={null}
{
  "status": 404,
  "state": "error",
  "message": "Discount not found",
  "data": null
}
```

| Status | Condition                                     |
| ------ | --------------------------------------------- |
| `401`  | Invalid or missing access token               |
| `403`  | App doesn't have `read_discounts` scope       |
| `404`  | Discount with the specified ID does not exist |
