/api/call: provider webhooks (TwiML/XML), WebSockets for media, and POST /create_call for a single outbound PSTN dial. Kupe splits those.
Web / SDK realtime (not telephony)
Kupe App web testers:GET /api/call/init-web-media-streamGET /api/call/auth/token(RSA JWT, 1 hour, issuerinavlabs_voice_platform)WS /api/call/web-media-stream
POST /v1/realtime/sessionswith Bearersk-kupe-...- Connect to
wss://x.kupe.in/agents/v1/realtime
agent_id on session create to reuse a Hub agent instead of inline name / prompt.
One outbound phone call
Kupe AppPOST /api/call/create_call:
Kupe Hub has no
create_call. A single dial is a one-contact campaign:
POST /v1/batcheswithagent_id+telephony_account_idPOST /v1/batches/{batch_id}/contacts:bulkwithphone_numberandvariablesPOST /v1/batches/{batch_id}/start
trigger_outbound_call. There is no workflow_id — Kupe does not run Kupe App workflows. See Campaigns.
Provider media sockets (do not reimplement)
Kupe App exposed raw provider WebSockets:WS /api/call/media-stream/agents/{agent_id}(Twilio)WS /api/call/plivo-media-stream/agents/{agent_id}WS /api/call/exotel-media-stream/agents/{agent_id}WS /api/call/elison-media-stream/agents/{agent_id}- Workflow variants of each
WS /api/call/openai-twilio-media-streamWS /api/call/stt-stream
wss://x.kupe.in/agents/v1/media?ticket=...&provider=.... Tickets are issued by inbound/outbound webhooks, not by your client. They are not in the public OpenAPI. Point Plivo/Twilio/Exotel applications at Kupe’s webhook URLs (set on purchase for managed numbers), not at Kupe App sockets.
Provider HTTP webhooks
GET /api/call/ was an HTML “platform is running” page. Use GET https://x.kupe.in/health (and /ready) instead.
Text / WhatsApp sockets
WS /api/text/stream_text_ws, workflow-builder WS, and /api/text/whatsapp/webhook have no Kupe Hub public equivalent. WhatsApp is not in the public OpenAPI.
