Voice Conversations
AI-powered voice conversations for patient outreach, benefits verification, and insurance inquiries. The system supports both patient-facing inbound calls and outbound insurance provider interactions.
The Voice API is provider-agnostic. It exposes a unified interface for managing voice calls regardless of the underlying telephony infrastructure. This allows swapping providers without changing client integrations.
The Voice Call object
A Voice Call represents a conversation between the AI agent and either a patient or an insurance representative. Calls are analyzed for insights after completion.
Unique identifier for the voice call.
External conversation ID from voice provider.
Caller/callee phone number.
Call direction.
Current call status.
Total call duration in seconds.
Linked patient ID (null until verified).
Type of AI agent.
Type of call.
Topics identified during the call.
Medications mentioned during the call.
Outcome of the call.
AI-inferred satisfaction (1-5).
AI-generated call analysis and insights.
{
"id": 123,
"call_id": "conv_abc123",
"phone_number": "+14155551234",
"direction": "inbound",
"status": "completed",
"duration_seconds": 245,
"patient_id": 456,
"agent_type": "patient",
"call_type": "patient",
"verified": true,
"topics_discussed": [
"benefits_verification",
"pa_requirements"
],
"medications_discussed": ["Keytruda"],
"jcodes_discussed": {
"Keytruda": "J9271"
},
"call_outcome": "coverage_confirmed",
"patient_satisfaction_score": 4,
"callback_requested": false,
"follow_up_actions": [
{
"action": "Submit PA request",
"priority": "high",
"status": "pending",
"assigned_to": "provider"
}
],
"analysis_metadata": {
"summary": {
"overview": "Patient verified coverage",
"patient_concern": "PA requirements",
"resolution": "Confirmed coverage"
},
"key_findings": [
"Prior authorization required",
"$50 remaining on deductible"
]
},
"created_at": "2024-12-18T10:30:00Z",
"completed_at": "2024-12-18T10:34:05Z"
}Retrieve a voice call
Retrieve details of a specific voice call by ID.
/voice/calls/{voice_call_id}The voice call ID.
curl https://api.isomera.ai/v1/voice/calls/123 \
-H "Authorization: Bearer sk_live_..."{
"id": 123,
"call_id": "conv_abc123",
"phone_number": "+14155551234",
"direction": "inbound",
"status": "completed",
"duration_seconds": 245,
"patient_id": 456,
"call_outcome": "coverage_confirmed",
"patient_satisfaction_score": 4,
"created_at": "2024-12-18T10:30:00Z"
}List patient calls
Retrieve all voice calls for a specific patient.
/voice/patients/{patient_id}/callsThe patient ID.
Maximum records to return.
Default: 10
Number of records to skip.
Default: 0
curl https://api.isomera.ai/v1/voice/patients/456/calls \
-H "Authorization: Bearer sk_live_..."{
"patient_id": 456,
"calls": [
{
"id": 123,
"call_id": "conv_abc123",
"status": "completed",
"duration_seconds": 245,
"call_outcome": "coverage_confirmed",
"created_at": "2024-12-18T10:30:00Z"
}
],
"count": 1
}Voice function calls
During voice conversations, the AI agent can invoke various functions to look up information, verify benefits, and take actions. These are handled via webhooks from the voice provider.
Available Functions
| Function | Description |
|---|---|
patient_lookup | Verify patient identity using 3-factor auth |
verify_benefits | Check coverage, deductibles, copays |
check_pa_requirements | Query prior authorization requirements |
flag_adverse_event | Report adverse events for review |
request_callback | Schedule human callback |
send_follow_up_email | Send coverage summary email |
{
"first_name": "John",
"last_name": "Doe",
"dob": "1985-03-15",
"member_id": "ABC123456",
"payer_name": "Aetna"
}{
"patient_id": 456,
"patient_name": "John Doe",
"verified": true,
"confidence": 1.0,
"message": "I've verified your identity."
}verify_benefits
Retrieves coverage information including deductibles, copays, and out-of-pocket maximums. Also queries prior authorization requirements from payer policy documents.
The verified patient ID.
Medication name to check coverage for.
{
"patient_id": 456,
"medication": "Keytruda"
}{
"job_id": "bv-456-1702900200",
"status": "completed",
"payer": "Aetna",
"medication": "Keytruda",
"deductible": 500,
"deductible_remaining": 150,
"out_of_pocket_max": 5000,
"out_of_pocket_remaining": 3500,
"copay_pharmacy": 50,
"copay_specialty": 100,
"coinsurance_percentage": 20,
"pa_required": true,
"message": "Coverage verified for Keytruda."
}flag_adverse_event
Critical patient safety function. Automatically detects and flags adverse events with appropriate severity levels and recommended actions.
The patient ID.
Description of the adverse event.
Severity level.
Related medication.
List of symptoms reported.
- mild: Monitor, contact doctor if worsens
- moderate: Contact doctor soon
- severe: Contact doctor immediately
- life-threatening: Call 911 / go to ER
{
"patient_id": 456,
"event_description": "Severe headache and nausea",
"severity": "moderate",
"medication_name": "Keytruda",
"symptoms": ["headache", "nausea"]
}{
"case_number": "AE-456-1702900500",
"flagged": true,
"requires_immediate_action": false,
"severity": "moderate",
"message": "Flagged for medical team review."
}J-Code lookup
Look up HCPCS J-codes for medications discussed during calls.
/voice/jcodes/lookupList of medication names to look up.
curl https://api.isomera.ai/v1/voice/jcodes/lookup \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"medications": ["Keytruda", "Opdivo", "Herceptin"]
}'{
"jcodes": {
"Keytruda": "J9271",
"Opdivo": "J9299",
"Herceptin": "J9355"
}
}Voice webhooks
The voice system uses webhooks to receive events from the telephony provider and to handle function calls during conversations.
Function Call Webhook
/voice/webhookReceives function call requests during active conversations. The response is returned to the voice agent to continue the conversation.
Post-Call Webhook
/webhooks/voice/post-callReceives post-call data including audio recording URL and triggers AI analysis of the completed conversation.
{
"conversation_id": "conv_abc123",
"function_name": "patient_lookup",
"parameters": {
"first_name": "John",
"last_name": "Doe",
"dob": "1985-03-15",
"member_id": "ABC123456"
}
}{
"conversation_id": "conv_abc123",
"status": "completed",
"duration_seconds": 245,
"audio_url": "https://storage.../recording.mp3",
"transcript": "Agent: Hello, this is..."
}Real-time transcription
During live calls, transcript utterances can be streamed to the backend for real-time processing and insight extraction.
/voice/{voice_call_id}/add-utteranceThe utterance text.
Who spoke.
ISO 8601 timestamp.
The system automatically extracts insights from utterances including:
- Topics: benefits_verification, pa_requirements, adverse_event
- Medications: Drug names with J-code lookups
- Sentiments: Emotional state detection
curl https://api.isomera.ai/v1/voice/123/add-utterance \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"text": "I need to check my benefits for Keytruda",
"speaker": "user",
"timestamp": "2024-12-18T10:30:15Z"
}'{
"success": true,
"utterance_id": 789,
"voice_call_id": 123,
"duplicate": false,
"insights_extracted": true
}