Authentication and base URL
Authenticate every request with thecik_live_… API key from an active Custom Integration:
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.
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 withGET /api/v1/ai-voice-agents/:agentId/calls?page=1&limit=20, or read a known result directly:
{ 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 fromGET /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

