Base URL & Authentication
All API requests require authentication via API key in the header:
Authorization: Bearer your_api_key_here
X-Client-ID: your_client_idQuick Start Guide
Get started in 3 steps
Get API Keys
Create a client account and receive your clientId and apiKey
Create Consent
Initialize an authentication session and generate a QR code for your user
Verify Response
Poll for status or receive webhook callback when user completes authentication
API Reference
Consents
Create and manage authentication sessions
POST /consents/authGET /consents/:idGET /consents/qr/:type/:idFIDO/WebAuthn
Passwordless biometric authentication
POST /fido/register/beginPOST /fido/register/completePOST /fido/authenticate/beginEnrollments
User registration and onboarding
POST /enrollmentsPOST /enrollments/:id/verifyGET /enrollments/:idDevices
Device registration and management
POST /devicesGET /devices/:idDELETE /devices/:idClients
Partner account management
POST /clientsGET /clients/:idPUT /clients/:idWebhooks
Event notifications
POST /webhooks/stripePOST /webhooks/appstorePOST /webhooks/playstoreInteractive API Sandbox
Test API endpoints with mock data. No real transactions are processed in sandbox mode.
Create Authentication Consent
FIDO2 Registration Flow
SDK Code Examples
Webhook Events
Configure webhooks to receive real-time notifications when authentication events occur.
Available Events
consent.created— New consent session createdconsent.approved— User approved the consentconsent.rejected— User rejected the consentconsent.expired— Consent session timed outdevice.registered— New device registereddevice.deregistered— Device removedWebhook Payload Example
{
"event": "consent.approved",
"timestamp": "2025-12-18T14:30:00Z",
"data": {
"sessionId": "cons_xxxxxxxxxxxxxxxx",
"clientId": "mid_client_xxxx",
"recipient": "+2348012345678",
"intent": "login",
"status": "approved",
"user": {
"id": "user_xxxxxxxx",
"mobile": "+2348012345678",
"verified": true
},
"device": {
"id": "device_xxxxxxxx",
"model": "iPhone 15 Pro"
}
},
"signature": "sha256=xxxxxxxxxxxxxxxxxxxxxxxx"
}Rate Limits
Error Handling
| Code | Description |
|---|---|
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Insufficient permissions |
404 | Not Found - Resource doesn’t exist |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error |
Security Best Practices
Use HTTPS Only
All API requests must use HTTPS encryption
Secure API Keys
Never expose keys in client-side code or version control
Validate Webhooks
Always verify webhook signatures before processing
Implement Retries
Use exponential backoff for failed requests