El código de estado engaña
Lee error.code, no el código de estado
Un nombre de modelo mal escrito vuelve como 503. Un campo messages ausente vuelve como 500. Ambos son errores permanentes de tu petición —ningún reintento los arregla—, pero openai-python, openai-node y los SDK de Anthropic reintentan por defecto dos veces los 408, 409, 429 y todos los 5xx, con retroceso exponencial. Así, una errata se convierte en tres viajes de ida y vuelta y decenas de segundos de espera antes de que aparezca el motivo real. Ese motivo estuvo siempre en error.code, dentro del cuerpo: la parte que miente es el código de estado.