> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.aiconnected.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GoToConnect API Endpoints Capabilities

# **GoToConnect API Endpoints & Capabilities**

**References:**\
[https://developer.goto.com/GoToConnect#tag/Call-Events-Overview/Examples/Recordings](https://developer.goto.com/GoToConnect#tag/Call-Events-Overview/Examples/Recordings)

[https://developer.goto.com/GoToConnect/#tag/Notification-Channel-Overview](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

***

## What This Means for Your Platform

**You don't need Twilio/Telnyx at all.** GoToConnect has everything:

1. **Human handoff** ✅ - Warm transfer to any extension
2. **Hold with music** ✅ - Native hold/unhold
3. **Conferencing** ✅ - Merge calls for supervisor monitoring
4. **DTMF** ✅ - Navigate IVRs, enter PINs
5. **Call parking** ✅ - Park and retrieve calls
6. **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

```text theme={null}
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

```text theme={null}
POST /web-calls/v1/calls/:callId/mute
- Mutes local input audio stream

POST /web-calls/v1/calls/:callId/unmute
```

### DTMF

```text theme={null}
POST /web-calls/v1/calls/:callId/dtmf
Body: { "tone": "<string>" }
- Must wait for response before sending next tone
```

### Merge (Conference!)

```text theme={null}
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

```text theme={null}
POST /web-calls/v1/calls/:callId/split
- Separates merged call back into two separate calls
```

### Warm Transfer

```text theme={null}
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

```text theme={null}
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:

```text theme={null}
┌─────────────────────────────────────────────────────────────────┐
│                    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)**

```py theme={null}
# 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)**

```py theme={null}
# 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)**

```py theme={null}
# 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.
