---
title: "List products"
method: GET
path: "/api/v1/products"
tags: ["Products"]
---

# List products

`GET /api/v1/products`

Returns a paginated list. Supports `?page`, `?limit`, `?sort`, `?order`, and any field as a filter (e.g. `?status=pending`). Also supports `?delay`, `?error`, `?random_fail` for simulation. Need richer filters (ranges, contains, in-lists)? Send the same request as **QUERY /api/v1/products** with a JSON body instead — see the API description above.

## Query parameters

- `page` integer
- `limit` integer
- `sort` string
- `order` 'asc' | 'desc' | 'ASC' | 'DESC'
- `delay` integer
- `error` integer
- `random_fail` 'true' | 'false'

## Response `200`

Default Response

- object
  - `success` boolean
  - `data` object[]
    - `id` string, uuid
    - `name` string
    - `price` number
    - `description` string
    - `stock` integer
    - `category` string
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `pagination` object
    - `total` integer — Total matching records
    - `page` integer
    - `limit` integer
    - `pages` integer — Total page count
    - `hasNext` boolean
    - `hasPrev` boolean

---

[API](https://skmtc.net/totalshiftleft/apis/api-learning-sandbox.md) · [All operations](https://skmtc.net/totalshiftleft/apis/api-learning-sandbox/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/totalshiftleft/api-learning-sandbox/revisions/3b3179c504b0/schema)
