lfnovo/open-notebook · error · HTTPException
Error discovering models. Check server logs for details.
Error message
Error discovering models. Check server logs for details.
What it means
500 from GET/POST /api/v1/models/discover/{provider} when model discovery fails. Unlike sibling handlers, the detail deliberately hides the exception ('Check server logs') because discovery can leak provider account details; the real error is only logged as 'Error discovering models for {provider}'.
Source
Thrown at api/routers/models.py:564
# Provision DB-stored credentials into env vars before discovery
await provision_provider_keys(provider)
discovered = await discover_provider_models(provider)
return [
DiscoveredModelResponse(
name=m.name,
provider=m.provider,
model_type=m.model_type,
description=m.description,
)
for m in discovered
]
except HTTPException:
raise
except OpenNotebookError:
raise
except Exception as e:
logger.error(f"Error discovering models for {provider}: {str(e)}")
raise HTTPException(
status_code=500, detail="Error discovering models. Check server logs for details."
)
@router.post("/models/sync/{provider}", response_model=ProviderSyncResponse)
async def sync_models(provider: str):
"""
Sync models for a specific provider.
Discovers available models from the provider's API and registers
any new models in the database. Existing models are skipped.
Returns counts of discovered, new, and existing models.
"""
try:
# Provision DB-stored credentials into env vars before discovery
await provision_provider_keys(provider)
discovered, new, existing = await sync_provider_models(View on GitHub (pinned to a7de90d38a)
Solutions
- Read the server log line 'Error discovering models for {provider}' for the actual cause
- Verify the provider's API key and configuration
- Check network egress to the provider API
- Retry later if rate-limited
Defensive patterns
Strategy: try-catch
Validate before calling
const avail = await api.getProviderAvailability();
if (!avail[provider]?.available) throw new Error(`${provider} not available — check API key`); Try / catch
try { const r = await api.discoverModels(provider); } catch (e) { if (e.status === 500) surface('Discovery failed — see server logs'); } Prevention
- Check provider availability endpoint first
- Keep provider credentials valid
- Respect rate limits; don't spam discovery
When it happens
Trigger: Discovery call to a provider API that fails auth (bad API key), rate-limits, or is unreachable; provider name not matching a known discovery integration.
Common situations: Invalid/expired provider API key, provider API change or outage, network restrictions, rate limits after repeated discovery clicks.
Related errors
- Error checking provider availability: {str(e)}
- Error syncing models. Check server logs for details.
- Error fetching models: {str(e)}
- Error creating model: {str(e)}
- Error deleting model: {str(e)}
AI-assisted analysis of lfnovo/open-notebook@a7de90d38a (2026-08-27).
Data as JSON: /api/errors/cb606cc92e162577.
Report an issue: GitHub.