Quickstart

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.

POST /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.

POST /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.

POST /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.

GET /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.

Next steps

Was this helpful?