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

# Chamadas do WhatsApp Business — Visão geral

> Receba e faça chamadas de voz do WhatsApp pela API do Pilot Status — retransmissão de SDP apenas para sinalização, softphone no navegador e cobrança pelo lado da Meta.

O WhatsApp Business Calling permite fazer e receber **chamadas de voz** com seus clientes pelo WhatsApp, através da API `/v1/calls*`.

## Provedores suportados

As chamadas funcionam em **dois** tipos de provedor — e se comportam de forma diferente em cada um:

| Provedor                           | O que é                               | Modelo de mídia                                                                                                                             |
| ---------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **META** (Meta Cloud API)          | Número oficial do WhatsApp Business   | **Apenas sinalização** — o Pilot Status retransmite o SDP (RFC 8866); o áudio flui **navegador ↔ WhatsApp** diretamente via WebRTC          |
| **Pilot Status web** (não oficial) | Número conectado via QR (não oficial) | **Mídia no servidor** — sem SDP; o áudio é processado no servidor. Você envia áudio ou abre um stream em tempo real por endpoints dedicados |

<Warning>
  Qualquer outro tipo de número retorna `400 FEATURE_NOT_SUPPORTED`. Mensagem do erro: *"Calling is only supported for Meta Cloud API and Pilot Status (web) numbers."* Um número web desconectado retorna `409 WHATSAPP_INSTANCE_NOT_CONNECTED`.
</Warning>

## Tipos de chamada

| Tipo                                    | Quem inicia              | Cobrança                                                                                                                                                          |
| --------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **BIC** — Chamada Iniciada pela Empresa | Você liga para o cliente | Na META, cobrada pela **Meta diretamente na sua WABA** (por minuto, pulsos de 6 segundos, só quando atendida). Em números web não há cobrança por minuto da Meta. |
| **UIC** — Chamada Iniciada pelo Usuário | O cliente liga para você | Gratuita                                                                                                                                                          |

O Pilot Status **não cobra** nada pelas chamadas.

## Suporte de recursos por provedor

| Recurso                                    | Endpoint                                   |              META              | Web (não oficial) |
| ------------------------------------------ | ------------------------------------------ | :----------------------------: | :---------------: |
| Fazer uma chamada (BIC)                    | `POST /v1/calls`                           |  ✅ oferta SDP **obrigatória**  |   ✅ **sem SDP**   |
| Listar chamadas                            | `GET /v1/calls`                            |                ✅               |         ✅         |
| Obter uma chamada                          | `GET /v1/calls/{callId}`                   |                ✅               |         ✅         |
| Atender (UIC)                              | `POST /v1/calls/{callId}/accept`           | ✅ resposta SDP **obrigatória** |   ✅ **sem SDP**   |
| Pré-atender                                | `POST /v1/calls/{callId}/pre-accept`       |                ✅               |         ❌         |
| Rejeitar                                   | `POST /v1/calls/{callId}/reject`           |                ✅               |         ✅         |
| Encerrar / desligar                        | `POST /v1/calls/{callId}/terminate`        |                ✅               |         ✅         |
| Tocar um arquivo de áudio na chamada       | `POST /v1/calls/{callId}/play`             |                ❌               |    ✅ **só web**   |
| Sessão de mídia em tempo real (WS PCM16)   | `POST /v1/calls/{callId}/realtime-session` |                ❌               |    ✅ **só web**   |
| Obter / atualizar configurações de chamada | `GET`·`PUT /v1/calls/settings`             |                ✅               |         ❌         |
| Obter permissões de chamada                | `GET /v1/calls/permissions`                |                ✅               |         ❌         |
| Solicitar permissão de chamada             | `POST /v1/calls/permissions/request`       |                ✅               |         ❌         |

Um recurso que o provedor não suporta retorna `400 FEATURE_NOT_SUPPORTED`.

## Como cada provedor trata a mídia

### META — apenas sinalização

O Pilot Status retransmite o SDP; o áudio flui **navegador ↔ WhatsApp** diretamente. Seu cliente WebRTC produz a oferta/resposta SDP. Não há nada no servidor para tocar áudio, então `play` e `realtime-session` não se aplicam. A página **/chat** do painel tem um **softphone** integrado (disponível nos dois tipos de número).

### Pilot Status web — mídia no servidor (sem SDP)

`POST /v1/calls` e `/accept` **não** recebem `sdp` — a chamada conecta e o áudio é processado no servidor. Você então controla o áudio com os dois endpoints exclusivos dos números web:

* `POST /v1/calls/{callId}/play` — o backend baixa seu arquivo de áudio (a URL é validada no servidor) e o toca na chamada; passe `hangupAfterPlay: true` para encerrar a chamada automaticamente quando a reprodução terminar (bots de notificação não precisam de timer no cliente).
* `POST /v1/calls/{callId}/realtime-session` — abre uma sessão **WebSocket PCM16** full-duplex. A `wsUrl` retornada fica em um host público de mídia dedicado e seu token é de uso único com TTL curto (\~2 min); conecte-se a ela diretamente (não passa pelo proxy da API).

Números web não precisam de concessão de **permissão** BIC e não têm superfície de **configurações** de chamada (esses são conceitos da Meta).

## Camada de migração / compatibilidade

Se você já integra com o Evolution GO, a camada de compatibilidade faz proxy dos endpoints GO `/call/*` (start, answer, reject, hangup, list, get, media/play, media/realtime/session) — aponte sua base URL para `/api/layer/evolution-go/` e seu código de chamadas GO existente continua funcionando. O WebSocket em tempo real (`/call/media/realtime/ws/*`) é acessado **diretamente** em um host público de mídia dedicado (a camada HTTP não faz upgrade de WebSocket); rotas de frontend/manager do GO não passam pelo proxy.

## Acompanhe o progresso com webhooks

Assine `call.ringing`, `call.connected`, `call.ended` (inclui `duration` em segundos quando atendida), `call.missed` e `call.permission_updated`. Eventos `call.*` normalizados disparam tanto para números META quanto Pilot Status web.

<Frame caption="Chamadas na página de Logs — cada chamada aparece com direção, status (Completada com duração, Perdida, Recusada) e um contador próprio de CHAMADAS.">
  <img src="https://mintcdn.com/iaxp/khwm1oC7UGmwQ1YH/images/dashboard/logs-calls.png?fit=max&auto=format&n=khwm1oC7UGmwQ1YH&q=85&s=71b881ce41b61bc667241b9e25d993c2" alt="Página de Logs mostrando um card de CHAMADAS e linhas de chamadas recebidas com status Completada, Perdida e Recusada" width="1920" height="914" data-path="images/dashboard/logs-calls.png" />
</Frame>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Referência da API de Chamadas" icon="phone" href="/pt-BR/api/calls/endpoints">
    Cada endpoint, parâmetros e comportamento por provedor.
  </Card>

  <Card title="Guia de Chamadas de Voz" icon="book-open" href="/pt-BR/guides/voice-calls">
    Passo a passo: fazer chamada, atender, permissões, softphone.
  </Card>
</CardGroup>
