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

# List products

> The products currently orderable. **No authentication** — this is the open endpoint.

A product appears only while it is active and at least one supply route can serve it. One that is absent cannot be ordered; one that is present may still fail to source, because availability is evaluated per order.

Rate limited to 120/min per source IP, shared with every caller behind that IP.

## Reading `value_mode`

| `value_mode` | What `denominations_minor` means       | What you may order                                           |
| ------------ | -------------------------------------- | ------------------------------------------------------------ |
| `FIXED`      | The complete set of orderable amounts. | Any element of the array, and nothing else.                  |
| `RANGE`      | A list of suggestions, possibly empty. | Amounts between `min_minor` and `max_minor` — but see below. |

<Warning>
  **On `RANGE` products, not every amount in the interval is orderable.** Amounts
  may be accepted only in steps. An amount that cannot be served is rejected at
  order time with `DENOMINATION_NOT_SUPPORTED`. If you need certainty, order the
  published denominations.
</Warning>

<Warning>
  **`fulfilment_hint` is not a guarantee.** `SYNC` means this product is *usually*
  fulfilled within seconds. It is an observation, and it can be wrong for any
  individual order. Never promise a customer instant delivery on the strength of
  it — wait for `FULFILLED`.
</Warning>


## OpenAPI

````yaml api-reference/endl-giftcard-api.json GET /catalog/products
openapi: 3.1.0
info:
  title: Endl Giftcard API
  version: '1'
  description: >-
    Order gift cards, poll them to completion, and retrieve the redemption
    material.


    Five endpoints, one signing scheme, and one rule that governs everything
    else: **an order is a fulfilment instruction, and it is accepted before it
    is finished.**


    This is a separate service from the Endl Partner API. It does not use
    `API-KEY`, it is not under `/api/v0`, and it does not take an `Api-Version`
    header. Requests are signed with HMAC-SHA256.
servers:
  - url: https://api-sandbox.endl.io/giftcards
    description: Sandbox — confirm the host with Endl
security: []
paths:
  /catalog/products:
    get:
      tags:
        - Catalogue
      summary: List products
      description: >-
        The products currently orderable. **No authentication** — this is the
        open endpoint.


        A product appears only while it is active and at least one supply route
        can serve it. One that is absent cannot be ordered; one that is present
        may still fail to source, because availability is evaluated per order.


        Rate limited to 120/min per source IP, shared with every caller behind
        that IP.
      parameters:
        - name: country
          in: query
          schema:
            type: string
          description: ISO 3166-1 alpha-2, case-insensitive. Exact match.
          example: IN
        - name: currency
          in: query
          schema:
            type: string
          description: ISO 4217, case-insensitive. Exact match.
          example: INR
        - name: brand
          in: query
          schema:
            type: string
          description: Case-insensitive substring match.
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
          description: >-
            1–500. **Clamped, not rejected** — a larger value silently becomes
            500, a non-numeric one becomes the default.
        - name: cursor
          in: query
          schema:
            type: string
          description: >-
            A `canonical_sku` from the previous page. `next_cursor` is `null` on
            the final page.
      responses:
        '200':
          description: A page of products.
          content:
            application/json:
              example:
                products:
                  - canonical_sku: BIGBASKET--IN--INR
                    brand: BigBasket
                    country: IN
                    currency: INR
                    name: BigBasket Gift Card
                    fulfilment_hint: SYNC
                    min_minor: '10000'
                    max_minor: '1000000'
                    value_mode: FIXED
                    denominations_minor:
                      - '10000'
                      - '50000'
                      - '100000'
                  - canonical_sku: FLIPKART--IN--INR
                    brand: Flipkart
                    country: IN
                    currency: INR
                    name: Flipkart Gift Card
                    fulfilment_hint: null
                    min_minor: '10000'
                    max_minor: '5000000'
                    value_mode: RANGE
                    denominations_minor:
                      - '50000'
                      - '100000'
                next_cursor: FLIPKART--IN--INR
        '429':
          description: >-
            Rate limited. Honour the `Retry-After` header, in whole seconds,
            never below 1.
          content:
            application/json:
              example:
                code: RATE_LIMITED
                message: rate limit exceeded
        '500':
          description: Unexpected server error. Retry with exponential backoff.
          content:
            application/json:
              example:
                code: INTERNAL_ERROR
                message: unexpected error
      security: []

````