Authentication
Create an integration and get your
cik_live_ API keyAI Voice Agents
List agents, start calls and read structured results
Build an integration
End-to-end guide with idempotency, retries and loop prevention
What you can do
How it works
- Inbound (CRM → Ringee): you send events to a single Ringee endpoint, authenticated with your secret API key. See Inbound events.
- Outbound (Ringee → CRM): Ringee sends HMAC-signed events to the URL you configure, with automatic retries. See Outbound webhooks.
- Click-to-call: you exchange a contact for a short-lived, signed dialer URL your agent opens in the browser. See Click-to-call.
- AI Voice Agents: your server lists configured agents, starts calls and polls normalized results. See AI Voice Agents API.
The event envelope
Every event in both directions shares the same envelope:data:
data.user identifies the Ringee user the event belongs to. data.agent is
present when an AI Voice Agent produced the event. If you start that call with
metadata.external_id or metadata.externalId, Ringee copies it to
data.externalId on every related outbound event.
eventId must identify one logical event and remain stable across transport
retries. If Ringee returns status: "failed" while processing an inbound
event, fix the payload and use a new eventId; the original id is already
recorded.Choosing the right integration surface
Ringee exposes several ways to build on top of it. They solve different problems and can be combined.Public API
Server to server. Sync CRM records and receive call activity. Requires a
backend.
Dialer SDK
Browser. Embed a real dialer in your own web app. No backend required.
MCP
AI agents. Let Claude or ChatGPT operate Ringee on the user’s behalf.
AI Voice Agents
Autonomous calls. Place server-originated conversations and read
structured results.
Every inbound, click-to-call and AI Voice Agent request uses the Custom
Integration
cik_live_… key. AI Voice Agent endpoints also accept that same
key as a Bearer credential.Base URL
All endpoints in this section are relative to that base URL and live under the global
/api prefix.
Limits and expectations
- Ringee considers an outbound delivery failed if your endpoint does not respond within 15 seconds or returns a non-2xx status.
- Failed deliveries are retried up to 10 times with exponential backoff, capped at 5 minutes between attempts.
- Outbound deliveries are independent and can arrive out of order. Use
eventIdfor idempotency anddata.callIdfor call-level correlation. - Event payloads can gain optional fields over time. Ignore unknown keys and validate the fields your integration actually needs.
- Ringee currently emits terminal call events only. There are no
call.started,call.ringingorcall.answeredevents — do not build a real-time incoming-call screen on top of this API.
Next steps
Create your API key
Set up a Custom Integration in the dashboard
Event reference
Every outbound payload, field by field

