Skip to main content
A claim transfers on-chain ownership of a unit to a recipient wallet address. It is the action that hands a verified physical item to a new owner. Claims are authorized by a session token - the user must have just tapped that unit’s chip. This binds an ownership change to a real, recent tap of the physical product.
A claim hands a unit to its first owner, and Endstate can submit it for you. To move a unit between owners afterwards, use a transfer - the current owner submits that one from their own wallet.
For a step-by-step walkthrough from the tap to on-chain confirmation, follow the Claim a unit guide. This page is the reference.

How claiming works

1

Verify a tap

The user taps the item’s chip; your server verifies it (POST /v1/taps) and receives a session token scoped to that chip and unit.
2

Create the claim

Call POST /v1/units/{unit_id}/claims with the recipient’s wallet address and an execution mode, authorized by the session token. Endstate signs the transfer authorization for the unit’s token.
3

Settle on-chain

Depending on the execution mode, Endstate either submits the transfer transaction for you, or returns a transaction for you to broadcast.
4

Poll for status

Poll GET /v1/units/{unit_id}/claims/{claim_id} until status is claimed.

Execution modes

The execution field controls who broadcasts the on-chain transaction. With client_broadcast, the response includes submission: { to, data } - to is the collection’s contract address and data is the encoded transfer call. Send it as a transaction on the network the collection was provisioned on.

Authorization

POST /v1/units/{unit_id}/claims requires a session token (end_sess_...), and that token must come from a tap of the same unit’s chip. An API key alone cannot create a claim - claiming always traces back to a physical tap. GET /v1/units/{unit_id}/claims/{claim_id} accepts either an API key or a session token, so your backend or your client can poll for status. (Client-side polling from a browser requires your web origin on your organization’s CORS allowlist - see Session tokens.)

Create a claim

POST /v1/units/{unit_id}/claims
string
required
The recipient’s wallet address (EVM address, 0x followed by 40 hex characters). Ownership of the unit transfers to this address.
string
default:"endstate_relay"
endstate_relay - Endstate submits the transaction for you. client_broadcast - Endstate returns a transaction in submission for you to broadcast.

Endstate relay

Client broadcast

Pass "execution": "client_broadcast". The response adds a submission object - broadcast it to the network yourself.

Broadcasting the transaction

The submission is already authorized by Endstate’s signature, so any account with gas on the collection’s network can broadcast it - your own funded account or relayer works, and the recipient never signs. You need an RPC endpoint for that network and a sender account with gas.
Use any EVM wallet client or signer - see the viem or ethers docs for wallet setup. After broadcasting, poll the claim for status.

Claim status

GET /v1/units/{unit_id}/claims/{claim_id} - poll this until the claim settles.
The signed transfer authorization is valid for 30 minutes from claim creation; a claim that does not settle in that window becomes expired. With endstate_relay this rarely matters - Endstate submits immediately. With client_broadcast, broadcast the submission well within the window.

The claim object

string (UUID)
The claim’s unique identifier.
string (UUID)
The unit being transferred.
string
The recipient wallet address.
string
The current owner’s wallet address.
string
One of claiming, claimed, expired, failed.
object | null
Present only for client_broadcast. The transaction to broadcast - to (the collection’s contract address) and data (the encoded transfer call). null or absent for endstate_relay.
string (ISO-8601)
When the claim was created.

Errors

Branch on error.code, not the HTTP status. See Errors for the full envelope.

Next steps

Session tokens

How a tap produces the session token that authorizes a claim.

Units

The unit a claim transfers, and its issuance lifecycle.