As oito famílias
Otype responde de quem é o problema e o que fazer. É por ele que você decide o comportamento;
o code diz qual mensagem mostrar.
A divisão que importa na prática:
invalid_request_error se corrige mudando a chamada,
authentication_error trocando a chave, e api_error é nosso — repita, não reescreva.
card_error é o único que descreve uma cobrança que existe. Os outros sete recusam a chamada
antes de criar qualquer coisa; um 402 card_declined devolve em details.charge_id o ch_ de uma
cobrança já gravada com status failed. Tratá-lo como os demais e descartar a resposta deixa você
sem a tentativa que o comprador jura ter feito. Ver
Cobrança no cartão.
details
details é sempre objeto, mesmo vazio. Em validation_failed, ele traz os campos recusados e as
mensagens de cada um:
insufficient_scope, ele traz required_ability e a lista de abilities que a chave tem.
Catálogo de códigos
Todos são estáveis. Se um código novo aparecer, ele entra nesta tabela — nenhum destes muda de significado.Tratando na prática
Registre
code, type e o horário da chamada no seu log. São esses três que permitem localizar a
requisição do nosso lado quando você abre um chamado.Veja também
Repetir com segurança
A matriz de qual código merece retry.
Limites de requisição
Como não chegar no
429.Ficou algo de fora? Chame no WhatsApp. Se o assunto for uma chamada específica, informe o horário dela; se for uma entrega de webhook, informe o
X-Vext-Delivery — é por ele que localizamos a tentativa, a resposta do seu servidor e o horário.