langgenius/dify · error · ProviderModelCurrentlyNotSupportError

model_currently_not_support

model_currently_not_support

Error message

Dify Hosted OpenAI trial currently not support the GPT-4 model.

What it means

HTTP 400 ProviderModelCurrentlyNotSupportError, raised by the STT endpoint. The model layer raised ModelCurrentlyNotSupportError: the selected model is not available under the tenant's current plan/provider tier. The canned message references the GPT-4 trial restriction as the canonical example, but it fires for any model the provider refuses to serve on the current plan.

Solutions

  1. Switch the default speech2text model to one supported by the current plan (Settings -> Model Provider).
  2. Upgrade the plan or supply your own provider credentials that entitle the desired model.
  3. If a model was deprecated, select the provider's recommended replacement.
Defensive patterns

Strategy: validation

Validate before calling

// After fetching available models for the tenant, confirm the default STT model is entitlement-eligible.
if (!availableModels.some(m => m.model_type === 'speech2text' && m.status === 'active')) warnUser()

Try / catch

try { await postAudio(file) }
catch (e) { if (e.code === 400 && e.error_code === 'model_currently_not_support') promptSwitchModel() else throw e }

Prevention

When it happens

Trigger: POST /console/explore/installed-apps/{id}/audio-to-text where the default speech2text model resolves to one the tenant's plan does not entitlement (e.g., a premium Whisper variant on a trial tier, or a gated model the provider disabled for this account).

Common situations: Trial workspace pointing at a gated model; provider deprecated/disabled a model between calls; plan downgrade removed access to the configured model.

Related errors


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

Appendix: source

Thrown at api/controllers/console/explore/audio.py:87

        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__])
    @model_validate(TextToAudioPayload)
    def post(self, req_data: TextToAudioPayload, installed_app: InstalledApp):

View on GitHub (pinned to ef8544b173)