Erros e limites

O que cada código significa e quantos pedidos podes fazer.

Um erro devolve sempre o mesmo formato: um code estável, para o teu programa decidir, e uma message em português, para aparecer a uma pessoa. Trata o code, nunca o texto: a mensagem pode mudar, o código não.

json
{
  "error": {
    "code": "device_offline",
    "message": "O telemovel dev_oppo_cph2577 esta offline desde 14:02.",
    "requestId": "req_01H8X2K9"
  }
}

Estados HTTP

EstadoSignificadoO que fazer
200aceitenada
400o pedido está mal formadocorrigir o corpo; repetir não ajuda
401chave inválida ou revogadacriar uma chave nova
402sem mensagens no planoesperar pela renovação ou mudar de plano
404o dispositivo não existeconfirmar o deviceId em /devices
409o dispositivo está offlineesperar ou enviar por outro
429demasiados pedidosesperar o que diz Retry-After
5xxfalha do nosso ladorepetir com espera crescente

Códigos de erro

CódigoQuando acontece
invalid_numbero número não está em E.164 ou não existe
message_too_longacima de 1530 caracteres
device_offlineo telemóvel escolhido não está ligado
device_not_foundo deviceId não pertence à conta
quota_exceededas mensagens do mês acabaram
rate_limitedacima de 60 pedidos por minuto
invalid_keya chave foi revogada ou nunca existiu

Limites

LimiteValor
Pedidos à API60 por minuto e por chave
Envio por telemóvelcerca de 40 mensagens por minuto
Fila por telemóvel5000 mensagens
Tamanho do corpo256 kB

O limite real é o do telemóvel, não o da API

A API aceita 60 pedidos por minuto, mas um telemóvel Android envia cerca de 40 mensagens por minuto. Aceitar depressa de mais só faz crescer a fila: para 10 000 mensagens conta com umas quatro horas num telemóvel, ou divide por vários.