Our developer experience centers on clear onboarding, practical examples, and predictable versioning. Build voice AI applications optimized for Africa with our APIs and SDKs.
Get up and running with ODIADEV APIs in minutes. This guide walks you through authentication, your first API call, and integration basics.
Sign up at dashboard.odia.dev to get your API key. Sandbox keys are free and include rate limits suitable for development.
Include your API key in the Authorization header as a Bearer token:
Authorization: Bearer YOUR_API_KEY
Test your authentication with a simple TTS (Text-to-Speech) request:
curl -X POST https://api.odia.dev/v1/tts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello from ODIADEV",
"voice": "nigerian-female"
}'
npm install @odia-dev/sdk
pip install odia-dev
import { OdiaClient } from '@odia-dev/sdk';
const client = new OdiaClient({
apiKey: 'YOUR_API_KEY'
});
// Convert text to speech
const audio = await client.tts.synthesize({
text: 'Hello from Lagos, Nigeria!',
voice: 'nigerian-female'
});
// Start a voice call
const call = await client.calls.create({
to: '+2348123456789',
flowId: 'welcome-flow'
});
import odia_dev
client = odia_dev.Client(api_key='YOUR_API_KEY')
# Convert text to speech
audio = client.tts.synthesize(
text='Hello from Lagos, Nigeria!',
voice='nigerian-female'
)
# Start a voice call
call = client.calls.create(
to='+2348123456789',
flow_id='welcome-flow'
)
RESTful endpoints with consistent patterns, clear responses, and comprehensive error handling.
Purpose: Obtain access token for session-bound operations
Auth: API Key (query parameter)
Returns: Short-lived bearer token with refresh support
Purpose: Initiate outbound call with voice flow
Auth: Bearer token
Payload: destination, voice_flow_id, caller_id, context
Purpose: Retrieve call status and metadata
Auth: Bearer token
States: queued, ringing, answered, completed, failed
Purpose: Stream real-time call events
Auth: Bearer token
Transport: WebSocket or Server-Sent Events
Purpose: Synthesize speech from text
Auth: Bearer token
Payload: text, voice, sample_rate, format, language
Purpose: Aggregated usage metrics
Auth: Bearer token
Dimensions: product, date, region, status
Event-driven integrations for real-time updates from your voice AI applications.
Payload: call_id, duration, outcome, transcript, recording_url
Retry: Exponential backoff, at-least-once delivery
Security: HMAC signature verification
Payload: lead_fields, consent_status, source_call_id, score
Retry: Exponential backoff with dead letter queue
Security: HMAC signature + IP allowlist
Payload: context_summary, urgency_level, recommended_action
Retry: Expedited retries with alerting
Security: HMAC signature + dedicated channel
POST /your-webhook-endpoint
Content-Type: application/json
X-Odia-Dev-Signature: sha256=abc123...
{
"event": "call.completed",
"data": {
"call_id": "call_abc123",
"duration": 145,
"outcome": "converted",
"transcript": "Customer interested in product...",
"recording_url": "https://recordings.odia.dev/abc123.mp3"
},
"timestamp": "2025-01-15T10:30:00Z"
}
Official SDKs for popular programming languages with full feature coverage and examples for common use cases.
Package: @odia-dev/sdk
Features:
npm install @odia-dev/sdk
Package: odia-dev
Features:
pip install odia-dev
Format: OpenAPI 3.0 specification
Features:
End-to-end examples for integrating each of our products into your applications.
Complete guide for implementing voice-driven marketing and lead capture.
// Create a marketing campaign
const campaign = await client.campaigns.create({
name: "Product Demo Outreach",
flow_id: "demo-flow",
target_list: prospects,
schedule: "immediate"
});
// Track lead conversion
client.on('lead.created', (lead) => {
// Send to CRM
crm.createLead(lead.data);
});
Implement AI receptionist with call routing and calendar integration.
// Configure receptionist
const receptionist = await client.receptionist.configure({
business_hours: "9-17",
languages: ["english", "pidgin"],
routing_rules: {
sales: "+234xxx",
support: "+234xxx"
},
calendar_integration: true
});
// Handle call summaries
client.on('call.completed', (event) => {
if (event.data.outcome === 'scheduled') {
// Update CRM with appointment
}
});
Mental health support with safety protocols and escalation pathways.
// Configure safety protocols
const safetyConfig = {
crisis_keywords: ["suicide", "hurt myself"],
escalation_hotline: "199",
emergency_contacts: emergencyList,
privacy_mode: "strict" // No PHI storage
};
const session = await client.serenity.startSession({
user_id: anonymizedId,
consent_level: "basic",
safety_config: safetyConfig
});
Emergency response coordination with structured data capture.
// Initialize emergency response
const emergency = await client.emergency.configure({
response_team: "primary-team",
escalation_timeout: 300, // 5 minutes
location_services: true,
data_retention: "emergency-only"
});
// Handle emergency calls
client.on('emergency.triggered', (event) => {
// Dispatch to emergency services
dispatcher.createIncident(event.data);
// Notify response team
notifyTeam(event.data.location);
});
Comprehensive error handling with clear codes, messages, and remediation guidance.
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Rate limit: 1000/hour",
"details": {
"retry_after": 3600,
"limit": 1000,
"window": "1h"
},
"request_id": "req_abc123"
}
}
Transparent rate limits and usage-based pricing for predictable scaling.
Cost: Free for development
Cost: Usage-based, volume discounts available
Get help when you need it with comprehensive documentation, community support, and direct engineering access.
Start building voice AI applications optimized for Africa. Get your API key, explore our documentation, and join the community of developers changing how Africa interacts with AI.