OpenBB-finance/OpenBB · error · OpenBBError

Error fetching data from Intrinio: {response.status} -> {res

Error message

Error fetching data from Intrinio: {response.status} -> {response.text}

What it means

The first-page HTTP guard in the Intrinio filings fetcher: after GET {base}/companies/{symbol}/filings, any non-200 status raises OpenBBError embedding the status code and response body. Typical statuses are 401/403 (bad or under-privileged API key), 404 (unknown symbol), 429 (rate limit).

Source

Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/company_filings.py:131

        from openbb_core.provider.utils.helpers import (
            get_async_requests_session,
            get_querystring,
        )

        api_key = credentials.get("intrinio_api_key") if credentials else ""

        base_url = "https://api-v2.intrinio.com/companies"
        query_str = get_querystring(
            query.model_dump(by_alias=True), ["symbol", "limit", "page_size"]
        )
        url = f"{base_url}/{query.symbol}/filings?{query_str}&page_size={query.limit or 10000}&api_key={api_key}"
        results: list = []
        metadata: dict = {}
        session = await get_async_requests_session()

        async with await session.get(url) as response:
            if response.status != 200:
                raise OpenBBError(
                    f"Error fetching data from Intrinio: {response.status} -> {response.text}"
                )
            result = await response.json()
            if filings := result.get("filings", []):
                results.extend(filings)

            metadata = result.get("company", {})

            while next_page := result.get("next_page"):
                url += f"&next_page={next_page}"
                async with await session.get(url) as next_response:
                    if response.status != 200:
                        raise OpenBBError(
                            f"Error fetching data from Intrinio: {response.status} -> {response.text}"
                        )
                    result = await next_response.json()
                    if filings := result.get("filings", []):
                        results.extend(filings)

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Check the status in the message: 401/403 -> fix credentials (obb.user.credentials.intrinio_api_key); 404 -> verify the symbol exists on Intrinio; 429 -> slow down / add backoff.
  2. Confirm the key is loaded: python -c "from openbb import obb; print(bool(obb.user.credentials.intrinio_api_key))".
  3. For batch jobs, add exponential backoff on 429 and cache responses.
  4. Retry once after fixing credentials - the error includes response.text for diagnosis.

Example fix

# before
obb.user.credentials.intrinio_api_key = 'WRONG_KEY'
obb.equity.filings(provider='intrinio', symbol='AAPL')
# after
obb.user.credentials.intrinio_api_key = os.environ['INTRINIO_API_KEY']  # valid key
obb.equity.filings(provider='intrinio', symbol='AAPL')

# batch backoff for 429
import time
for attempt in range(5):
    try:
        res = obb.equity.filings(provider='intrinio', symbol=sym); break
    except Exception as e:
        if '429' in str(e): time.sleep(2 ** attempt); continue
        raise
Defensive patterns

Strategy: retry

Validate before calling

from openbb import obb
import os
# Ensure credentials exist before the call
if not (os.getenv('INTRINIO_API_KEY') or obb.user.credentials.intrinio_api_key):
    raise RuntimeError('Intrinio API key not configured - fix before fetching')

Try / catch

import time
from openbb_core.app.model.abstract.error import OpenBBError

for attempt in range(5):
    try:
        res = obb.equity.filings(provider='intrinio', symbol=sym)
        break
    except OpenBBError as e:
        msg = str(e)
        if ' 429 ' in msg and attempt < 4:
            time.sleep(2 ** attempt); continue
        if ' 401 ' in msg or ' 403 ' in msg:
            raise CredentialsError('Intrinio rejected the API key') from e
        if ' 404 ' in msg:
            skip_symbol(sym); break
        raise

Prevention

When it happens

Trigger: Calling obb.equity.filings(provider='intrinio', symbol=...) with a missing/expired Intrinio API key (401/403), a delisted or mistyped symbol (404), or exceeding Intrinio's per-minute call limits (429). The response body text is appended verbatim, so the exact cause is in the message.

Common situations: Env var INTRINIO_API_KEY not set in the session; free-tier keys hitting paid endpoints; rate limits during batch backfills; symbols from other markets (e.g. OTC tickers) Intrinio doesn't cover.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/3a688c577872d1b5. Report an issue: GitHub.