Erro vem em error, como objeto. Erros de negócio trazem codigo, um identificador
estável para o seu código tratar — a message é para gente, pode mudar de texto:
Autenticação: quando a credencial falha (401), error é uma string, não um
objeto: { "error": "Token JWT ou chave de API ausente" }. Trate os dois formatos.
Erro inesperado (500): a resposta traz um id de correlação
({ "error": { "message": "Erro interno… informe o código a1b2c3d4.", "id": "a1b2c3d4" } }).
Informe esse código ao suporte — ele liga a sua chamada ao log exato.