OpenBB-finance/OpenBB · error · UnauthorizedError
{error.get('code', '')} -> {error.get('message', '')}
Error message
{error.get('code', '')} -> {error.get('message', '')} What it means
UnauthorizedError from the amendments listing fetcher when the congress.gov response error code contains 'API_KEY' — credentials missing/invalid/exhausted. Same credential semantics as other congress.gov endpoints; raised inside a try block that re-raises OpenBBError subclasses untouched and wraps only unexpected exceptions.
Source
Thrown at openbb_platform/providers/congress_gov/openbb_congress_gov/models/congress_amendments.py:264
url += f"?limit={query.limit if query.limit is not None else 100}"
url += f"&offset={query.offset if query.offset else 0}"
url += f"&sort=updateDate+{query.sort_by}"
if query.start_date:
url += f"&fromDateTime={query.start_date}T00:00:00Z"
if query.end_date:
url += f"&toDateTime={query.end_date}T23:59:59Z"
url += f"&format=json&api_key={api_key}"
try:
response = await amake_request(url=url)
if isinstance(response, dict) and (error := response.get("error", {})):
if "API_KEY" in error.get("code", ""):
raise UnauthorizedError(
f"{error.get('code', '')} -> {error.get('message', '')}"
)
raise OpenBBError( # noqa: TRY301
f"{error.get('code', '')} -> {error.get('message', '')}"
)
except OpenBBError:
raise
except Exception as e:
raise OpenBBError(e) from e
amendments = response.get("amendments", []) # type: ignore
if not amendments:
return []
detail_urls = [
a["url"].split("?")[0] + f"?format=json&api_key={api_key}"
for a in amendmentsView on GitHub (pinned to 3e071fcc2c)
Solutions
- Set congress_gov_api_key in OpenBB credentials.
- Validate the key directly against api.congress.gov.
- Reduce request volume or request a higher quota.
Example fix
# before
obb.congress.amendments(congress=119)
# after
obb.account.credentials.set('congress_gov_api_key', KEY)
obb.congress.amendments(congress=119) Defensive patterns
Strategy: validation
Validate before calling
if not obb.account.credentials.get('congress_gov_api_key'):
raise RuntimeError('congress_gov_api_key not set') Try / catch
from openbb_core.provider.utils.errors import UnauthorizedError
try:
res = obb.congress.amendments(congress=119)
except UnauthorizedError:
raise SystemExit('configure congress_gov_api_key') from None Prevention
- Run a credential preflight in every deployment.
- Cache amendment listings to protect the shared quota.
- Alert on UnauthorizedError — it usually means quota loss, not a code bug.
When it happens
Trigger: Calling obb.congress.amendments(...) without a valid congress_gov_api_key; key suspended after exceeding 5,000 requests/hour; key stored under a misnamed credential.
Common situations: Unconfigured environments; batch jobs sharing one key across many workers; expired keys after congress.gov rotations.
Related errors
- {error.get('code', '')} -> {error.get('message', '')}
- {error.get('code', '')} -> {error.get('message', '')}
- {error.get('code', '')} -> {error.get('message', '')}
- [Error] -> {e}
- Invalid amendment_type: {values.amendment_type}. Must be one
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/ed107427fdf49b57.
Report an issue: GitHub.