lfnovo/open-notebook · error · HTTPException
Failed to register models
Error message
Failed to register models
What it means
Catch-all 500 from POST /api/credentials/{credential_id}/register-models. Registration persists discovered model IDs as model records linked to the credential; unexpected DB write failures or model-construction errors land here.
Source
Thrown at api/routers/credentials.py:463
logger.error(f"Error discovering models for credential {credential_id}: {e}")
raise HTTPException(status_code=500, detail="Failed to discover models")
@router.post("/{credential_id}/register-models", response_model=RegisterModelsResponse)
async def register_models_for_credential(
credential_id: str, request: RegisterModelsRequest
):
"""Register discovered models and link them to this credential."""
try:
result = await register_models(credential_id, request.models)
return RegisterModelsResponse(**result)
except HTTPException:
raise
except OpenNotebookError:
raise
except Exception as e:
logger.error(f"Error registering models for credential {credential_id}: {e}")
raise HTTPException(status_code=500, detail="Failed to register models")
# =============================================================================
# Migration endpoints
# =============================================================================
@router.post("/migrate-from-provider-config")
async def migrate_from_provider_config():
"""Migrate existing ProviderConfig data to individual credential records."""
try:
return await svc_migrate_from_provider_config()
except ValueError as e:
raise _handle_value_error(e)
except HTTPException:
raise
except OpenNotebookError:
raiseView on GitHub (pinned to a7de90d38a)
Solutions
- Check logs for 'Error registering models for credential <id>: ...'
- List existing models to detect slug/ID collisions; remove duplicates before retrying
- Re-run discovery to get fresh model metadata, then register again
- Confirm DB health and retry — registration is idempotent-ish once collisions are cleared
Defensive patterns
Strategy: validation
Validate before calling
const existing = await api.listModels(); const dups = requestedModelIds.filter(id => existing.some(m => m.matches(id))); if (dups.length) skipOrConfirm(dups); // avoid collisions before registering
Try / catch
try {
await api.registerModels(credentialId, { models: selected });
} catch (e) {
if (e.status === 500) { await api.listModels(); showError('Registration failed — check for duplicate models'); }
throw e;
} Prevention
- Dedupe against existing model records before registering
- Re-run discovery to get fresh metadata rather than reusing stale selections
When it happens
Trigger: Submitting selected model IDs to register while the DB write fails, registering a model whose slug collides with an existing model record, or referencing stale discovered-model data.
Common situations: Registering models discovered in a previous session after the credential was updated, duplicate registration attempts, or DB briefly unavailable.
Related errors
- Failed to check environment status
- Failed to list credentials
- Failed to list credentials for provider
- Failed to create credential
- Failed to update credential
AI-assisted analysis of lfnovo/open-notebook@a7de90d38a (2026-08-27).
Data as JSON: /api/errors/19b2d5e10a26941c.
Report an issue: GitHub.