Skip to main content
Use the AI Voice Agents Public API to start autonomous calls from your server and read their structured results. Agent creation, configuration, knowledge sources and browser testing remain in the Ringee dashboard.

Authentication and base URL

Authenticate every request with the cik_live_… API key from an active Custom Integration:
You can instead send the same key as a Bearer credential:
Send the key in exactly one of those headers. A request containing both is rejected.
A Custom Integration API key is a server-side secret. Never expose it in browser code, logs or a client application.
For self-hosting, replace https://api.ringee.io with PUBLIC_BACKEND_URL. The integration determines the user and organization; the API never accepts a client-supplied workspace id as authorization. AI Voice Agents require an organization-scoped Custom Integration. A personal-workspace key is valid for other Public API capabilities but returns 403 on these routes.

Endpoints

List agents

page defaults to 1; limit defaults to 20 and cannot exceed 100. type can be appointment_booking or reminders_notifications.
The response excludes provider identifiers, credential references and callback secrets. Resolve agentId, from_number_id and required variables from this response before starting a call.

List caller numbers

GET /api/v1/ai-voice-agents/phone-numbers returns the same callerNumbers entries as the list response, without the surrounding pagination object.

Start a call

The response returns immediately:
id is the AI Voice Agent call id. Use it with the result endpoints. Outbound webhooks identify the underlying telephony call as data.callId; call.outcome.updated also includes the start-response id as data.agentCallId. Use metadata.external_id when you need one correlation id across every event type. Starting a call is non-idempotent. Each successful request creates a new call and can incur real usage. Do not automatically retry an ambiguous response.

List and read calls

List one agent’s calls with GET /api/v1/ai-voice-agents/:agentId/calls?page=1&limit=20, or read a known result directly:
Both routes return the normalized public result shape:
The list route wraps results in { data, total, page, limit }. Post-call analysis can arrive shortly after the phone status becomes terminal, so poll again if summary, sentiment or extracted_data is still empty.

Receive results by webhook

Polling and outbound webhooks can be used together. Subscribe the same Custom Integration to the events you need: When the start request contains metadata.external_id or metadata.externalId, each call-linked event exposes the value as data.externalId. It also includes data.user and the AI Voice Agent reference under data.agent when those actors can be resolved.
The result API and webhook contract use the same canonical outcome names, including meeting_booked and callback_scheduled. Ringee normalizes the historical names appointment_booked and callback_requested before returning them.

Common errors

Configuration stays in the dashboard

The Public API intentionally exposes execution, not agent administration. Create, edit, enable, disable, test and delete agents in the Ringee dashboard, then use their ids from GET /api/v1/ai-voice-agents in your server integration.

Next steps

Authentication

Create and protect a Custom Integration API key

Calls and results

Understand status, outcomes, polling and billing

Outbound webhooks

Receive terminal, outcome and artifact events