REST API for voice agents, calls, leads, and outbound dialing. Base URL: https://cloudvoiceai-do.adamfrankwoodward.workers.dev
Create an API key in Settings → Developer. Pass it on every request:
Authorization: Bearer cvk_live_xxxxxxxx
# or
X-API-Key: cvk_live_xxxxxxxx
All requests are scoped to your organization. Keys are shown once at creation — store them securely.
List your agents.
curl https://cloudvoiceai-do.adamfrankwoodward.workers.dev/api/v1/agents \
-H "Authorization: Bearer cvk_live_..."
Create an agent. Body is a JSON agent config (name, biz_name, system_prompt, greeting, voice/niche fields, …).
List recent calls (id, agent, duration, disposition, cost, recording_key).
Place an outbound call that bridges to an agent. Uses your first owned number as caller ID.
| Field | Type | Notes |
|---|---|---|
to | string | Destination, E.164 (required) |
agent_id | string | Agent snapshot id (optional) |
engine | string | edge | gemini |
curl -X POST .../api/v1/calls/outbound \
-H "Authorization: Bearer cvk_live_..." \
-H "Content-Type: application/json" \
-d '{"to":"+14155551234","engine":"edge"}'
List or create leads. POST requires name; optional email, phone, company, status, source. Creating a lead fires the lead.created webhook.
Configure outbound webhooks in Settings → Integrations. Events call.completed and lead.created POST { event, org_id, data, sent_at }; if a signing secret is set, an X-CloudVoice-Signature (HMAC-SHA256 over the body) header is included.
Supply your own provider keys (Deepgram, Cartesia, Groq, Gemini, OpenAI, ElevenLabs) and your own SignalWire carrier in Settings → Developer. When present, calls run on your accounts and credentials are encrypted at rest (AES-256-GCM).
Define tools your agent can call mid-call (Settings → Developer). CloudVoice POSTs { tool, arguments } to your URL and feeds the JSON response back to the model.
CloudVoice AI · cloudvoiceai.com