{"record":{"id":"2b74797db9477b32","repo":"OpenBB-finance/OpenBB","slug":"error-error-message-2b7479","errorCode":null,"errorMessage":"Error: {error} -> {message}","messagePattern":"Error: (.+?) -> (.+?)","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/intrinio/openbb_intrinio/models/forward_sales_estimates.py","lineNumber":192,"sourceCode":"                new_data = data.get(\"estimates\")  # type: ignore\n                if new_data:\n                    results.extend(new_data)\n\n        if symbols:\n            await asyncio.gather(*[get_one(symbol) for symbol in symbols])\n            return results\n\n        async def fetch_callback(response, session):\n            \"\"\"Use callback for pagination.\"\"\"\n            data = await response.json()\n            error = data.get(\"error\", None)\n            if error:\n                message = data.get(\"message\", \"\")\n                if \"api key\" in message.lower():\n                    raise UnauthorizedError(\n                        f\"Unauthorized Intrinio request -> {message}\"\n                    )\n                raise OpenBBError(f\"Error: {error} -> {message}\")\n            if data.get(\"estimates\") and len(data.get(\"estimates\")) > 0:  # type: ignore\n                results.extend(data.get(\"estimates\"))  # type: ignore\n                while data.get(\"next_page\"):  # type: ignore\n                    next_page = data[\"next_page\"]  # type: ignore\n                    next_url = f\"{url}&next_page={next_page}\"\n                    data = await amake_request(next_url, session=session, **kwargs)\n                    if \"estimates\" in data and len(data.get(\"estimates\")) > 0:  # type: ignore\n                        results.extend(data.get(\"estimates\"))  # type: ignore\n            return results\n\n        url = f\"{BASE_URL}&{query_str}&api_key={api_key}\"\n\n        results = await amake_request(url, response_callback=fetch_callback, **kwargs)  # type: ignore\n\n        if not results:\n            raise EmptyDataError(\"The request was successful but was returned empty.\")\n\n        return results","sourceCodeStart":174,"sourceCodeEnd":210,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/intrinio/openbb_intrinio/models/forward_sales_estimates.py#L174-L210","documentation":"Generic OpenBBError from the forward sales estimates callback for Intrinio body errors unrelated to API keys. Wraps the raw error and message fields so the caller sees exactly what Intrinio reported for the zacks/forward_sales request (including paginated next_page fetches, which reuse amake_request but surface errors here only on the first page).","triggerScenarios":"equity/estimates/forward_sales with provider='intrinio' where the initial page returns a JSON error body: invalid symbol or parameter, rate limit expressed in body, or endpoint contract change.","commonSituations":"Misspelled/delisted tickers; throttling after bursts of estimate calls; Intrinio API schema changes after provider package updates lag.","solutions":["Read the raw '{error} -> {message}' content to classify the failure.","Fix symbol or parameter per the message.","Add request spacing to avoid rate-limit errors.","Update openbb-intrinio if the endpoint contract changed."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"import re\ndef is_ticker(s): return bool(re.fullmatch(r'[A-Z.\\-]{1,8}', s.upper()))","typeGuard":null,"tryCatchPattern":"from openbb_core.provider.exceptions import OpenBBError\ntry:\n    res = obb.equity.estimates.forward_sales(symbol=sym, provider='intrinio')\nexcept OpenBBError as e:\n    log.warning('intrinio forward_sales failed for %s: %s', sym, e)\n    raise","preventionTips":["Log the embedded error text verbatim","Validate symbols before calls","Space out estimate requests to avoid throttle errors","Track Intrinio API changelogs"],"tags":["intrinio","api-error","estimates","wrapper"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}