{"record":{"id":"760399bf68d95fcd","repo":"lfnovo/open-notebook","slug":"error-checking-provider-availability-str-e","errorCode":null,"errorMessage":"Error checking provider availability: {str(e)}","messagePattern":"Error checking provider availability: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"api/routers/models.py","lineNumber":524,"sourceCode":"                    supported_types[provider].append(\"language\")\n            else:\n                # Standard provider detection\n                for model_type, providers in esperanto_available.items():\n                    if provider in providers:\n                        supported_types[provider].append(model_type)\n\n        return ProviderAvailabilityResponse(\n            available=available_providers,\n            unavailable=unavailable_providers,\n            supported_types=supported_types,\n        )\n    except HTTPException:\n        raise\n    except OpenNotebookError:\n        raise\n    except Exception as e:\n        logger.error(f\"Error checking provider availability: {str(e)}\")\n        raise HTTPException(\n            status_code=500, detail=f\"Error checking provider availability: {str(e)}\"\n        )\n\n\n# =============================================================================\n# Model Discovery Endpoints\n# =============================================================================\n\n\n@router.get(\n    \"/models/discover/{provider}\", response_model=List[DiscoveredModelResponse]\n)\nasync def discover_models(provider: str):\n    \"\"\"\n    Discover available models from a provider without registering them.\n\n    This endpoint queries the provider's API to list available models\n    but does not save them to the database. Use the sync endpoint","sourceCodeStart":506,"sourceCodeEnd":542,"githubUrl":"https://github.com/lfnovo/open-notebook/blob/a7de90d38aaf18ee85fd661854d35c11e44613e2/api/routers/models.py#L506-L542","documentation":"Generic 500 from GET /api/v1/models/providers when checking provider availability fails unexpectedly. The handler probes each configured provider; unexpected probe errors (missing API keys surfaced as raw exceptions, import failures) end in this branch.","triggerScenarios":"GET /models/providers with a provider whose SDK is not installed, env vars missing, or a provider client raising a non-domain exception during the availability probe.","commonSituations":"Missing API key env vars (e.g. OPENAI_API_KEY), uninstalled optional provider packages, network egress blocked so probes throw.","solutions":["Check API logs for 'Error checking provider availability' to identify the failing provider","Ensure required provider API keys/env vars are set","Install optional provider SDKs if the log shows ImportError","Remove or disable misconfigured providers"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"const cfg = await api.getConfig(); // ensure provider api keys set before probing\nif (!cfg?.providerKeys?.length) return { providers: [] };","typeGuard":null,"tryCatchPattern":"try { const p = await api.getProviderAvailability(); } catch (e) { if (e.status === 500) return fallbackProvidersList(); }","preventionTips":["Set provider API keys before probing","Install optional provider SDKs","Cache last-known availability as fallback"],"tags":["models","providers","http-500"],"backgroundTag":"internal-server-error","analyzedSha":"a7de90d38aaf18ee85fd661854d35c11e44613e2","analyzedAt":"2026-08-27T02:39:58.166Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}