{"record":{"id":"19f37e6529a8fc4f","repo":"HKUDS/DeepTutor","slug":"base-url-is-required-for-this-provider","errorCode":null,"errorMessage":"base_url is required for this provider.","messagePattern":"base_url is required for this provider\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"deeptutor/api/routers/settings.py","lineNumber":1320,"sourceCode":"        \"runtime\": applied,\n    }\n\n\n@router.post(\"/fetch-models\")\nasync def fetch_models_from_provider(payload: FetchModelsPayload):\n    \"\"\"List the model IDs an OpenAI-compatible provider exposes.\n\n    Thin HTTP surface over ``factory.fetch_models`` so the settings UI can\n    populate a model picker from ``base_url`` + ``api_key`` instead of making\n    the user type model IDs by hand.\n    \"\"\"\n    _require_settings_admin()\n    from deeptutor.services.llm.factory import fetch_models as fetch_llm_models\n\n    base_url = (payload.base_url or \"\").strip()\n    binding = (payload.binding or \"\").strip().lower() or \"openai\"\n    if not base_url and binding != \"codebuddy\":\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail=\"base_url is required for this provider.\",\n        )\n\n    api_key = payload.api_key\n    if api_key == CATALOG_SECRET_MASK and payload.profile_id:\n        llm_service = get_model_catalog_service().load().get(\"services\", {}).get(\"llm\", {})\n        profile = next(\n            (\n                item\n                for item in llm_service.get(\"profiles\", [])\n                if item.get(\"id\") == payload.profile_id\n            ),\n            None,\n        )\n        api_key = profile.get(\"api_key\") if profile else None\n\n    try:","sourceCodeStart":1302,"sourceCodeEnd":1338,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/settings.py#L1302-L1338","documentation":"Error \"base_url is required for this provider.\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/settings.py:1320 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}