xtekky/gpt4free · error · RateLimitError
{message}: {model}
Error message
{message}: {model} What it means
Raised by raise_gemini_error() after mapping a Gemini error code (extracted from the response) through GEMINI_ERROR_MESSAGES. Codes 1037 and 1060 raise RateLimitError; every other code raises ResponseError. The message combines the human-readable code description with the model name, so the caller knows which model and which failure class is involved.
Source
Thrown at g4f/Provider/needs_auth/gemini_utils.py:265
if not isinstance(value, list):
return None
if value and value[0] == "wrb.fr":
code = get_nested_value(value, [5, 2, 0, 1, 0])
if isinstance(code, int):
return code
for item in value:
code = extract_gemini_error_code(item)
if code is not None:
return code
return None
def raise_gemini_error(code: int, model: str) -> None:
message = GEMINI_ERROR_MESSAGES.get(
code, f"Gemini rejected the request with error code {code}"
)
if code in (1037, 1060):
raise RateLimitError(f"{message}: {model}")
raise ResponseError(f"{message}: {model}")
View on GitHub (pinned to 973504e177)
Solutions
- Match the message text against the code table in GEMINI_ERROR_MESSAGES to identify the exact code
- For 1037/1060 (RateLimitError): back off and retry after the quota window resets
- For other codes: fix the underlying cause (prompt content for safety codes, model name for not-found codes)
- Switch model or provider if the code indicates a permanent rejection
Defensive patterns
Strategy: retry
Try / catch
from g4f.errors import RateLimitError, ResponseError
try:
result = await provider.create_async(model, messages)
except RateLimitError as e:
# codes 1037/1060: quota window
await asyncio.sleep(60)
result = await provider.create_async(model, messages)
except ResponseError as e:
# non-rate code: inspect message, do not blind-retry
raise Prevention
- Catch RateLimitError and ResponseError separately — only the former benefits from retry
- Throttle Gemini calls below the quota of your tier
- Parse the error message text to map back to the numeric Gemini code
When it happens
Trigger: Calling a Gemini-based provider and receiving a response containing a structured error code (via extract_gemini_error_code) — e.g. quota/recursion (1037, 1060) or safety/policy rejection codes — triggering raise_gemini_error.
Common situations: Hitting Gemini free-tier quota limits, safety filters rejecting the prompt, model deprecation, or invalid model names routed through the Gemini API surface.
Related errors
- Failed to chat: {response.status} {error_text}
- Failed to decode JSON from PhindAi response: {text}
- PhindAi API returned success=False: {data}
- {data['code']}:{data['details']}
- Response: {resp_json}
AI-assisted analysis of xtekky/gpt4free@973504e177 (2026-08-14).
Data as JSON: /api/errors/5b26f93edfebb6d5.
Report an issue: GitHub.