Skip to main content
By default, tapping a chip lands the user on Endstate’s hosted verify page. This guide shows how to host that experience yourself - your domain, your design - by combining tap redirects with a verify call. You configure a redirect to a page you own, and Endstate sends each tap there with the chip_id and one-time e. Verifying that tap is a single call - POST /v1/taps - and it takes either credential: One endpoint, one response shape, and the same result either way: a session token bound to that tap. Pick the backendless path if your verify page is static or you have no server to run.

Prerequisites

  • Registered items - a collection, a unit per item, and a paired chip. See Set up your catalog.
  • A secret API key (end_sk_...), used server-side only. Needed to configure redirects either way.
  • A page on your domain to receive taps (the redirect destination).
  • Backendless only: your publishable key from GET /v1/publishable-keys, and your page’s origin on your browser allow-list.
1

Point taps at your page

Set a redirect_url to the page you’ll host. Choose the level that matches how broadly it applies - a single unit, a whole collection, or your organization default:
From now on, a tap on any item covered by that redirect sends the user to your URL with the tap’s chip_id and e appended:
The most specific redirect wins (unit → collection → org default). See Tap redirects for the full resolution order.
2

Read the tap on your page

Both paths start here - pull the two values off the query string.
With @endstate-sdk/core, tryParseTapUrl does the reading for you and returns null when the page carries no tap - see Tap sessions.
The e value is single-use and short-lived. Verify promptly; do not log it or store it at rest.
3

Verify the tap

A successful verify is the proof of authenticity - it can only be produced by a genuine chip that was just tapped.
Forward the two values to your server. Your browser code never calls Endstate with your secret key.
Your server verifies the tap. The unit comes back with the session, so you are done in one call.
See Verify a unit for the full response, the session-token model, and error handling.
4

Render the result

Render a branded authenticity view from the unit - its name, attributes, and serial (unit.collection.token.serial). With a backend, return the unit to your page and pass the session_token.token (end_sess_...) along if a follow-on action needs it; it’s safe in the browser, unlike your API key. Backendless, the page already holds both.A successful verify means authentic. A failure (chip.invalid_e_value, chip.already_scanned) means the tap couldn’t be confirmed - show a “tap again” state rather than asserting the item is fake on a single failed tap.
The session token also authorizes claiming the unit - transferring ownership to a recipient. You can add that to your page as a next step. See Claim a unit.

Next steps

Verify a unit

The full server-side verification flow and its response in depth.

CORS origins

Allow-listing the origins your page is served from, required for the backendless path.

Tap redirects

Resolution order and how to set redirects per unit, collection, or org.