Zones and inventory
| Method | Path | Does |
|---|---|---|
GET | /zones | List zones |
POST | /zones | Create a zone |
PATCH | /zones/{id} | Rename a zone or change its kind |
DELETE | /zones/{id} | Delete a zone |
GET | /inventory/summary | How many tags are in each zone now |
GET | /zones/{id}/inventory | Which tags are in a zone now |
To map antennas to zones, see Readers and antennas.
List zones
GET /zones
[
{ "id": "9d2e4f60-1a3b-4c5d-8e7f-6a5b4c3d2e10", "siteId": "1f0e2d3c-4b5a-4968-8776-655443322110", "name": "Receiving", "kind": "staging" }
]
Sorted by name. siteId identifies the site the zone belongs to. Most accounts have a single site.
Create a zone
POST /zones
{ "name": "Aisle C", "kind": "storage" }
name is required. kind is one of storage (default), staging, portal, checkpoint or other. Returns 201 with the zone.
Update a zone
PATCH /zones/{id}
{ "name": "Aisle C (cold)" }
Send name, kind or both. Anything you leave out stays the same. Returns the zone.
Delete a zone
DELETE /zones/{id}
Antennas mapped to the zone become unmapped, and tags located there lose their location until they're next seen somewhere else. Returns 204.
Inventory summary
GET /inventory/summary
[
{ "zoneId": "9d2e4f60-1a3b-4c5d-8e7f-6a5b4c3d2e10", "zoneName": "Receiving", "kind": "staging", "total": 214, "correlated": 12 }
]
| Field | |
|---|---|
total | Tags present in the zone, meaning seen there in the last five minutes. |
correlated | How many of those are linked to an asset. |
Every zone is listed, including empty ones.
What's in a zone
GET /zones/{id}/inventory
[
{
"tagId": "0b7f0b8e-2c55-4a8b-9b1e-6d0f7e1c2a90",
"epc": "E2801160600002084F1A3C21",
"label": null,
"targetType": null,
"since": "2026-10-10T13:40:02.000Z",
"lastSeenAt": "2026-10-10T14:03:22.418Z"
}
]
Tags present in the zone now, up to 1,000. since is when the tag arrived in this zone. label and targetType are filled in for tags linked to an asset, with the asset's name and "asset".
To get every tag's last known zone, including tags not seen in the last five minutes, use GET /tags (its zoneName field) or the live event stream, which reports each move as it happens.