Quickstart
From install to verified user in five minutes. Each stack picks up the same four-step shape — install, initialize, ask for an OTP, verify it.
1. Grab your API keys
Sign in to the QuickAuth dashboard at app.quickauth.in and copy your qa_test_*** public key. Test keys never burn credits — every phone number verifies with the fixed OTP 123456.
Public vs secret
The qa_test_*** / qa_live_*** public key is safe to ship in your client bundle. The matching qa_secret_*** stays on your backend and is only used to mint short-lived session tokens — see Backend integration.
2. Pick your stack
Open the SDK page that matches what you’re building:
Browser / React / Vue
The smallest SDK we ship — 3.6 KB gzipped, zero runtime deps.
npm install @quickauth/webReact NativeCross-platform mobile
One JS API, native modules under the hood for SMS Retriever + oneTimeCode.
npm install @quickauth/react-nativeiOSNative Swift
Pure Swift, SwiftUI + UIKit components, SPM and CocoaPods.
pod 'QuickAuthIn', '~> 1.1.0'AndroidNative Kotlin
Jetpack Compose components, SMS Retriever auto-fill — no permission prompt.
implementation('in.quickauth:sdk:1.1.0')FlutterSingle Dart package
Material widgets + iOS/Android native bridges shipped together.
flutter pub add quickauthNo SDKHTTP API directly
Hit our REST endpoints from any language. Useful for server-to-server flows or unsupported stacks.
3. Wire your backend (5 lines)
For production traffic — never embed qa_secret_*** in a mobile app or browser bundle — expose a thin endpoint that mints a 10-minute session token. The SDK calls it whenever it needs to refresh.
// POST /api/quickauth-token
app.post('/api/quickauth-token', requireAuth, async (req, res) => {
const r = await fetch('https://api.quickauth.in/v1/sdk/session', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Client-Id': process.env.QUICKAUTH_CLIENT_ID,
'X-Client-Secret': process.env.QUICKAUTH_CLIENT_SECRET,
},
body: JSON.stringify({ scope: 'sdk' }),
})
res.json(await r.json())
})4. Run your first OTP
Continue on the SDK page you opened above — each one has a copy-paste “first OTP” block under Headless OTP. You’ll be at a working OTP screen on real device in 5 minutes flat.