This guide walks you through the complete process of creating a voice AI agent — from the first API call to reviewing live call transcripts. By the end you will have a working agent capable of handling phone calls.
Time: ~20 minutes Prerequisites: Neuratel account, API key (nk_live_...)
Step 1: Create the Agent
Create the agent with a full V3 configuration in one request. The three required sections are brain (the LLM), voice (text-to-speech), and transcriber (speech-to-text).
Code
curl -X POST https://api.neuratel.ai/v1/agents \ -H "Authorization: Bearer nk_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "Customer Support Agent", "brain": { "provider": "groq", "model": "meta-llama/llama-4-scout-17b-16e-instruct", "instructions": "You are a helpful customer support agent for Acme Corp. Answer questions about orders, returns, and account issues. Be concise and empathetic.", "temperature": 0.7 }, "voice": { "provider": "cartesia", "model": "sonic-3", "voice_id": "8d8ce8c9-44a4-46c4-b10f-9a927b99a853" }, "transcriber": { "provider": "deepgram", "model": "nova-3", "language": "en-US" } }'
Code
import httpxclient = httpx.Client( base_url="https://api.neuratel.ai", headers={"Authorization": "Bearer nk_live_your_api_key"},)response = client.post("/v1/agents", json={ "name": "Customer Support Agent", "brain": { "provider": "openai", "model": "gpt-4.1", "instructions": ( "You are a helpful customer support agent for Acme Corp. " "Answer questions about orders, returns, and account issues. " "Be concise and empathetic." ), "temperature": 0.7, }, "voice": { "provider": "cartesia", "model": "sonic-3", "voice_id": "8d8ce8c9-44a4-46c4-b10f-9a927b99a853", }, "transcriber": { "provider": "deepgram", "model": "nova-3", "language": "en-US", },})agent = response.json()print(agent["id"]) # agent_abc123
Save the id — you will use it in every subsequent step.
Model reference
Provider
Model
Latency profile
OpenAI
gpt-4.1
Balanced quality and speed
OpenAI
gpt-4.1-mini
Faster, lower cost
OpenAI
gpt-5.4
Highest capability
Groq
llama-3.1-8b-instant
Lowest latency
Neuratel
phantom
~187 ms avg, no external dependency
Step 2: Test in the Dashboard
Before assigning a phone number, run a live voice test directly from the dashboard using WebRTC — no phone required.
Open Agents in the sidebar and select your new agent.
Click the Talk button in the top-right corner.
Allow microphone access when prompted.
Speak naturally and listen to the agent's responses.
End the session and open the Transcript panel to review what was captured.
Use this to verify the system prompt produces the right tone, the voice sounds correct, and the transcriber is recognising speech accurately before any traffic reaches the agent.
Step 3: Assign a Phone Number
To receive inbound calls you need to link the agent to a phone number in your account.
{ "id": "call_def456uvw", "status": "completed", "duration_seconds": 94, "transcript": [ { "role": "assistant", "text": "Thanks for calling Acme Corp, how can I help you today?", "start_ms": 820 }, { "role": "user", "text": "I'd like to check on my order.", "start_ms": 3100 } ], "recording_url": "https://recordings.neuratel.ai/call_def456uvw.mp3", "analysis": null}
Use the transcript to identify gaps in the system prompt, unexpected responses, or transcription errors. Iterate on brain.instructions via PATCH /v1/agents/{id} and test again.
Complete agent configuration reference
Code
{ "name": "Customer Support Agent", "brain": { "provider": "openai", "model": "gpt-4.1", "instructions": "You are a helpful customer support agent for Acme Corp. Answer questions about orders, returns, and account issues. Be concise and empathetic.", "temperature": 0.7 }, "voice": { "provider": "cartesia", "model": "sonic-3", "voice_id": "8d8ce8c9-44a4-46c4-b10f-9a927b99a853", "language": "en", "speed": 1.0 }, "transcriber": { "provider": "deepgram", "model": "nova-3", "language": "en-US" }, "conversation": { "first_message": "Thanks for calling Acme Corp. How can I help you today?", "silence_timeout_seconds": 20, "max_duration_seconds": 600 }}