Skip to main content
POST
Record a tap and issue a session token

Authorizations

Authorization
string
header
required

Use Authorization: Bearer end_sk_* for partner API keys (e.g. end_sk_AbCd_example_api_key).

Headers

Idempotency-Key
string

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.

Required string length: 1 - 255
Example:

"a1b2c3d4-0000-4000-8000-000000000000"

Body

application/json
chip_id
string
required

Chip identifier from the tap URL.

Pattern: ^[0-9A-Fa-f]{10}$
Example:

"ABCDEF0123"

e
string
required

The single-use value from the tap URL. Each one works exactly once.

Pattern: ^[0-9A-Fa-f]{32}$
Example:

"C78566198547116F3A715DC1C62AF96F"

c
string

Tap verification code (c) from the tap URL. Include it whenever the tag provides one.

Pattern: ^[0-9A-F]{16}$
Example:

"940E8AA6628759B3"

ttl
integer | null

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.

Required range: 60 <= x <= 3600
Example:

600

dry_run
boolean

Validate the tap without recording it or issuing a session token. Requires an admin secret key.

Example:

false

Response

The session token, its expiry, and the verified unit.

id
string<uuid> | null
required

Tap identifier. null when dry_run is true, because no tap is recorded.

Example:

"12345678-1234-4567-8901-234567890abc"

session_token
object | null
required

Opaque session token scoped to this organization, chip, unit, and tap. null on dry_run.

chip
object
required
unit
object
required
redirect_url
string<uri> | null
required

Canonical verify URL on the org's verified domain. null when no verified domain exists.

Example:

"https://brand.example/verify/ABCDEF0123"

dry_run
boolean
required