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
- Upgrade litellm to the latest patch release (config-class mapping bugs here are fixed quickly).
- If you register custom audio transcription configs, make the one bound to LlmProviders.OPENAI a subclass/instance of OpenAIGPTAudioTranscriptionConfig.
- Clear stale installs (pip cache, duplicated litellm dirs on sys.path) so the manager and the isinstance check come from the same version.
- 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
- Pin the litellm version in production and test upgrades in CI.
- Keep custom ProviderConfigManager registrations scoped to their own provider, never the openai slot.
- Watch litellm release notes for provider-config manager changes.
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
- api_base must be provided for Hosted VLLM rerank
- image edit is not supported for
- image generation config is not supported for
- image variation provider has no known model info config -…
- Invalid response from transcription provider, expected…
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)