GoToConnect API Endpoints & Capabilities
References:
https://developer.goto.com/GoToConnect#tag/Call-Events-Overview/Examples/Recordings
https://developer.goto.com/GoToConnect/#tag/Notification-Channel-Overview
Call Control Endpoints (web-calls/v1):
/calls/{callId}/mute - Mute
/calls/{callId}/unmute - Unmute
/calls/{callId}/hold - Hold
/calls/{callId}/unhold - Resume
/calls/{callId}/dtmf - Send DTMF tones
/calls/{callId}/merge - Conference/merge calls
/calls/{callId}/split - Split merged calls
/calls/{callId}/warm-transfer - Warm transfer (attended)
/calls/{callId}/blind-transfer - Blind transfer
/calls/{callId}/answer - Answer
/calls/{callId}/reject - Reject
/calls/{callId}/ringing - Indicate ringing
Call Parking:
/call-parking/v1/parked-calls - Park calls
Let me extract the full details of these call control endpoints from the collection:I owe you a major apology. The GoToConnect API is FAR more comprehensive than I reported. You were absolutely right to push back.
Here’s the complete call control surface from the Postman collection:
GoToConnect Web-Calls API - FULL Call Control
Core Call Operations
| Method | Endpoint | Function |
|---|
| POST | /web-calls/v1/calls | Create outbound call |
| DELETE | /web-calls/v1/calls/:callId | Hangup |
| POST | /web-calls/v1/calls/:callId/answer | Answer inbound |
| POST | /web-calls/v1/calls/:callId/reject | Reject call |
Call Control (THE CRITICAL ONES I MISSED)
| Method | Endpoint | Function |
|---|
| POST | /web-calls/v1/calls/:callId/mute | Mute |
| POST | /web-calls/v1/calls/:callId/unmute | Unmute |
| POST | /web-calls/v1/calls/:callId/hold | Hold |
| POST | /web-calls/v1/calls/:callId/unhold | Resume |
| POST | /web-calls/v1/calls/:callId/dtmf | Send DTMF |
| POST | /web-calls/v1/calls/:callId/merge | MERGE/CONFERENCE |
| POST | /web-calls/v1/calls/:callId/split | Split merged call |
| POST | /web-calls/v1/calls/:callId/warm-transfer | WARM TRANSFER |
| POST | /web-calls/v1/calls/:callId/blind-transfer | BLIND TRANSFER |
Additional APIs
- Call Parking - Park/retrieve calls
- Call Control Recording - Start/pause/unpause recording programmatically
- Call Events - Real-time WebSocket events for all call states
- Call History - Full call logs with subscriptions
You don’t need Twilio/Telnyx at all. GoToConnect has everything:
- Human handoff ✅ - Warm transfer to any extension
- Hold with music ✅ - Native hold/unhold
- Conferencing ✅ - Merge calls for supervisor monitoring
- DTMF ✅ - Navigate IVRs, enter PINs
- Call parking ✅ - Park and retrieve calls
- Recording control ✅ - Start/stop/pause recordings
Let me extract the full details on the transfer and merge endpoints to understand exactly how they work:This is gold. Let me summarize the key capabilities:
Complete GoToConnect Call Control API
Hold/Unhold
POST /web-calls/v1/calls/:callId/hold
- Remote side hears wait music
- Returns 204 if already on hold
POST /web-calls/v1/calls/:callId/unhold
- Resumes call, remote leaves waiting room
Mute/Unmute
POST /web-calls/v1/calls/:callId/mute
- Mutes local input audio stream
POST /web-calls/v1/calls/:callId/unmute
DTMF
POST /web-calls/v1/calls/:callId/dtmf
Body: { "tone": "<string>" }
- Must wait for response before sending next tone
Merge (Conference!)
POST /web-calls/v1/calls/:callId/merge
Body: { "referId": "<callId of second call>" }
- Merges two calls together
- Audio from both calls combined
- This is how you add a human supervisor to an AI call!
Split
POST /web-calls/v1/calls/:callId/split
- Separates merged call back into two separate calls
Warm Transfer
POST /web-calls/v1/calls/:callId/warm-transfer
Body: { "referId": "<callId of second call>" }
- Connects two ongoing calls
- Current user (AI) drops out
- Both remote parties now connected directly
Blind Transfer
POST /web-calls/v1/calls/:callId/blind-transfer
Body: { "dialString": "<extension or phone number>" }
- Immediate transfer to destination
Revised Architecture - GoToConnect Native
This changes everything. You can build entirely on GoToConnect without Twilio/Telnyx:
┌─────────────────────────────────────────────────────────────────┐
│ YOUR VOICE AI PLATFORM │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ PSTN │ │ GoToConnect │ │ AI Agent │ │
│ │ Caller │◄───►│ PBX │◄───►│ Bridge │ │
│ └─────────────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ │ WebRTC │ │
│ │ + API │ │
│ ▼ ▼ │
│ ┌─────────────────────────────┐ │
│ │ Python Bridge │ │
│ │ (aiortc + GoTo API) │ │
│ │ │ │
│ │ • WebRTC audio stream │ │
│ │ • Call control commands │ │
│ │ • Event subscriptions │ │
│ └──────────────┬──────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────┐ │
│ │ LiveKit Room │ │
│ │ (STT → Claude → TTS) │ │
│ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Human Handoff Flows
Option A: Blind Transfer (Simple)
# AI decides human needed
await goto_api.blind_transfer(call_id, dial_string="+15551234567")
# or
await goto_api.blind_transfer(call_id, dial_string="ext:1001")
# Call immediately transferred, AI done
Option B: Warm Transfer (Context Handoff)
# 1. AI places customer on hold
await goto_api.hold(call_id)
# 2. AI initiates call to human agent
agent_call = await goto_api.create_call(dial_string="ext:1001")
# 3. AI briefs agent (customer hears hold music)
await ai_say("Hi Sarah, I have a customer asking about their order #12345...")
# 4. When ready, warm transfer connects them
await goto_api.warm_transfer(call_id, refer_id=agent_call.id)
# AI drops, customer + agent now connected
Option C: Conference/Merge (Supervisor Monitoring)
# 1. Supervisor joins call silently
supervisor_call = await goto_api.create_call(dial_string="ext:1002")
# 2. Merge into conference
await goto_api.merge(call_id, refer_id=supervisor_call.id)
# Now: Customer + AI + Supervisor all hear each other
# 3. Supervisor can coach AI or take over
# 4. When done, split or transfer as needed
Corrected Feasibility Assessment
| Capability | GoToConnect API | Status |
|---|
| Inbound calls | ✅ WebRTC device registration | Native |
| Outbound calls | ✅ /calls endpoint | Native |
| Hold with music | ✅ /hold + /unhold | Native |
| Mute/Unmute | ✅ /mute + /unmute | Native |
| DTMF | ✅ /dtmf | Native |
| Blind transfer | ✅ /blind-transfer | Native |
| Warm transfer | ✅ /warm-transfer | Native |
| Conference/3-way | ✅ /merge + /split | Native |
| Call parking | ✅ /call-parking/v1 | Native |
| Recording control | ✅ /call-control/v1/calls/recording | Native |
| Real-time events | ✅ WebSocket + /call-events/v1 | Native |
Verdict: You can build the entire Voice AI Contact Center platform directly on GoToConnect. No need for Twilio, Telnyx, or any other SIP provider. Your $17/user unlimited plan covers everything.Last modified on April 20, 2026