Skip to main content
There is no embedded <script> widget to load. For browsers and native mobile apps, Bondify exposes two public endpoints that need only your project_id — no secret key on the client. This is what the React and Flutter SDKs call under the hood, and what you call directly when you have no SDK for your stack.
Enable Mobile SDK under Project → Settings to turn on the public endpoints. Without it, /generate/public and /verify/public return PUBLIC_ACCESS_DISABLED.

Endpoints

Base URL: https://api.bondify.dev

POST /api/v1/generate/public

Create a pending session.

POST /api/v1/verify/public

Poll for the session result. On the first confirmed read, the session becomes used.
1

Generate

Call /generate/public. Keep the session_token.
2

Open the deep link

Open deeplink (new tab on web, url_launcher/Linking on mobile).
3

Poll

Call /verify/public every ~2 seconds. Stop on confirmed, cancelled, or expired. The session’s TTL is 10 minutes; you’ll typically also stop polling after a couple of minutes of inactivity.
4

Verify on your server

Send the proof to your backend and verify it with your webhook_secret.

Error responses

Public endpoints return a 4xx with { "error": "…" } for these conditions:

Prefer an SDK when you have one

If you’re on React/Next.js or Flutter, use the official SDK instead of calling these endpoints by hand — it manages the generate/poll/expiry lifecycle, timeouts, and state for you:

React / Next.js

@bondify/react

Flutter

bondify_flutter — GitHub

REST API reference

All endpoints