langgenius/dify · error · ProviderQuotaExceededError
provider_quota_exceeded
provider_quota_exceeded
Error message
Your quota for Dify Hosted Model Provider has been exhausted. Please go to Settings -> Model Provider to complete your own provider credentials.
What it means
HTTP 400 ProviderQuotaExceededError, raised by the STT endpoint. The model layer raised QuotaExceededError: the Dify Hosted Model Provider usage quota for the tenant is exhausted. The controller surfaces a fixed message directing the user to configure their own provider credentials.
Source
Thrown at api/controllers/console/explore/audio.py:85
return response
except services.errors.app_model_config.AppModelConfigBrokenError:
logger.exception("App model config broken.")
raise AppUnavailableError()
except NoAudioUploadedServiceError:
raise NoAudioUploadedError()
except AudioTooLargeServiceError as e:
raise AudioTooLargeError(str(e))
except UnsupportedAudioTypeServiceError:
raise UnsupportedAudioTypeError()
except ProviderNotSupportSpeechToTextServiceError:
raise ProviderNotSupportSpeechToTextError()
except SpeechToTextDisabledServiceError:
raise SpeechToTextDisabledError()
except ProviderTokenNotInitError as ex:
raise ProviderNotInitializeError(ex.description)
except QuotaExceededError:
raise ProviderQuotaExceededError()
except ModelCurrentlyNotSupportError:
raise ProviderModelCurrentlyNotSupportError()
except InvokeError as e:
raise CompletionRequestError(e.description)
except ValueError as e:
raise e
except Exception as e:
logger.exception("internal server error.")
raise InternalServerError()
@console_ns.route(
"/installed-apps/<uuid:installed_app_id>/text-to-audio",
endpoint="installed_app_text",
)
class ChatTextApi(InstalledAppResource):
@console_ns.expect(console_ns.models[TextToAudioPayload.__name__])
@console_ns.response(200, "Success", console_ns.models[AudioBinaryResponse.__name__])View on GitHub (pinned to ef8544b173)
Solutions
- Upgrade the Dify Cloud plan or wait for the quota window to reset.
- Configure your own model provider credentials (Settings -> Model Provider) and set them as default so calls route through your account instead of the hosted pool.
- Audit which apps/installed-apps are consuming the most STT calls and throttle or disable unused ones.
Defensive patterns
Strategy: fallback
Try / catch
try { await postAudio(file) }
catch (e) {
if (e.code === 400 && e.error_code === 'provider_quota_exceeded') {
notifyUser('Hosted quota exhausted. Configure your own provider credentials.')
} else throw e
} Prevention
- Configure personal provider credentials as the default before the hosted quota runs out.
- Monitor hosted-provider quota usage and alert before exhaustion.
- Disable STT on non-critical installed-apps during quota crunch.
When it happens
Trigger: POST /console/explore/installed-apps/{id}/audio-to-text on Dify Cloud where the hosted trial quota for the tenant is fully consumed, and no personal provider credentials are configured as a fallback.
Common situations: Free-tier / trial Dify Cloud workspace that hit its monthly call cap; spike in transcription traffic consuming the remaining quota; org migrating off hosted trial but not yet configured own keys.
Related errors
- provider_quota_exceeded
- provider_not_support_speech_to_text
- speech_to_text_disabled
- provider_not_initialize
- model_currently_not_support
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/0420acd21f51cd30.
Report an issue: GitHub.