Quick start
Get a voice agent running in under 5 minutes. Create a template, configure a call, push a lead, and watch the result.
Prerequisites
- An authenticated API token — see Authentication.
- A deployed Breeze Buddy backend URL reachable from your machine.
- At least one configured telephony provider (Twilio, Plivo, or Exotel) or a Daily.co API key if you plan to test in-browser.
- Familiarity with the architecture — optional but helps.
Step 1 — create a template
A template is the JSON blueprint that defines your agent’s conversation flow — nodes, transitions, functions, hooks, and provider config.
/agent/voice/breeze-buddy/templates {
"name": "appointment-reminder",
"flow": {
"initial_node": "greeting",
"nodes": [
{
"node_name": "greeting",
"task_messages": [
{ "role": "system", "content": "Greet the customer and confirm their appointment on {appointment_date}." }
],
"functions": [
{ "name": "appointment_confirmed", "transition_to": "farewell" },
{ "name": "appointment_rescheduled", "transition_to": "farewell" }
]
},
{
"node_name": "farewell",
"task_messages": [
{ "role": "system", "content": "Thank the customer and say goodbye." }
],
"functions": [
{ "name": "end_call", "transition_to": null }
]
}
]
},
"configurations": {
"initial_greeting": "Hi {customer_name}, this is Breeze calling about your appointment.",
"tts_voice_name": "rhea",
"stt_configuration": { "provider": "deepgram", "language": "en" }
}
} Learn more about flow nodes, functions & hooks, and variables.
Step 2 — configure call execution
A call execution config binds a template to a telephony provider, calling window, and retry policy.
/agent/voice/breeze-buddy/configurations {
"reseller_id": "your-reseller-id",
"template": "appointment-reminder",
"calling_provider": "TWILIO",
"call_start_time": "09:00:00",
"call_end_time": "18:00:00",
"max_retry": 2,
"enable_calling": true
} Supported providers: Twilio, Plivo, Exotel.
Step 3 — push a lead
A lead represents a single call to be made. Push it with the template name, reseller/merchant scope, and a payload. The destination phone number lives under payload.customer_mobile_number.
/agent/voice/breeze-buddy/leads {
"request_id": "unique-request-123",
"template": "appointment-reminder",
"reseller_id": "your-reseller-id",
"execution_mode": "TELEPHONY",
"payload": {
"customer_mobile_number": "+14155551234",
"customer_name": "John",
"appointment_date": "April 15, 2026"
}
} The response contains lead_call_tracker_id — the canonical lead ID used by every other endpoint.
Test without a phone call
Set execution_mode to "DAILY_TEST" to test in the browser via Daily WebRTC. Connect using the POST /agent/voice/breeze-buddy/connect endpoint — no telephony provider required.
Step 4 — monitor
Check the lead status and retrieve the recording after the call. The URL parameter is the lead_call_tracker_id from Step 3.
/agent/voice/breeze-buddy/leads/{lead_id} The response includes status, outcome, transcription, call timing, and Langfuse scores. Set up webhooks for real-time notifications.