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
Raised by _transcribe_audio_to_text when AudioService raises QuotaExceededError — the Dify Hosted Model Provider trial quota for the tenant has been exhausted. Translated to ProviderQuotaExceededError (400, error_code 'provider_quota_exceeded').
Source
Thrown at api/controllers/console/app/audio.py:167
)
return dump_response(AudioTranscriptResponse, 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 HTTPException:
raise
except ValueError:
raise
except Exception as e:
logger.exception("Failed to transcribe audio to text")
raise InternalServerError() from e
@console_ns.route("/apps/<uuid:app_id>/audio-to-text")
class ChatMessageAudioApi(Resource):
@console_ns.doc("chat_message_audio_transcript")
@console_ns.doc(description="Transcript audio to text for chat messages")
@console_ns.doc(View on GitHub (pinned to ef8544b173)
Solutions
- Configure your own provider credentials under Settings -> Model Provider to stop relying on the hosted trial.
- Wait for the quota window to reset if applicable, or upgrade the plan.
- Reduce STT call volume (client-side compression, shorter clips).
- Monitor remaining quota to fail over before exhaustion.
Defensive patterns
Strategy: fallback
Try / catch
try { return await axios.post(`/apps/${id}/audio-to-text`, form); }
catch (e) {
if (e.code === 'provider_quota_exceeded') {
// switch request to user-configured provider credentials, then retry
}
} Prevention
- Configure your own provider credentials under Settings -> Model Provider.
- Monitor quota and fail over before exhaustion.
- Reduce STT volume via client-side compression.
When it happens
Trigger: Using Dify Hosted (trial) model provider for STT after the free quota has been consumed; recurrent STT calls in a high-traffic app depleting the trial allowance.
Common situations: New tenant past trial quota; shared tenant with heavy STT usage; trial quota not refreshed.
Related errors
- model_currently_not_support
- app_unavailable
- unsupported_audio_type
- provider_not_support_speech_to_text
- completion_request_error
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/388aae85ba4b4bb1.
Report an issue: GitHub.