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

# Start, list, and control calls

> Start outbound audio calls and control active or ringing calls.

Calls use the same bearer authentication as the rest of `/api/v1`.

<ParamField path="sessionId" type="string" required>
  Token id returned by `POST /api/v1/sessions`.
</ParamField>

<ParamField body="to" type="string" required>
  WhatsApp peer JID or phone JID to call.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.wadial.com/api/v1/sessions/{sessionId}/calls" \
    -H "Authorization: Bearer $WADIAL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"to":"15551234567@s.whatsapp.net"}'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "data": {
      "callId": "call-123",
      "peerJid": "15551234567@s.whatsapp.net",
      "direction": "outgoing",
      "mediaType": "audio",
      "state": "initiating",
      "transport": "websocket",
      "audioMuted": false
    }
  }
  ```
</ResponseExample>

## List calls

```http theme={null}
GET /api/v1/sessions/{sessionId}/calls
Authorization: Bearer <api_key>
```

## Get a call

```http theme={null}
GET /api/v1/sessions/{sessionId}/calls/{callId}
Authorization: Bearer <api_key>
```

## Accept, reject, end, or mute

```http theme={null}
POST /api/v1/sessions/{sessionId}/calls/{callId}/accept
POST /api/v1/sessions/{sessionId}/calls/{callId}/reject
POST /api/v1/sessions/{sessionId}/calls/{callId}/end
```

Mute requires a JSON body:

```http theme={null}
POST /api/v1/sessions/{sessionId}/calls/{callId}/mute
Authorization: Bearer <api_key>
Content-Type: application/json
```

```json theme={null}
{
  "muted": true
}
```
