One button on your form. The applicant consents, and you get a signed payload where every field says who verified it — CBSE, UIDAI, Income Tax, their bank — with document identifiers and fingerprints.
Or use the REST API directly. Sandbox keys work immediately; live keys after we verify your organisation.
<form action="/api/applyonce/session" method="POST">
<button>Apply with ApplyOnce</button>
</form>
// Your server creates a session and redirects with HTTP 303.import { createApplyOnce } from "@applyonce/sdk";
const applyonce = createApplyOnce({
apiKey: process.env.APPLYONCE_API_KEY,
baseUrl: process.env.APPLYONCE_API_URL
});
// Store a random state nonce in a server session first.
const session = await applyonce.createShareSession({
formSlug: "bta-jee-2026",
returnUrl: "https://your-portal.example/api/applyonce/callback",
state: savedNonce
});
// In your callback, validate state before exchanging:
const { payload, consent_id } = await applyonce.exchange(shareToken);pk_sandbox_… works against seeded demo citizens today.
ES256, verify against /api/v1/jwks. Typed schema in @applyonce/schema.
share.completed, consent.revoked, verification.updated, application.withdrawn.
The following tiers are a proposed model. No billing or payment collection is enabled.
Exam boards, universities, scholarship schemes, state portals. Unlimited applications. Forever.
Colleges, coaching, employers. First 1,000 free. Volume pricing above 1 lakh.
Banks, NBFCs, insurers. Adds PAN, penny-drop and AA income via your own licences.
Citizens never pay. We never sell data. Privacy notice · Security