{"record":{"id":"ed107427fdf49b57","repo":"OpenBB-finance/OpenBB","slug":"error-get-code-error-get-message-ed1074","errorCode":null,"errorMessage":"{error.get('code', '')} -> {error.get('message', '')}","messagePattern":"\\{error\\.get\\('code', ''\\)\\} -> \\{error\\.get\\('message', ''\\)\\}","errorType":"exception","errorClass":"UnauthorizedError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/congress_gov/openbb_congress_gov/models/congress_amendments.py","lineNumber":264,"sourceCode":"\n        url += f\"?limit={query.limit if query.limit is not None else 100}\"\n        url += f\"&offset={query.offset if query.offset else 0}\"\n        url += f\"&sort=updateDate+{query.sort_by}\"\n\n        if query.start_date:\n            url += f\"&fromDateTime={query.start_date}T00:00:00Z\"\n\n        if query.end_date:\n            url += f\"&toDateTime={query.end_date}T23:59:59Z\"\n\n        url += f\"&format=json&api_key={api_key}\"\n\n        try:\n            response = await amake_request(url=url)\n\n            if isinstance(response, dict) and (error := response.get(\"error\", {})):\n                if \"API_KEY\" in error.get(\"code\", \"\"):\n                    raise UnauthorizedError(\n                        f\"{error.get('code', '')} -> {error.get('message', '')}\"\n                    )\n                raise OpenBBError(  # noqa: TRY301\n                    f\"{error.get('code', '')} -> {error.get('message', '')}\"\n                )\n        except OpenBBError:\n            raise\n        except Exception as e:\n            raise OpenBBError(e) from e\n\n        amendments = response.get(\"amendments\", [])  # type: ignore\n\n        if not amendments:\n            return []\n\n        detail_urls = [\n            a[\"url\"].split(\"?\")[0] + f\"?format=json&api_key={api_key}\"\n            for a in amendments","sourceCodeStart":246,"sourceCodeEnd":282,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/congress_gov/openbb_congress_gov/models/congress_amendments.py#L246-L282","documentation":"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.","triggerScenarios":"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.","commonSituations":"Unconfigured environments; batch jobs sharing one key across many workers; expired keys after congress.gov rotations.","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."],"exampleFix":"# before\nobb.congress.amendments(congress=119)\n\n# after\nobb.account.credentials.set('congress_gov_api_key', KEY)\nobb.congress.amendments(congress=119)","handlingStrategy":"validation","validationCode":"if not obb.account.credentials.get('congress_gov_api_key'):\n    raise RuntimeError('congress_gov_api_key not set')","typeGuard":null,"tryCatchPattern":"from openbb_core.provider.utils.errors import UnauthorizedError\n\ntry:\n    res = obb.congress.amendments(congress=119)\nexcept UnauthorizedError:\n    raise SystemExit('configure congress_gov_api_key') from None","preventionTips":["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."],"tags":["congress-gov","auth","api-key","amendments","openbb"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}