{"record":{"id":"4f6505274d8dacbf","repo":"langgenius/dify","slug":"provider-not-initialize-4f6505","errorCode":"provider_not_initialize","errorMessage":"No valid model provider credentials found. Please go to Settings -> Model Provider to complete your provider credentials.","messagePattern":"No valid model provider credentials found\\. Please go to Settings -> Model Provider to complete your provider credentials\\.","errorType":"error_code","errorClass":"ProviderNotInitializeError","httpStatus":400,"severity":"error","filePath":"api/controllers/console/explore/message.py","lineNumber":185,"sourceCode":"        streaming = args.response_mode == \"streaming\"\n\n        try:\n            response = AppGenerateService.generate_more_like_this(\n                session=session,\n                app_model=app_model,\n                user=current_user,\n                message_id=message_id_str,\n                invoke_from=InvokeFrom.EXPLORE,\n                streaming=streaming,\n            )\n            # response-contract:ignore compact_generate_response\n            return helper.compact_generate_response(response)\n        except MessageNotExistsError:\n            raise NotFound(\"Message Not Exists.\")\n        except MoreLikeThisDisabledError:\n            raise AppMoreLikeThisDisabledError()\n        except ProviderTokenNotInitError as ex:\n            raise ProviderNotInitializeError(ex.description)\n        except QuotaExceededError:\n            raise ProviderQuotaExceededError()\n        except ModelCurrentlyNotSupportError:\n            raise ProviderModelCurrentlyNotSupportError()\n        except InvokeError as e:\n            raise CompletionRequestError(e.description)\n        except ValueError as e:\n            raise e\n        except Exception:\n            logger.exception(\"internal server error.\")\n            raise InternalServerError()\n\n\n@console_ns.route(\n    \"/installed-apps/<uuid:installed_app_id>/messages/<uuid:message_id>/suggested-questions\",\n    endpoint=\"installed_app_suggested_question\",\n)\nclass MessageSuggestedQuestionApi(InstalledAppResource):","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/langgenius/dify/blob/ef8544b173fd6cd7a8e71df2cab576e52bebbfbc/api/controllers/console/explore/message.py#L167-L203","documentation":"HTTP 400 with error_code provider_not_initialize, raised when generate_more_like_this raises ProviderTokenNotInitError. The model provider backing the app has no valid credentials configured, so the LLM call cannot be made.","triggerScenarios":"GET more-like-this (or any generation path through this controller) on an app whose provider credentials are missing in Settings > Model Provider. The service raises ProviderTokenNotInitError and the controller maps it to ProviderNotInitializeError(400).","commonSituations":"Fresh install with no provider API key set; provider credentials revoked or expired; tenant admin removed the provider; the app references a provider the current tenant hasn't configured.","solutions":["Configure the model provider credentials under Settings -> Model Provider (API key for OpenAI/Anthropic/etc.).","Verify the app's configured provider matches one with valid credentials.","After saving credentials, retry the request.","If using a hosted provider, confirm the hosted credential grant is still active."],"exampleFix":"# before: no API key for the app's provider\n# Settings -> Model Provider -> add provider credentials\n\n# after: verify credentials are present before calling generation\nprovider = get_configured_provider(app.provider_name)\nif not provider.has_credentials:\n    raise ProviderNotInitializeError('configure provider first')\nresp = get(more_like_this_url(id, mid))","handlingStrategy":"validation","validationCode":"// Ensure provider credentials are configured before generation\nconst providers = await get('/console/workspaces/current/model-providers');\nconst ok = providers.some(p => p.provider === app.provider_name && p.credentials_valid);\nif (!ok) throw new ConfigError('Configure provider credentials first');","typeGuard":"function providerConfigured(app, providers) {\n  return providers.some(p => p.provider === app.provider_name && p.credentials_valid);\n}","tryCatchPattern":"try {\n  return await get(moreLikeThisUrl(id, mid));\n} catch (e) {\n  if (e.code === 'provider_not_initialize') {\n    routeTo('/settings/model-provider');\n    return null;\n  }\n  throw e;\n}","preventionTips":["Configure provider API keys under Settings -> Model Provider before invoking generation.","Verify the app's provider matches one with valid credentials.","Re-validate credentials after rotating keys."],"tags":["rest-api","explore","provider","credentials","more-like-this","configuration","dify"],"backgroundTag":null,"analyzedSha":"ef8544b173fd6cd7a8e71df2cab576e52bebbfbc","analyzedAt":"2026-08-12T05:15:17.394Z","schemaVersion":2},"datasetVersion":"2026-08-12T12:31:55.035Z"}