{"record":{"id":"388aae85ba4b4bb1","repo":"langgenius/dify","slug":"provider-quota-exceeded","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/audio.py","lineNumber":167,"sourceCode":"            )\n        return dump_response(AudioTranscriptResponse, response)\n    except services.errors.app_model_config.AppModelConfigBrokenError:\n        logger.exception(\"App model config broken.\")\n        raise AppUnavailableError()\n    except NoAudioUploadedServiceError:\n        raise NoAudioUploadedError()\n    except AudioTooLargeServiceError as e:\n        raise AudioTooLargeError(str(e))\n    except UnsupportedAudioTypeServiceError:\n        raise UnsupportedAudioTypeError()\n    except ProviderNotSupportSpeechToTextServiceError:\n        raise ProviderNotSupportSpeechToTextError()\n    except SpeechToTextDisabledServiceError:\n        raise SpeechToTextDisabledError()\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 HTTPException:\n        raise\n    except ValueError:\n        raise\n    except Exception as e:\n        logger.exception(\"Failed to transcribe audio to text\")\n        raise InternalServerError() from e\n\n\n@console_ns.route(\"/apps/<uuid:app_id>/audio-to-text\")\nclass ChatMessageAudioApi(Resource):\n    @console_ns.doc(\"chat_message_audio_transcript\")\n    @console_ns.doc(description=\"Transcript audio to text for chat messages\")\n    @console_ns.doc(","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/langgenius/dify/blob/ef8544b173fd6cd7a8e71df2cab576e52bebbfbc/api/controllers/console/app/audio.py#L149-L185","documentation":"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').","triggerScenarios":"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.","commonSituations":"New tenant past trial quota; shared tenant with heavy STT usage; trial quota not refreshed.","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."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { return await axios.post(`/apps/${id}/audio-to-text`, form); }\ncatch (e) {\n  if (e.code === 'provider_quota_exceeded') {\n    // switch request to user-configured provider credentials, then retry\n  }\n}","preventionTips":["Configure your own provider credentials under Settings -> Model Provider.","Monitor quota and fail over before exhaustion.","Reduce STT volume via client-side compression."],"tags":["audio","asr","quota","model-provider","billing","console-api"],"backgroundTag":null,"analyzedSha":"ef8544b173fd6cd7a8e71df2cab576e52bebbfbc","analyzedAt":"2026-08-12T05:15:17.394Z","schemaVersion":2},"datasetVersion":"2026-08-12T12:31:55.035Z"}