API Reference
Build custom integrations with Voxanne AI's REST API. Manage agents, calls, contacts, and receive real-time events via webhooks.
Base URL
https://api.voxanne.aiAuthentication
Bearer token in Authorization header
Response Format
JSON with standard HTTP status codes
Authentication
All API requests require an API key passed in the Authorization header:
// Using API key in headers
fetch('https://api.voxanne.ai/api/agents', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
})Get your API key: Navigate to Dashboard → Settings → API Keys
Endpoints
Agents
Create and manage AI agents
/api/agentsList all agents for your organization
/api/agentsCreate a new AI agent
/api/agents/:idGet a specific agent by ID
/api/agents/:idUpdate an agent's configuration
/api/agents/:idDelete an agent
Calls
Access call logs and transcripts
/api/callsList all calls with filtering options
/api/calls/:idGet detailed call information
/api/calls/:id/transcriptGet call transcript
/api/calls/:id/recordingGet call recording URL
Contacts
Manage patient/customer contacts
/api/contactsList all contacts
/api/contactsCreate a new contact
/api/contacts/:idGet contact details
/api/contacts/:idUpdate contact information
/api/contacts/:id/call-backInitiate outbound call to contact
Appointments
Schedule and manage appointments
/api/appointmentsList appointments
/api/appointmentsCreate appointment
/api/appointments/:idUpdate appointment
/api/appointments/:idCancel appointment
Webhooks
Receive real-time events
/webhooks/vapiReceive Vapi voice events
/webhooks/stripeReceive Stripe billing events
/api/webhook-logsView webhook delivery logs
Code Examples
Create Agent
// Create a new AI agent
const response = await fetch('https://api.voxanne.ai/api/agents', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Front Desk Agent',
voice_provider: 'elevenlabs',
voice_id: 'rachel',
prompt: 'You are a friendly medical receptionist...',
tools: ['book_appointment', 'check_availability']
})
});
const agent = await response.json();
console.log('Agent created:', agent.id);List Calls
// List recent calls with filtering
const response = await fetch('https://api.voxanne.ai/api/calls?limit=20&status=completed', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const calls = await response.json();
calls.forEach(call => {
console.log(`Call from ${call.from}: ${call.outcome}`);
});Webhook Handler
// Handle webhook events (Node.js/Express)
app.post('/webhooks/vapi', async (req, res) => {
const event = req.body;
// Verify webhook signature (recommended)
const signature = req.headers['x-vapi-signature'];
if (!verifySignature(event, signature)) {
return res.status(401).send('Invalid signature');
}
// Process event
switch (event.type) {
case 'call.started':
console.log('Call started:', event.call.id);
break;
case 'call.ended':
console.log('Call ended:', event.call.id);
await saveCallToDatabase(event.call);
break;
case 'appointment.booked':
console.log('Appointment booked:', event.appointment);
await sendConfirmationEmail(event.appointment);
break;
}
res.status(200).send('OK');
});Rate Limits
Per Organization
1,000 req/hour
Across all API endpoints
Per IP Address
100 req/15min
For security protection
If you exceed rate limits, you'll receive a 429 Too Many Requests response. Contact sales for higher limits.
Need help with integration?
Our team can help you build custom integrations and answer technical questions.