O código de status engana
Leia o error.code, não o código de status
Um nome de modelo errado volta como 503. Um campo messages ausente volta como 500. Os dois são erros permanentes da sua requisição — nenhuma retentativa resolve —, mas openai-python, openai-node e os SDKs da Anthropic repetem por padrão duas vezes os 408, 409, 429 e todos os 5xx, com backoff exponencial. Assim um erro de digitação se transforma em três idas e voltas e dezenas de segundos de espera antes de o motivo real aparecer. Esse motivo esteve o tempo todo no error.code, dentro do corpo: a parte que mente é o código de status.