What is a unit?
A unit is the digital identity of a single physical item — its digital twin and its certificate of authenticity. Even if two items are identical SKUs (same product, same size, same color), each one is its own unit with its own identity, its own chip, and its own issuance history. Units live inside a collection. A collection defines the group (a product line, a drop, a release); a unit is one item within it.Why units matter
- Register items. Create a unit for each physical item when it enters your workflow — before it ships, before it’s paired to a chip.
- Map to your inventory. Use
external_idto tie each unit back to your own SKU, order line, or serial number. Filter lists byexternal_idto look up units without storing Endstate IDs. - Track issuance. A unit’s
collection.token.statustells you whether the item has been issued —pendingmeans the unit exists but has no chip yet;activemeans a chip is paired and the unit has acollection.token.serialwithin its collection. - Verify on tap. When a user taps an NFC chip, the API returns the unit record attached to it. That record is what you display, validate, or act on.
Unit object
The unit’s unique identifier. Stable; use this as your durable reference in
Endstate.
Your own identifier for this item — SKU, order line ID, serial number, or any
opaque string. Must be unique within your organization if provided. Null if
not set.
A human-readable label for the item (e.g.
"Black Hoodie — Size M").
Optional; null if not set.Free-form JSON you attach to this unit. Use this for any item-level metadata
that does not have a dedicated field — color, size, batch number, custom
fields. No enforced schema; store whatever your integration needs.
Where a user is sent after tapping this unit’s chip. Overrides the collection
and organization-default redirects. Null if not set — resolution then falls
through to the collection redirect, then your organization default. See Tap
redirects.
When the unit was created.
The collection this unit belongs to.
The NFC chips paired to this unit. Most units have exactly one chip; the array is empty until a chip is paired.
Create a unit
POST /v1/units
The ID of the collection this unit belongs to. The collection must already be
provisioned (
contract.status: "active"). Required.Your own identifier for this item. Must be unique within your organization.
Optional.
A human-readable label for the item. Optional.
Free-form JSON metadata to attach to the unit. Optional.
Where a user is sent after tapping this unit’s chip. Must be a valid absolute
URL. Optional — you can also set or change it later with
PATCH /v1/units/ {unit_id}. See Tap redirects.Example
The unit is returned at the top level, like every single-resource response —
see Response shape. It is created with
collection.token.status: "pending"; no serial is assigned yet — that happens
when a chip is paired. See Lifecycle below.Lifecycle
Units move through a simple two-state lifecycle:1
Create the unit
POST /v1/units — the unit is created with collection.token.status: "pending" and an empty chips array. No serial number yet.2
Pair a chip
POST /v1/chips with unit_id and the chip’s identifiers. Pairing links
the physical item to its digital record and triggers issuance.3
Unit is issued
Issuance is asynchronous. Poll
GET /v1/units/{unit_id} until
collection.token.status is "active". When active,
collection.token.serial holds the unit’s serial number within the
collection.Poll
GET /v1/units/{unit_id} to check issuance status.Endpoints
These endpoints take an API key, except claim and transfer creation, which require a session token (status polling takes either). See Authentication for header format and credential types.
For full request/response schemas, see the API reference.
Next steps
Chips
Pair an NFC chip to a unit to complete its digital record and trigger
issuance.
Collections
Understand how collections group units and define the serial-number
namespace.
Tap redirects
Send a user to your own destination after they tap this unit’s chip.

