{"record":{"id":"e0a37a975689d561","repo":"langgenius/dify","slug":"provider-quota-exceeded-e0a37a","errorCode":"provider_quota_exceeded","errorMessage":"Your quota for Dify Hosted Model Provider has been exhausted. Please go to Settings -> Model Provider to complete your own provider credentials.","messagePattern":"Your quota for Dify Hosted Model Provider has been exhausted\\. Please go to Settings -> Model Provider to complete your own provider credentials\\.","errorType":"error_code","errorClass":"ProviderQuotaExceededError","httpStatus":400,"severity":"error","filePath":"api/controllers/console/app/message.py","lineNumber":525,"sourceCode":"def _get_message_suggested_questions(*, session: Session, current_user: Account, app_model: App, message_id: UUID):\n    message_id_str = str(message_id)\n\n    try:\n        questions = MessageService.get_suggested_questions_after_answer(\n            app_model=app_model,\n            message_id=message_id_str,\n            user=current_user,\n            invoke_from=InvokeFrom.DEBUGGER,\n            session=session,\n        )\n    except MessageNotExistsError:\n        raise NotFound(\"Message not found\")\n    except ConversationNotExistsError:\n        raise NotFound(\"Conversation not found\")\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 SuggestedQuestionsAfterAnswerDisabledError:\n        raise AppSuggestedQuestionsAfterAnswerDisabledError()\n    except Exception:\n        logger.exception(\"internal server error.\")\n        raise InternalServerError()\n\n    return dump_response(SuggestedQuestionsResponse, {\"data\": questions})\n\n\ndef _get_message_detail(*, session: Session, app_model: App, message_id: UUID):\n    message_id_str = str(message_id)\n\n    message = session.scalar(\n        select(Message).where(Message.id == message_id_str, Message.app_id == app_model.id).limit(1)","sourceCodeStart":507,"sourceCodeEnd":543,"githubUrl":"https://github.com/langgenius/dify/blob/ef8544b173fd6cd7a8e71df2cab576e52bebbfbc/api/controllers/console/app/message.py#L507-L543","documentation":"HTTP 400 (code=provider_quota_exceeded) raised in _get_message_suggested_questions (message.py:525) when the LLM call for suggestions throws QuotaExceededError. The Dify hosted trial quota is exhausted, blocking the suggestions generation. Catch maps to ProviderQuotaExceededError.","triggerScenarios":"GET /console/api/apps/<app_id>/message/<message_id>/suggested-questions after the tenant's Dify Hosted Model Provider trial quota has been consumed.","commonSituations":"Frequent suggestion generation during trial; shared workspace; heavy eval runs against the hosted endpoint.","solutions":["Configure your own provider credentials in Settings -> Model Provider.","Switch the tenant default model to a provider with remaining quota.","Disable suggested-questions-after-answer in the app config to avoid the call until quota/credentials are fixed."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  await getSuggestedQuestions(appId, msgId);\n} catch (e) {\n  if (e.code === 'provider_quota_exceeded') {\n    // prompt to add own credentials; disable feature temporarily\n  } else throw e;\n}","preventionTips":["Prefer a self-configured provider over the hosted trial.","Surface hosted quota remaining near the suggestions feature.","Disable the feature automatically when quota is exhausted."],"tags":["provider","quota","suggested-questions","dify-hosted"],"backgroundTag":null,"analyzedSha":"ef8544b173fd6cd7a8e71df2cab576e52bebbfbc","analyzedAt":"2026-08-12T05:15:17.394Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}