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.

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)

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.