# List products

GET https://api.oletapp.com/your-store/v1/products

A delta-sync polling list: poll with the returned `next_cursor` to see only what changed since the last page. Each row is the same full product document `products.get` returns: codes, tags, suppliers, variant options and attributes, and components, never a slimmer summary.

- Filter by exact `sku`, `active`, or `variant_parent_id`.

**Requires scope:** `catalog:read`

Required scope: `catalog:read`

## Parameters

| Name | In | Type | Required |
|---|---|---|---|
| `limit` | query | integer | no |
| `cursor` | query | string | no |
| `order` | query | "asc" | "desc" | no |
| `include_deleted` | query | boolean | no |
| `sku` | query | string | no |
| `active` | query | boolean | no |
| `variant_parent_id` | query | string | no |

## Response (200)

```
{
  data: { ... } | { ... }[]
  has_more: boolean
  next_cursor: string | null
}
```

Errors follow the standard error envelope: https://getolet.com/resources/developers/errors.md

## Example

```bash
curl -X GET "https://api.oletapp.com/your-store/v1/products" \
  -H "Authorization: Bearer olet_live_YOUR_API_KEY"
```
