BerriAI/litellm · error · ValueError

Unsupported provider config

Error message

Unsupported provider config: {transcription_provider_config} for model: {model}

What it means

Raised in get_supported_openai_params() when custom_llm_provider=='openai' and request_type=='transcription': ProviderConfigManager.get_provider_audio_transcription_config() returned a config object that is not an instance of litellm.OpenAIGPTAudioTranscriptionConfig. LiteLLM asks the config for the supported OpenAI params for the request type, and any other class means the audio-transcription config layer is inconsistent — custom registration or a version regression, not something the model name alone fixes.

Solutions

  1. Upgrade litellm to the latest patch release (config-class mapping bugs here are fixed quickly).
  2. If you register custom audio transcription configs, make the one bound to LlmProviders.OPENAI a subclass/instance of OpenAIGPTAudioTranscriptionConfig.
  3. Clear stale installs (pip cache, duplicated litellm dirs on sys.path) so the manager and the isinstance check come from the same version.
  4. Report upstream with the litellm version, model, and any ProviderConfigManager customizations.

Example fix

# before
params = litellm.get_supported_openai_params(model='whisper-1', custom_llm_provider='openai', request_type='transcription')
# ValueError: Unsupported provider config: <OtherConfig ...>

# after: keep the openai slot on the expected config class
cfg = litellm.ProviderConfigManager.get_provider_audio_transcription_config(model='whisper-1', provider=LlmProviders.OPENAI)
assert isinstance(cfg, litellm.OpenAIGPTAudioTranscriptionConfig), type(cfg)
params = litellm.get_supported_openai_params(model='whisper-1', custom_llm_provider='openai', request_type='transcription')
Defensive patterns

Strategy: type-guard

Validate before calling

from litellm.types.llms.openai import LlmProviders

cfg = litellm.ProviderConfigManager.get_provider_audio_transcription_config(model='whisper-1', provider=LlmProviders.OPENAI)
if not isinstance(cfg, litellm.OpenAIGPTAudioTranscriptionConfig):
    raise RuntimeError(f'openai transcription config overridden by {type(cfg).__name__}; remove custom registration or upgrade litellm')
params = litellm.get_supported_openai_params(model='whisper-1', custom_llm_provider='openai', request_type='transcription')

Type guard

def openai_transcription_config_ok(model: str) -> bool:
    cfg = litellm.ProviderConfigManager.get_provider_audio_transcription_config(model=model, provider=LlmProviders.OPENAI)
    return isinstance(cfg, litellm.OpenAIGPTAudioTranscriptionConfig)

Try / catch

try:
    params = litellm.get_supported_openai_params(model=model, custom_llm_provider='openai', request_type='transcription')
except ValueError as e:
    if 'Unsupported provider config' in str(e):
        # a custom provider config replaced the openai transcription config; fix registration or pin litellm version
        raise
    raise

Prevention

When it happens

Trigger: litellm.transcription(model='whisper-1', ...) or calling get_supported_openai_params(model, custom_llm_provider='openai', request_type='transcription') after a custom audio-transcription config was registered with ProviderConfigManager, or after mixing litellm versions where the manager returns a different config class for openai transcription.

Common situations: Registering custom provider configs (e.g. for self-hosted whisper behind an OpenAI-compatible facade) that override the openai transcription slot; upgrading litellm with stale cached modules; forks that add new audio transcription config classes without updating this isinstance chain.

Related errors


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/a4a3dfbb8936052b. Report an issue: GitHub.

Appendix: source

Thrown at litellm/litellm_core_utils/get_supported_openai_params.py:123

    elif custom_llm_provider == "vllm":
        return litellm.VLLMConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "deepseek":
        return litellm.DeepSeekChatConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "tencent":
        return litellm.TencentChatConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "cohere_chat" or custom_llm_provider == "cohere":
        return litellm.CohereChatConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "maritalk":
        return litellm.MaritalkConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "openai":
        if request_type == "transcription":
            transcription_provider_config = litellm.ProviderConfigManager.get_provider_audio_transcription_config(
                model=model, provider=LlmProviders.OPENAI
            )
            if isinstance(transcription_provider_config, litellm.OpenAIGPTAudioTranscriptionConfig):
                return transcription_provider_config.get_supported_openai_params(model=model)
            else:
                raise ValueError(f"Unsupported provider config: {transcription_provider_config} for model: {model}")
        return litellm.OpenAIConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "sap":
        if request_type == "chat_completion":
            return litellm.GenAIHubOrchestrationConfig().get_supported_openai_params(model=model)
        elif request_type == "embeddings":
            return litellm.GenAIHubEmbeddingConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "azure":
        _azure_detection_model: Final = base_model or model
        if litellm.AzureOpenAIO1Config().is_o_series_model(model=_azure_detection_model):
            return litellm.AzureOpenAIO1Config().get_supported_openai_params(model=_azure_detection_model)
        elif litellm.AzureOpenAIGPT5Config.is_model_gpt_5_model(model=_azure_detection_model):
            return litellm.AzureOpenAIGPT5Config().get_supported_openai_params(model=_azure_detection_model)
        else:
            return litellm.AzureOpenAIConfig().get_supported_openai_params(model=_azure_detection_model)
    elif custom_llm_provider == "openrouter":
        return litellm.OpenrouterConfig().get_supported_openai_params(model=model)
    elif custom_llm_provider == "vercel_ai_gateway":
        return litellm.VercelAIGatewayConfig().get_supported_openai_params(model=model)

View on GitHub (pinned to 77b7c6c40c)