Developer Portal
Developer Preview
Build Voice-PoweredAuthentication
Add voice authentication to your app in minutes with our JavaScript and Python SDKs, a drop-in widget, or the REST API.
~3s
Auth Time
AI
Deepfake Detection
Real-time
Verification
50+
Languages
Try It Live
Test Voice Authentication
Click the button below and speak for a few seconds to see voice authentication respond in real time.
This is a placeholder demo key — voice authentication below will fail with “Invalid API key.” Sign up for a real key to test live.
Authentication Result
Real-time response from VoiceIDVault API
Waiting for authentication...
Integration Options
Widget brand editor
Scan your URL to auto-apply your brand colours, font, and logo to the widget — then copy the ready-to-paste code.
JavaScript Widget
Drop-in widget for any website. No dependencies required.
<script src="https://cdn.voiceidvault.com/widget/v1/VoiceIDVaultWidget.js"></script>
<div data-voiceidvault
data-api-key="your-api-key"
data-environment="production">
</div>Zero dependencies
Auto-initialization
Responsive design
Dark/light themes
Built for Developers
Clean API Design
RESTful endpoints with predictable responses. GraphQL coming soon.
- Consistent error codes
- Detailed documentation
- Versioned endpoints
- Rate limit headers
Security First
Encryption and access controls; SOC 2 and ISO 27001 in progress.
- OAuth 2.0 support
- API key rotation
- IP whitelisting
- Audit logging
Performance
Optimized for speed with global edge locations.
- < 100ms latency
- 99.9% uptime target
- Auto-scaling
- CDN distribution
Quick Start Examples
Authentication Flow
// Initialize the client
import { VoiceIDVaultClient } from '@voiceidvault/sdk';
const client = new VoiceIDVaultClient({
apiKey: process.env.VOICEIDVAULT_API_KEY
});
// Handle login (audioBlob from MediaRecorder)
async function handleVoiceLogin(audioBlob) {
try {
const result = await client.authenticateVoice(audioBlob, {
userId: 'user-123',
confidenceThreshold: 0.85,
});
if (result.verified) {
// Success! Store session
localStorage.setItem('session', result.sessionToken);
window.location.href = '/dashboard';
}
} catch (error) {
console.error('Auth failed:', error);
}
}Registration Flow
// Register new voice identity
async function registerVoice(userId) {
try {
const registration = await voiceAuth.registerVoiceIdentity(userId);
if (registration.success) {
console.log('Voice registered!');
console.log('Voice ID:', registration.voiceId);
console.log('Trust Score:', registration.trustScore);
// Save to user profile
await updateUserProfile({
voiceId: registration.voiceId,
voiceVerified: true
});
}
} catch (error) {
console.error('Registration failed:', error);
}
}Continuous Authentication
// Verify user during session
setInterval(async () => {
const sessionToken = localStorage.getItem('session');
if (sessionToken) {
const isValid = await voiceAuth.verifyContinuousAuth(sessionToken);
if (!isValid) {
// Session compromised, force re-auth
alert('Security check failed. Please login again.');
window.location.href = '/auth/signin';
}
}
}, 300000); // Check every 5 minutesReact Hook
// Custom React hook
import { useState, useCallback } from 'react';
import { VoiceIDVaultClient } from '@voiceidvault/sdk';
export function useVoiceAuth() {
const [isAuthenticating, setIsAuthenticating] = useState(false);
const [user, setUser] = useState(null);
const authenticate = useCallback(async (audioBlob) => {
setIsAuthenticating(true);
try {
const client = new VoiceIDVaultClient({
apiKey: process.env.NEXT_PUBLIC_VOICEIDVAULT_API_KEY
});
const result = await client.authenticateVoice(audioBlob, { userId: 'user-123' });
if (result.verified) {
setUser(result);
return result;
}
} finally {
setIsAuthenticating(false);
}
}, []);
return { authenticate, isAuthenticating, user };
}