/call/makeIniciar ligação por instância calls
Exige kind=calls conectado e módulo ligado. Retorna 201 ao iniciar; acompanhar o estado. video: true inicia uma chamada de vídeo (exige capabilities.calls_video). Em instância whatsapp mantém 501 calls_not_supported. Não equivale à chamada sem áudio do provedor legado.
Autenticação
Header obrigatório: token. Use o token da instância.
Base URL: a API do servidor selecionado, como https://1.atendro.cloud. O domínio wpp.atendro.cloud hospeda a documentação e o console.
Idempotência: suporta Idempotency-Key, com retenção de 24 horas. Preserve a mesma chave, método, caminho e bytes do corpo ao repetir. Entenda a idempotência.
Headers adicionais
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
X-Request-Id | string | opcional | ASCII visível sem espaços, 1–128 caracteres. Inválido/ausente é substituído por UUID. Ecoado na resposta. Comprimento máximo: 128 |
Idempotency-Key | string | opcional | ASCII visível sem espaços, 1–128. Repetir método, caminho e os mesmos bytes do JSON. 409 em andamento; 422 se mudar a requisição. 504 é guardado e não deve causar reenvio automático. Comprimento mínimo: 1. Comprimento máximo: 128 |
Corpo da requisição
Formato: application/json. Corpo obrigatório.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
number | string | obrigatório | Telefone com DDI (formatação removida pela API) ou JID de conversa direta. Resolve as duas formas do nono dígito brasileiro. Comprimento mínimo: 1 |
video | boolean | opcional | Inicia uma chamada de vídeo: a oferta anuncia vídeo e o envio da câmera abre quando a mídia começa. Exige capabilities.calls_video=true; caso contrário 501 calls_video_not_supported. Padrão: false |
Respostas
Chamada iniciada; acompanhar pelo callId.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
callId | string | obrigatório | — |
direction | string | obrigatório | Valores: "inbound", "outbound" |
number | string | obrigatório | Identidade telefônica canônica, quando conhecida. |
jid | string | opcional | — |
status | string | obrigatório | Valores: "ringing", "connecting", "active", "ended" |
startedAt | string | obrigatório | Formato: date-time |
answeredAt | string | opcional | Momento do aceite remoto ou do atendimento local; não depende do primeiro áudio. Formato: date-time |
endedAt | string | opcional | Formato: date-time |
endReason | string | opcional | hangup, rejected, ring_timeout, closed, unknown ou motivo do motor. Um terminate remoto sem motivo explícito (ausente, vazio ou só espaços) é hangup/remote: solicitação remota de encerramento, sem comprovar ação humana. Motivos explícitos são preservados; callbacks genéricos sem motivo continuam unknown. O primeiro motivo fica no histórico; registros antigos não são reclassificados. |
endedBy | string | opcional | Valores: "local", "remote" |
answered | boolean | opcional | Verdadeiro a partir do aceite, mesmo antes de o áudio iniciar. |
mediaStartedAt | string | opcional | Momento em que o motor confirmou mídia recebida. Formato: date-time |
durationSeconds | number | opcional | Tempo entre atendimento e encerramento; zero para chamadas sem atendimento ou ainda em curso. Mínimo: 0 |
recording | object | opcional | Modelo: CallRecording. |
video | boolean | obrigatório | Verdadeiro quando a chamada é ou foi de vídeo (negociado em qualquer direção em algum momento). Permanece no histórico. |
videoState | object | opcional | Estado vivo do vídeo; presente apenas enquanto a chamada não terminou. Os campos sending/receiving refletem o fluxo negociado, não quadros efetivamente trafegando. Modelo: CallVideoState. |
videoRecording | object | opcional | Gravação de vídeo independente do WAV. Campo opcional, presente somente após começar a captura de vídeo. processing indica composição do MP4 em fila após a chamada; não muda o estado ou a ocupação de ligações. O primeiro resultado terminal é preservado. Modelo: CallVideoRecording. |
incomingCallMode | string | opcional | Comportamento para novas chamadas recebidas: allow permite atendimento humano; reject recusa no servidor; reject_reply recusa e solicita ao consumidor resposta por uma conexão de mensagens vinculada. Não atende automaticamente. O envio do texto é independente da recusa. Modelo: IncomingCallMode. Valores: "allow", "reject", "reject_reply" |
callsConfigVersion | integer | opcional | Versão da política congelada na chegada da chamada recebida. Não é seq do evento; mudanças de configuração posteriores não alteram esta decisão. Mínimo: 0. Formato: int64 |
rejectionSource | string | opcional | Origem de uma recusa confirmada: política automática, ocupação ou operador. Não confundir com timeout, desligamento remoto ou atendimento em outro dispositivo. Valores: "policy", "busy", "manual" |
autoReplyRequested | boolean | opcional | Verdadeiro somente após recusa confirmada por política reject_reply. O consumidor enfileira o texto uma única vez por instância/chamada; este campo não comprova envio da resposta. |
invalid_number ou invalid_json.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
unauthorized: header ausente, inválido ou duplicado. Bearer/query/instancekey não substituem admintoken/token.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
number_not_on_whatsapp.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
line_busy, not_connected, owned_elsewhere ou idempotency_in_progress.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
idempotency_mismatch: chave repetida com corpo diferente.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
calls_not_supported: módulo desligado; /call/make também recusa instância whatsapp. calls_video_not_supported: video=true sem o recurso no worker.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
call_failed.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
retry_later antes de iniciar a chamada.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |
Falha; usar HTTP status e error. 404 rota inexistente; 405 método inválido com Allow. Ver catálogo no guia de integração.
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
error | string | obrigatório | — |
message | string | opcional | — |
messageid | string | opcional | ID para reconciliação quando o resultado é ambíguo. |
messageId | string | opcional | — |
id | string | opcional | — |
provider_code | integer | opcional | — |
error_key | string | opcional | — |
error_source | string | opcional | — |
details | object | opcional | — |
instance | object | opcional | Modelo: Instance. |