# List products

`GET https://api.parklio.com/v2/products`

Lists the products your token can see, with their current state.

- Each product has exactly one **type block**, named after its type: `barrier`, `gate`, `chain`, `bollard` or `brain`. See [Products and operations](/concepts/products-and-operations).
- `status` is `online` while a Gateway sees the product. `battery_status` (barriers only) and `rssi` are `null` while offline.
- `lot_id` filters on the lot of the product's **zone**.
- Products that aren't paired aren't listed.

**Auth:** `Authorization: Bearer <token>`

## Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `sort` | string[] | no | Sort as `field:asc` or `field:desc`. Send it once. Fields: `name`, `id`, `created_at`, `updated_at`. See [Sorting](/api/conventions#sorting). |
| `page` | number | no | Page number, starting at 1. See [Paging](/api/conventions#paging). |
| `size` | number | no | Items per page: 10 by default, at most 300. See [Paging](/api/conventions#paging). |
| `filter` | string[] | no | Filter as `field:rule:value`, for example `lot_id:eq:7`. Repeat `filter` to combine filters; all must match. Fields: `account_id`, `lot_id`, `name`, `product_type_id`, `zone_id`, `device_id`. See [Filtering](/api/conventions#filtering). |

## Responses

### 200

```json
{
  "success": true,
  "data": [
    {
      "id": 123,
      "device_id": "B1234567",
      "name": "Entrance barrier",
      "power_type": "battery",
      "lot_id": 7,
      "zone_id": 9,
      "product_type_id": 2,
      "hardware_version": null,
      "firmware_version": null,
      "latitude": 45.815,
      "longitude": 15.982,
      "status": "online",
      "advertisement_data": "<base64>",
      "battery_status": 80,
      "rssi": -70,
      "product_error": null,
      "created_at": "2026-01-15T09:30:00.000Z",
      "updated_at": "2026-01-15T09:30:00.000Z",
      "barrier": {
        "id": 41,
        "product_id": 123,
        "state": "closed",
        "is_autoclose": 1,
        "is_car_on_top": 0,
        "autoclose_time": 45,
        "created_at": "2026-01-15T09:30:00.000Z",
        "updated_at": "2026-01-15T09:30:00.000Z"
      }
    }
  ],
  "meta": {
    "total": 1,
    "per_page": 10,
    "current_page": 1,
    "last_page": 1,
    "first_page": 1,
    "first_page_url": "/?page=1",
    "last_page_url": "/?page=1",
    "next_page_url": "/?page=2",
    "previous_page_url": null
  }
}
```

### 401 — Account user is not logged in and they should log in again.

```json
{
  "success": false,
  "errors": [
    {
      "code": 1,
      "message": "Unauthorized access."
    }
  ]
}
```

