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

  1. Configure your own provider credentials under Settings -> Model Provider to stop relying on the hosted trial.
  2. Wait for the quota window to reset if applicable, or upgrade the plan.
  3. Reduce STT call volume (client-side compression, shorter clips).
  4. 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

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


AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12). Data as JSON: /api/errors/388aae85ba4b4bb1. Report an issue: GitHub.