Skip to main content
Todo erro — inclusive os que não previmos — tem a mesma forma:
Baseie a sua lógica no code. Ele é contrato e não muda. A message é escrita para gente ler e pode ser reescrita a qualquer momento — inclusive para ficar melhor. Quando isso acontece, um if que compara a mensagem para de funcionar sem avisar.

As sete famílias

O type 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.

details

details é sempre objeto, mesmo vazio. Em validation_failed, ele traz os campos recusados e as mensagens de cada um:
Em 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? Escreva para suporte@usevext.com. 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.