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

  1. Read the server log line 'Error discovering models for {provider}' for the actual cause
  2. Verify the provider's API key and configuration
  3. Check network egress to the provider API
  4. 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

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


AI-assisted analysis of lfnovo/open-notebook@a7de90d38a (2026-08-27). Data as JSON: /api/errors/cb606cc92e162577. Report an issue: GitHub.