Referência da API de Chamadas
URL base:https://pilotstatus.com.br/v1 Cabeçalhos: Content-Type: application/json, x-api-key: <your_api_key> (ou x-api-key-id).
As chamadas funcionam em dois provedores: números Meta Cloud API e números não oficiais (Pilot Status web) (conectados por QR). Qualquer outro provedor retorna
400 FEATURE_NOT_SUPPORTED. Todos os endpoints exigem uma chave com escopo de número. Veja a visão geral.Endpoints
Os provedores marcados são os que suportam cada endpoint. Chamar um endpoint em um provedor não suportado retorna400 FEATURE_NOT_SUPPORTED. Se um número não oficial não estiver conectado, os endpoints retornam 409 WHATSAPP_INSTANCE_NOT_CONNECTED.
| Método | Endpoint | Provedores | Descrição |
|---|---|---|---|
POST | /v1/calls | META, não oficial | Inicia uma chamada iniciada pela empresa (BIC). |
GET | /v1/calls | META, não oficial | Lista as chamadas do número (mais recentes primeiro; limit 1–100, before cursor ISO 8601). |
GET | /v1/calls/{callId} | META, não oficial | Uma chamada; adicione ?includeSdp=1 para receber sdpOffer/sdpAnswer (Meta). |
POST | /v1/calls/{callId}/accept | META, não oficial | Atende uma chamada recebida (UIC). No Meta, com resposta SDP; no não oficial, sem SDP. |
POST | /v1/calls/{callId}/reject | META, não oficial | Recusa uma chamada recebida (sem corpo). |
POST | /v1/calls/{callId}/terminate | META, não oficial | Desliga uma chamada ativa (sem corpo). |
POST | /v1/calls/{callId}/pre-accept | Somente META | Resposta SDP antecipada OPCIONAL (reduz cortes no áudio; a chamada só conecta ao aceitar). |
GET | /v1/calls/settings | Somente META | Lê o objeto de configurações calling do número. |
PUT | /v1/calls/settings | Somente META | Atualização parcial das configurações calling. |
GET | /v1/calls/permissions?to=<phone> | Somente META | Verifica se a empresa pode ligar para to. |
POST | /v1/calls/permissions/request | Somente META | Envia a solicitação interativa de permissão de chamada (dentro da janela de 24h). |
POST | /v1/calls/{callId}/play | Somente não oficial | Reproduz um arquivo de áudio na chamada (mídia no servidor). |
POST | /v1/calls/{callId}/realtime-session | Somente não oficial | Abre uma sessão WebSocket full-duplex de áudio PCM16. |
{callId} aceita ou o id de chamada do Pilot Status (call_...) ou o id de chamada da Meta (wacid...).
1. Iniciar uma chamada (BIC)
- Meta:
sdpé a oferta RFC 8866 produzida pelo SEU cliente WebRTC. O SDP do lado da empresa deve usara=setup:active. Sem permissão, a Meta retorna 138006 → o endpoint expõecode: "META_CALL_PERMISSION_REQUIRED". - não oficial: não envie
sdp— a mídia é tratada no servidor. Não há modelo de permissão BIC. bizOpaqueCallbackData(opcional, Meta) é devolvido no webhook de encerramento.
2. Atender uma chamada recebida (UIC)
Quando um usuário liga para o seu número, você recebe o webhookcall.ringing. Então:
accept/pre-accept/reject/terminate respondem { "success": true, "id": "call_...", "status": "..." }. O pre-accept (somente Meta) é opcional (resposta SDP antecipada para reduzir cortes); a chamada só conecta no accept.
3. Habilitar chamadas e configurações (somente Meta)
As seções 3 e 4 aplicam-se apenas a números Meta. No provedor não oficial não há superfície de configurações de chamada nem modelo de permissão BIC — chamar esses endpoints retorna
400 FEATURE_NOT_SUPPORTED.- O
PUTé parcial: envie apenasstatus,call_icon_visibility,callback_permission_status,call_hours,voicemail(o objetosipé rejeitado). - Um
call_hoursenviado substitui o objeto armazenado por completo (semântica da Meta). - Números com um limite de mensagens abaixo de 2.000/dia ainda não podem habilitar chamadas (erro 138015 da Meta).
- Credenciais SIP nunca são solicitadas nem retornadas.
4. Permissão de chamada (somente Meta, obrigatória antes de uma BIC)
call.permission_updated (status: NO_PERMISSION | TEMPORARY | PERMANENT). A Meta limita a taxa de solicitações de permissão (erro 138009) e o volume de BIC (100 chamadas/24h por número — erro 138012).
5. Reproduzir áudio na chamada (somente não oficial)
Nos números não oficiais a mídia é tratada no servidor, então você pode instruir o backend a baixar um arquivo de áudio e reproduzi-lo na chamada ativa. O backend busca a URL através de um guard de SSRF.6. Sessão de áudio em tempo real (somente não oficial)
Abre uma sessão WebSocket full-duplex de áudio PCM16 para transmitir áudio de/para a chamada ao vivo.A
wsUrl retornada aponta para um host de mídia dedicado — conecte-se diretamente a ela (não é feito proxy). O token é de uso único com TTL de ~2 minutos. A camada HTTP não faz upgrade de WebSocket. Endpoint somente não oficial (Meta → 400 FEATURE_NOT_SUPPORTED).7. Objeto de chamada (DTO)
status:INITIATED|RINGING|ACCEPTED|REJECTED|COMPLETED|FAILED|MISSED.direction:INBOUND(UIC) |OUTBOUND(BIC).- Os SDPs (
sdpOffer/sdpAnswer) aparecem apenas com?includeSdp=1emGET /v1/calls/{callId}— nunca na listagem. No provedor não oficial permanecemnull(mídia no servidor). durationSecondsé definido apenas quando a chamada foi atendida.
Webhooks
Estes eventos disparam para ambos os provedores (META e não oficial):Eventos de chamada
call.ringing · call.connected · call.ended (com duration quando atendida) · call.missed · call.permission_updatedFaturamento
- Meta: as BIC são cobradas pela Meta na WABA (por minuto, pulsos de 6s, apenas quando atendida). As UIC são gratuitas.
- não oficial: sem cobrança por minuto da Meta.
- O Pilot Status não cobra nada pelas chamadas em nenhum dos provedores.
Erros comuns
400 FEATURE_NOT_SUPPORTED— o número da chave não suporta o endpoint (ex.: um provedor não suportado, ou um endpoint exclusivo de um provedor chamado no outro).409 WHATSAPP_INSTANCE_NOT_CONNECTED— número não oficial não conectado.400 NUMBER_NOT_FOUND— a chave não está vinculada a um número.400— validação do corpo,INVALID_LIMIT,INVALID_BEFORE,MISSING_TO.401—x-api-key/x-api-key-idausente/inválido.403— chave com escopo de tenant (os endpoints de chamadas têm escopo de número).404 CALL_NOT_FOUND— o callId/wacid não pertence ao número da chave.- Erros de chamada da Meta são encaminhados com um
codemapeado — ex.:META_CALL_PERMISSION_REQUIRED(138006), limite de solicitação de permissão (138009), limite de BIC de 100 chamadas/24h (138012), chamadas não habilitadas (138000), tier de mensagens muito baixo para habilitar (138015).