{"record":{"id":"3cc80caf9fc8aa62","repo":"OpenBB-finance/OpenBB","slug":"no-valid-indicators-provided-please-choose-from","errorCode":null,"errorMessage":"No valid indicators provided. Please choose from: \",\".join(INDICATORS)","messagePattern":"No valid indicators provided\\. Please choose from: \",\"\\.join\\(INDICATORS\\)","errorType":"validation","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py","lineNumber":141,"sourceCode":"            if symbol.upper() == \"MAIN\":\n                if len(symbols) > 1:\n                    raise OpenBBError(\n                        \"The 'main' indicator cannot be combined with other indicators.\"\n                    )\n                return symbol\n            if not any(\n                (\n                    symbol.upper().startswith(indicator)\n                    if len(symbol) >= len(indicator)\n                    else symbol.upper() == indicator\n                )\n                for indicator in INDICATORS\n            ):\n                warn(f\"Invalid indicator: '{symbol}'.\")\n            else:\n                new_symbols.append(symbol)\n        if not new_symbols:\n            raise OpenBBError(\n                \"No valid indicators provided. Please choose from: \"\n                + \",\".join(INDICATORS)\n            )\n        return \",\".join(new_symbols)\n\n\nclass EconDbEconomicIndicatorsData(EconomicIndicatorsData):\n    \"\"\"EconDB Economic Indicators Data.\"\"\"\n\n\nclass EconDbEconomicIndicatorsFetcher(\n    Fetcher[EconDbEconomicIndicatorsQueryParams, list[EconDbEconomicIndicatorsData]]\n):\n    \"\"\"EconDB Economic Indicators Fetcher.\"\"\"\n\n    require_credentials = False\n\n    @staticmethod","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/econdb/openbb_econdb/models/economic_indicators.py#L123-L159","documentation":"OpenBBError from the same symbol validator: after filtering, zero symbols matched any key of EconDB's INDICATORS_DESCRIPTIONS catalog. Each invalid symbol produced a warn(\"Invalid indicator: '{symbol}'\"), and when new_symbols ends up empty the validator raises with the full valid indicator list embedded in the message.","triggerScenarios":"Calling obb.economy.indicator(provider='econdb', symbol='foo,bar') where neither starts with any known indicator root; also passing retired indicator codes no longer in the catalog of the installed provider version.","commonSituations":"Typos in indicator codes; indicator renamed/removed in a newer EconDB catalog than the installed openbb-econdb knows; passing codes from a different provider (FRED series ids) to the econdb provider.","solutions":["Read the error message — it contains the complete comma-separated list of valid indicators for your installed version; pick from it.","Check the preceding warnings for exactly which symbols were rejected.","Update openbb-econdb so the catalog matches current EconDB codes.","List valid codes at runtime via the available-indicators endpoint (obb.economy.indicators(provider='econdb'))."],"exampleFix":"# before\nres = obb.economy.indicator(provider=\"econdb\", symbol=\"inflaiton\", country=\"us\")  # typo\n\n# after\nres = obb.economy.indicator(provider=\"econdb\", symbol=\"cpi\", country=\"us\")","handlingStrategy":"validation","validationCode":"from openbb_econdb.utils import helpers\n\ndef valid_symbols(symbols: list[str]) -> list[str]:\n    known = list(helpers.INDICATORS_DESCRIPTIONS)\n    return [s for s in symbols if any(s.upper().startswith(k) if len(s) >= len(k) else s.upper() == k for k in known)]\n# if empty -> the call would raise; surface valid list to the user","typeGuard":null,"tryCatchPattern":"from openbb_core.provider.utils.errors import OpenBBError\ntry:\n    res = obb.economy.indicator(provider=\"econdb\", symbol=syms, country=cs)\nexcept OpenBBError as e:\n    msg = str(e)\n    if \"No valid indicators\" in msg:\n        valid = msg.rsplit(\": \", 1)[-1].split(\",\")  # recover the catalog from the message\n        raise ValueError(f\"choose from: {valid[:20]}...\")\n    raise","preventionTips":["Fetch the catalog (obb.economy.indicators(provider='econdb')) once and validate symbols against it.","Watch for per-symbol 'Invalid indicator' warnings before the fatal raise."],"tags":["econdb","validation","symbols","catalog"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}