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.

Powered by VoiceIDVault
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.

Open editor

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 minutes
React 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 };
}