diff --git a/src/proxy/middleware/response/index.ts b/src/proxy/middleware/response/index.ts index ae19a6c..540c208 100644 --- a/src/proxy/middleware/response/index.ts +++ b/src/proxy/middleware/response/index.ts @@ -274,6 +274,12 @@ const handleUpstreamErrors: ProxyResHandlerWithBody = async ( assertNever(service); } } else if (statusCode === 401) { + // OpenAI specific - retry with different key for any 401 error + if (service === "openai") { + keyPool.disable(req.key!, "revoked"); + await reenqueueRequest(req); + throw new RetryableError("OpenAI key authentication failed, retrying with different key."); + } // Key is invalid or was revoked keyPool.disable(req.key!, "revoked"); errorPayload.proxy_note = `Assigned API key is invalid or revoked, please try again.`; @@ -281,6 +287,7 @@ const handleUpstreamErrors: ProxyResHandlerWithBody = async ( // Deepseek specific - insufficient balance if (service === "deepseek") { keyPool.disable(req.key!, "quota"); + await reenqueueRequest(req); throw new RetryableError("Deepseek key has insufficient balance, retrying with different key."); } } else if (statusCode === 405) {