{"record":{"id":"a4a3dfbb8936052b","repo":"BerriAI/litellm","slug":"unsupported-provider-config-transcription-provid","errorCode":null,"errorMessage":"Unsupported provider config: {transcription_provider_config} for model: {model}","messagePattern":"Unsupported provider config: (.+?) for model: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/litellm_core_utils/get_supported_openai_params.py","lineNumber":123,"sourceCode":"    elif custom_llm_provider == \"vllm\":\n        return litellm.VLLMConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"deepseek\":\n        return litellm.DeepSeekChatConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"tencent\":\n        return litellm.TencentChatConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"cohere_chat\" or custom_llm_provider == \"cohere\":\n        return litellm.CohereChatConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"maritalk\":\n        return litellm.MaritalkConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"openai\":\n        if request_type == \"transcription\":\n            transcription_provider_config = litellm.ProviderConfigManager.get_provider_audio_transcription_config(\n                model=model, provider=LlmProviders.OPENAI\n            )\n            if isinstance(transcription_provider_config, litellm.OpenAIGPTAudioTranscriptionConfig):\n                return transcription_provider_config.get_supported_openai_params(model=model)\n            else:\n                raise ValueError(f\"Unsupported provider config: {transcription_provider_config} for model: {model}\")\n        return litellm.OpenAIConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"sap\":\n        if request_type == \"chat_completion\":\n            return litellm.GenAIHubOrchestrationConfig().get_supported_openai_params(model=model)\n        elif request_type == \"embeddings\":\n            return litellm.GenAIHubEmbeddingConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"azure\":\n        _azure_detection_model: Final = base_model or model\n        if litellm.AzureOpenAIO1Config().is_o_series_model(model=_azure_detection_model):\n            return litellm.AzureOpenAIO1Config().get_supported_openai_params(model=_azure_detection_model)\n        elif litellm.AzureOpenAIGPT5Config.is_model_gpt_5_model(model=_azure_detection_model):\n            return litellm.AzureOpenAIGPT5Config().get_supported_openai_params(model=_azure_detection_model)\n        else:\n            return litellm.AzureOpenAIConfig().get_supported_openai_params(model=_azure_detection_model)\n    elif custom_llm_provider == \"openrouter\":\n        return litellm.OpenrouterConfig().get_supported_openai_params(model=model)\n    elif custom_llm_provider == \"vercel_ai_gateway\":\n        return litellm.VercelAIGatewayConfig().get_supported_openai_params(model=model)","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/litellm_core_utils/get_supported_openai_params.py#L105-L141","documentation":"Thrown while resolving supported OpenAI params for a transcription request (custom_llm_provider='openai', request_type='transcription'). ProviderConfigManager.get_provider_audio_transcription_config() is expected to return an OpenAIGPTAudioTranscriptionConfig instance; if the registry returns any other config class (or None), LiteLLM treats the provider/model combination as unsupported for transcription param mapping and raises this ValueError. It almost always indicates a mismatch between the installed LiteLLM version's provider-config registry and the code path resolving it.","triggerScenarios":"Calling litellm.transcription(...) (or router/proxy /v1/audio/transcriptions) with a model routed to provider 'openai', where get_supported_openai_params(model=..., request_type='transcription') runs and the audio-transcription config registry returns a class other than OpenAIGPTAudioTranscriptionConfig (e.g. after a partial upgrade, a forked registry, or a new transcription config class that this branch was not updated to accept).","commonSituations":"Upgrading LiteLLM to a version that added new audio transcription provider configs while stale compiled/cached modules remain; using a custom/forked model_prices or provider config registry; calling transcription with GPT-4o-transcribe style models on an older LiteLLM that maps them to the wrong config class.","solutions":["Upgrade (or cleanly reinstall) litellm so the provider-config registry and this branch agree: pip install -U --force-reinstall litellm","Clear stale bytecode/caches (__pycache__, PYTHONPYCACHEPREFIX) and restart the process if the error appears right after an upgrade","Pin to a known-good version (e.g. pip install 'litellm==<version where transcription last worked>') until the mismatch is fixed","If you maintain a fork, update the isinstance check to accept the config class your registry returns, or ensure get_provider_audio_transcription_config returns OpenAIGPTAudioTranscriptionConfig for provider=openai"],"exampleFix":"# before\nlitellm.transcription(model='gpt-4o-transcribe', file=audio_file)  # ValueError from get_supported_openai_params\n\n# after (upgrade so registry matches)\npip install -U litellm\nlitellm.transcription(model='whisper-1', file=audio_file)","handlingStrategy":"fallback","validationCode":"import litellm\nfrom litellm.types.utils import LlmProviders\n\ncfg = litellm.ProviderConfigManager.get_provider_audio_transcription_config(\n    model=model, provider=LlmProviders.OPENAI\n)\nif not isinstance(cfg, litellm.OpenAIGPTAudioTranscriptionConfig):\n    # registry/version mismatch: pin/upgrade litellm or skip param mapping\n    raise RuntimeError('litellm provider-config registry mismatch; upgrade litellm')","typeGuard":null,"tryCatchPattern":"try:\n    litellm.transcription(model=model, file=audio_file)\nexcept ValueError as e:\n    if 'Unsupported provider config' in str(e):\n        # fall back to a known transcription model\n        litellm.transcription(model='whisper-1', file=audio_file)\n    else:\n        raise","preventionTips":["Pin litellm to an exact version in requirements to keep the provider-config registry stable","Run a smoke transcription call in CI after any litellm upgrade","Avoid mixing cached .pyc/old installs across upgrades; reinstall cleanly"],"tags":["litellm","transcription","openai","provider-config","version-mismatch"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}