This page requires JavaScript to display.

Hosted or headless

Get started

Two ways in, one rail underneath. The difference is who writes the screen the person sees and who handles the proof — not what gets enforced, and not what the receipt says.

Hosted Headless You need An API key and a redirect An API key, the SDK, and a frontend The screen Ours, white-labelled as yours Yours, every pixel The proof Never touches your code The SDK hands it to your server You get the result session.completed + GET /sessions/{id} In the endpoint response Receipts Identical Identical Price Identical. White-label included in the free tier. Identical

The hosted flow

01 Your server calls POST /sessions with a mode and a return_url . 02 You redirect the person to the returned url . Single-use, 30 minutes. 03 The reading happens on their device, on our screen. Nothing biometric reaches either of us. 04 We fire session.completed and send the person to your return_url . 05 You read GET /sessions/{id} and continue. That response is the truth; the query string is a hint.

White-label

The hosted screen is yours visually. Logo, accent colour, headline, footer note and your own hostname — set branding on the session. Included in the free tier, not an upgrade.

branding

"branding": { "logo_url": "https://acme.example/logo.svg", "accent": "#2DD48F", "domain": "id.acme.example", "headline": "Authorise your assistant", "footer_note": "Acme never sees your documents." }

For domain , point a CNAME at Sidaxis and register the host in the console — the same allowlist that governs return_url . The certificate is issued for you. Which one to pick Start hosted. It is the shortest path to a real mandate and it removes the part of the integration you would otherwise have to maintain — camera permissions, retries, accessibility, device quirks. Move a flow to headless when the screen itself is the product. See also Reference: create a session → Reference: read a session result → Webhooks →

Unpacking...