Agents

An agent is the reusable definition of who the AI is and what it should accomplish. It holds the instructions, the language, the voice, and the model providers. Everything else in the API points at an agent: a call runs an agent, an interview runs an agent, a campaign runs an agent against a list.

Create an agent once and run it thousands of times.

Two types

TypeRuns onUsed by
phoneThe telephone networkCalls, campaigns
voiceA browser, over WebRTCInterviews

The split is real, not cosmetic. A phone agent is tuned for the latency and audio quality of a telephone line and understands things like voicemail and retries. A voice agent runs in a browser where audio is clean and the session is visual. Using the wrong type returns 400 INVALID_AGENT_TYPE.

Instructions are the product

instructions is the system prompt: the single field that most determines whether the agent works. Write it the way you would brief a new colleague on their first day.

text
You are a friendly assistant from Bright Dental calling to confirm an appointment.

Confirm the caller still wants their appointment on {{appointmentDay}} at {{appointmentTime}}.
If they cannot make it, ask what day suits them better and note it.
If they ask about pricing, say a colleague will call back — do not quote figures.

Keep the call under a minute. Do not offer medical advice.

Two things worth copying from that example:

Say what the agent must not do. Boundaries matter more than capabilities. An agent that quotes a price it invented is worse than one that defers.

Use {{variables}} for anything per-call. Declare them in the instructions and supply them when you place the call:

bash
curl -X POST "https://api.rabbitt.ai/api/v1/calls" \
  -H "Authorization: Bearer $RABBITT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "507f1f77bcf86cd799439011",
    "phoneNumber": "+919876543210",
    "variables": {
      "appointmentDay": "Thursday",
      "appointmentTime": "3pm"
    }
  }'

That is one agent serving every appointment, rather than one agent per appointment.

Providers

Each agent picks its own speech-to-text, language model, and text-to-speech providers. If you do not choose, sensible defaults are applied and a fallback chain covers provider outages automatically.

json
{
  "providers": { "llm": "groq", "stt": "deepgram", "tts": "elevenlabs" }
}

Pick groq for the lowest latency on phone calls, where a pause reads as awkward. Pick gemini when reasoning quality matters more than response speed.

Quotas

Your organization has a maxAgents quota. Creating one past it returns 409 ORGANIZATION_AGENT_LIMIT. Check your current usage with GET /v1/usage.

Reference

Dashboard Welcome