xtekky/gpt4free · error · MissingAuthError
Response {response.status_code}: Invalid API key
Error message
Response {response.status_code}: Invalid API key What it means
Sync variant: HTTP 400 with 'API key not valid' in the body raises MissingAuthError('Invalid API key'). Google-style APIs report bad keys as 400, and g4f normalizes that to an auth error for easier catching.
Source
Thrown at g4f/requests/raise_for_status.py:118
) or response.text.startswith("<!DOCTYPE")
message = response.text
if message is None or is_html:
if response.status_code == 520:
message = "Unknown error (Cloudflare)"
if response.status_code in (429, 402):
raise RateLimitError(f"Response {response.status_code}: {message}")
if response.status_code == 401:
raise MissingAuthError(f"Response {response.status_code}: {message}")
if response.status_code == 403 and is_cloudflare(response.text):
raise CloudflareError(f"Response {response.status_code}: Cloudflare detected")
elif response.status_code == 403 and is_openai(response.text):
raise MissingAuthError(f"Response {response.status_code}: OpenAI Bot detected")
elif response.status_code == 502:
raise ResponseStatusError(f"Response {response.status_code}: Bad Gateway")
elif response.status_code == 504:
raise RateLimitError(f"Response {response.status_code}: Gateway Timeout ")
elif response.status_code == 400 and "API key not valid" in message:
raise MissingAuthError(f"Response {response.status_code}: Invalid API key")
else:
raise ResponseStatusError(
f"Response {response.status_code}: {'HTML content' if is_html else message}"
)
View on GitHub (pinned to 973504e177)
Solutions
- Regenerate and correctly configure the provider API key.
- Verify key/vendor match.
- Test the key with a direct provider API call.
- Review key restrictions in the provider console.
Defensive patterns
Strategy: validation
Validate before calling
import re, os
def gemini_key_ok() -> bool:
k = os.environ.get('GEMINI_API_KEY', '')
return bool(re.fullmatch(r'[A-Za-z0-9_\-]{30,}', k))
assert gemini_key_ok() Type guard
from g4f.errors import MissingAuthError
def is_invalid_key(err: BaseException) -> bool:
return isinstance(err, MissingAuthError) and 'Invalid API key' in str(err) Try / catch
from g4f.errors import MissingAuthError
try:
resp = g4f.ChatCompletion.create(model, messages)
except MissingAuthError as e:
if 'Invalid API key' in str(e):
raise SystemExit('Regenerate the provider key and re-run')
raise Prevention
- Sanity-check key length/format before runs
- Regenerate, don't retry, on invalid-key errors
- Match key to provider
- Audit provider dashboards for revoked keys
When it happens
Trigger: Synchronous g4f calls to Gemini/Google-style providers with a malformed or revoked key that the API rejects at 400.
Common situations: Typo'd or truncated key; key deleted in AI Studio; wrong vendor's key; key restricted from the requested model.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
Related errors
- Response {response.status}: Invalid API key
- Failed to obtain Turnstile token for DeepInfra request.
- Add a "api_key"
- Missing "api_key"
- API key is required.
AI-assisted analysis of xtekky/gpt4free@973504e177 (2026-08-14).
Data as JSON: /api/errors/e395e5c02f2cb177.
Report an issue: GitHub.