Record a tap and issue a session token
Exchanges a tap for a session token. Send the chip_id and the single-use e value from the tap URL; the response is the token, when it expires, and what it is bound to, alongside the verified unit. Each e works exactly once. Accepts either an API key, when your server makes the call, or a publishable key, when the page makes it directly with no backend of your own behind it.
Authorizations
Use Authorization: Bearer end_sk_* for partner API keys (e.g. end_sk_AbCd_example_api_key).
Headers
Unique key that makes this request safe to retry. Replaying the key with the same body returns the original response with Idempotent-Replayed: true; replaying it with a different body returns 409 idempotency.key_conflict.
1 - 255"a1b2c3d4-0000-4000-8000-000000000000"
Body
Chip identifier from the tap URL.
^[0-9A-Fa-f]{10}$"ABCDEF0123"
The single-use value from the tap URL. Each one works exactly once.
^[0-9A-Fa-f]{32}$"C78566198547116F3A715DC1C62AF96F"
Tap verification code (c) from the tap URL. Include it whenever the tag provides one.
^[0-9A-F]{16}$"940E8AA6628759B3"
Session-token TTL override in seconds, between 60 and 3600 inclusive. Secret key only: a publishable-key caller does not choose how long its own credential lives.
60 <= x <= 3600600
Validate the tap without recording it or issuing a session token. Requires an admin secret key.
false
Response
The session token, its expiry, and the verified unit.
Tap identifier. null when dry_run is true, because no tap is recorded.
"12345678-1234-4567-8901-234567890abc"
Opaque session token scoped to this organization, chip, unit, and tap. null on dry_run.
Canonical verify URL on the org's verified domain. null when no verified domain exists.
"https://brand.example/verify/ABCDEF0123"

