Erros e limites
Todo erro do /v2 tem a mesma forma, com o request_id que também vem no cabeçalho X-Request-Id. Mande o request_id quando abrir um chamado de suporte.
HTTP/1.1 409 Conflict
X-Request-Id: req_9a32c15b6cf043c19974ea42e572cfaf
{"error": "taken_elsewhere", "request_id": "req_9a32c15b6cf043c19974ea42e572cfaf"}
Códigos
| HTTP | error | O que fazer |
|---|---|---|
| 400 | bad_request | JSON inválido ou Idempotency-Key ausente (detail: idempotency_key) |
| 401 | unauthorized | sem detalhe, de propósito: confira iss, aud, kid, relógio, jti repetido, vida do token. O SDK pede token novo e repete uma vez |
| 403 | forbidden, scope_missing | credencial certa na rota errada, ou falta o escopo |
| 403 | not_allowed | o seu authorize_url negou (modo callback); detail: unavailable se ele não respondeu em 3 s |
| 403 | partner_disabled | conta suspensa: fale com o suporte |
| 404 | call_not_found, site_not_found, device_not_found | não existe, ou não é seu: a resposta é a mesma de propósito |
| 409 | taken_elsewhere | outro aparelho atendeu primeiro: pare de tocar |
| 409 | attendant_busy | em group, quem tentou atender já está em outra chamada |
| 409 | call_not_ringing | cancelar ou atender depois do toque |
| 409 | idempotency_in_progress | o primeiro pedido com esta chave ainda está em curso: tente de novo em 1 s |
| 422 | validation_failed | campo inválido ou desconhecido; detail diz qual |
| 422 | idempotency_conflict | mesma chave com corpo diferente: chave nova |
| 422 | ring_timeout_out_of_range, metadata_too_large | 15 a 60 s e até o do site; até 16 chaves e 1 KB |
| 426 | client_too_old | o SDK está abaixo da versão mínima que o seu app exige (console, Apps e push); detail traz a versão mínima. Atualize o SDK. Os SDKs mandam X-Voice-Client e param de reconectar com este código |
| 429 | rate_limited | espere o Retry-After (segundos); detail: station_quota é a cota do posto |
| 503 | unavailable | tente de novo com espera crescente |
Erros no SDK
Os SDKs emitem o evento error com um código fechado, igual nos seis: mic_denied, token_failed, not_allowed, taken_elsewhere, attendant_busy, push_unavailable, client_too_old. A promessa que falhou traz o código do REST em VoiceError.code, com status, requestId e retryAfter.
Limites
| Limite | Padrão | Onde |
|---|---|---|
| Requisições | 20 por segundo, rajada de 50, por conta | cabeçalhos RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset em toda resposta autenticada |
| Chamadas simultâneas | max_concurrent do site (1 a 500) e 50 por conta | failed/site_limit ou partner_limit |
| Chamadas por posto | 30 em 10 minutos | 429 rate_limited, station_quota |
| Toque | 30 s (15 a 60 por site) | missed/no_answer |
| Duração | 1 h | max_duration |
| Sockets | 3 por aparelho, 20 mensagens por segundo, frame até 64 KB | 4429, error rate_limited, 4413 |
| Destinatários | 20 callees por chamada | 422 validation_failed |
| Sandbox | limite diário de chamadas (estimativa: 200) e dados apagados em 30 dias | só no sandbox hospedado |