Calls

A call is one phone conversation run by a phone agent. POST /v1/calls creates it and starts dialing in a single request — the response comes back as soon as the carrier accepts, not when the call ends.

Lifecycle

text
created ──▶ active ──▶ completed

                          └──▶ report generated (reportId appears)
StatusMeaning
createdThe call exists and is dialing
activeConnected — the conversation is happening
completedThe call ended, for any reason

Tracking your own records

Set externalRef when placing the call and it comes back on the call and its report. Put your booking id, ticket number, or CRM record id there and skip keeping a mapping table:

bash
-d '{ "agentId": "…", "phoneNumber": "+919876543210", "externalRef": "booking-8842" }'

Ending a call early

bash
curl -X POST "https://api.rabbitt.ai/api/v1/calls/CALL_ID/hangup" \
  -H "Authorization: Bearer $RABBITT_API_KEY"

This works only while the call is active. On an already-finished call it returns the call unchanged rather than erroring, so it is safe to call twice.

Transcript

GET /v1/calls/{id}/transcript returns the turns in order. speaker is agent or user:

json
{
  "object": "transcript",
  "callId": "507f1f77bcf86cd799439022",
  "data": [
    { "speaker": "agent", "content": "Hi, this is Bright Dental.", "timestamp": "2026-01-01T10:00:02.000Z" },
    { "speaker": "user", "content": "Yes, Thursday works.", "timestamp": "2026-01-01T10:00:09.000Z" }
  ]
}

The transcript fills in as the call runs, so it is available live, not only at the end.

Billing

Calls are billed in credit minutes against your organization's shared balance. The chargedMinutes field is settled shortly after the call ends. Placing a call with an empty balance returns 402.

Reference

Dashboard Welcome