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

# List Products

> Retrieve a paginated list of products

# List Products

Retrieve a list of products with optional filtering and pagination.

<Note>Requires `read:products` scope.</Note>

## Request

```bash theme={null}
GET /api/v1/products
```

### Query Parameters

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

<ParamField query="limit" type="integer" default="50">
  Items per page (max 100)
</ParamField>

<ParamField query="search" type="string">
  Search by name, barcode, or SKU
</ParamField>

<ParamField query="category" type="string">
  Filter by category
</ParamField>

<ParamField query="weighable" type="boolean">
  Filter by weighable products
</ParamField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.zenflow.com.ar/api/v1/products?page=1&limit=20&search=widget" \
    -H "X-API-Key: zenflow_live_your_key"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api.zenflow.com.ar/api/v1/products?search=widget",
    { headers: { "X-API-Key": "zenflow_live_your_key" } }
  );
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "success": true,
  "data": {
    "products": [
      {
        "id": 100,
        "barcode": "7891234567890",
        "external_id": "SKU-001",
        "name": "Widget A",
        "category": "Electronics",
        "price": 29.99,
        "weight": 0.5,
        "weighable": false,
        "is_active": true
      }
    ],
    "pagination": {
      "total": 150,
      "page": 1,
      "limit": 20,
      "total_pages": 8
    }
  }
}
```
