{"record":{"id":"3d2a9b840bfc48d7","repo":"BerriAI/litellm","slug":"unsupported-parameter-for-volcengine-param","errorCode":null,"errorMessage":"Unsupported parameter for Volcengine: {param}","messagePattern":"Unsupported parameter for Volcengine: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/llms/volcengine/embedding/transformation.py","lineNumber":119,"sourceCode":"            Updated optional_params dict\n        \"\"\"\n        for param, value in non_default_params.items():\n            if param == \"encoding_format\":\n                # Volcengine supports: float, base64, null\n                if value in [\"float\", \"base64\", None]:\n                    optional_params[\"encoding_format\"] = value\n                else:\n                    if not drop_params:\n                        raise ValueError(\n                            f\"Unsupported encoding_format: {value}. Volcengine supports: float, base64, null\"\n                        )\n            elif param == \"user\":\n                # Keep user parameter as-is\n                optional_params[\"user\"] = value\n            elif param in self.get_supported_openai_params(model):\n                optional_params[param] = value\n            elif not drop_params:\n                raise ValueError(f\"Unsupported parameter for Volcengine: {param}\")\n\n        return optional_params\n\n    def transform_embedding_request(\n        self,\n        model: str,\n        input: AllEmbeddingInputValues,\n        optional_params: dict,\n        headers: dict,\n    ) -> dict:\n        \"\"\"Transform embedding request to Volcengine format\"\"\"\n        # Prepare request data (only the JSON body, not the full request)\n        data: Final = {\n            \"model\": model,\n            \"input\": input if isinstance(input, list) else [input],\n        }\n\n        # Add optional parameters from optional_params","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/volcengine/embedding/transformation.py#L101-L137","documentation":"Volcengine embeddings support only a small set of OpenAI params (encoding_format, user, extra_headers - see get_supported_openai_params). Any other non-default OpenAI parameter passed to litellm.embedding with a volcengine model raises ValueError listing the offending param, unless drop_params is enabled.","triggerScenarios":"litellm.embedding(model=\"volcengine/...\", input=[...], dimensions=256); passing timeout-as-body param, chunk_size, or other OpenAI embedding params that Volcengine's /api/v3/embeddings endpoint does not implement.","commonSituations":"Unified embedding pipelines that send the same kwargs to OpenAI, Azure, and Volcengine; teams adding dimensions/truncation params for text-embedding-3 models and forgetting they are OpenAI-specific.","solutions":["Remove the parameter named in the message from the volcengine call.","Set litellm.drop_params = True or litellm.modify_params consistent with your policy so unsupported params are dropped silently.","Inspect the allowlist before calling: from litellm.llms.volcengine.embedding.transformation import VolcEngineEmbeddingConfig; VolcEngineEmbeddingConfig().get_supported_openai_params(model).","Keep per-provider kwargs dicts instead of one shared kwargs object."],"exampleFix":"# before\nresp = litellm.embedding(\n    model=\"volcengine/ep-20240903144444\",\n    input=[\"hello\"],\n    dimensions=256,  # ValueError: Unsupported parameter for Volcengine: dimensions\n)\n\n# after\nkwargs = {\"input\": [\"hello\"]}\nif model.startswith(\"openai/\"):\n    kwargs[\"dimensions\"] = 256\nresp = litellm.embedding(model=model, **kwargs)","handlingStrategy":"validation","validationCode":"from litellm.llms.volcengine.embedding.transformation import VolcEngineEmbeddingConfig\n\nALLOWED = set(VolcEngineEmbeddingConfig().get_supported_openai_params(\"\")) | {\"model\", \"input\"}\nclean = {k: v for k, v in kwargs.items() if k in ALLOWED}\nresp = litellm.embedding(model=\"volcengine/ep-...\", **clean)","typeGuard":"const isVolcengineSafeParam = (k: string): boolean =>\n  [\"encoding_format\", \"user\", \"extra_headers\"].includes(k);","tryCatchPattern":"try:\n    resp = litellm.embedding(model=\"volcengine/ep-...\", input=inputs, **kwargs)\nexcept ValueError as e:\n    if \"Unsupported parameter for Volcengine\" in str(e):\n        bad = str(e).rsplit(\":\", 1)[-1].strip()\n        kwargs.pop(bad, None)\n        resp = litellm.embedding(model=\"volcengine/ep-...\", input=inputs, **kwargs)\n    else:\n        raise","preventionTips":["Do not share one kwargs dict across providers; build per-provider call signatures.","Check get_supported_openai_params() for exotic providers before sending OpenAI extras.","Turn on drop_params in environments where strictness matters less than uptime."],"tags":["volcengine","embedding","unsupported-parameter","parameter-validation","litellm"],"backgroundTag":"unsupported-request-parameter","analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}