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:
        raise

View on GitHub (pinned to a7de90d38a)

Solutions

  1. Check logs for 'Error registering models for credential <id>: ...'
  2. List existing models to detect slug/ID collisions; remove duplicates before retrying
  3. Re-run discovery to get fresh model metadata, then register again
  4. 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

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


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