{"record":{"id":"a2dddbbb0631b550","repo":"BerriAI/litellm","slug":"ingest-options-must-contain-vector-store-configu","errorCode":null,"errorMessage":"ingest_options must contain 'vector_store' configuration","messagePattern":"ingest_options must contain 'vector_store' configuration","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/rag_endpoints/endpoints.py","lineNumber":361,"sourceCode":"            if filename and content_b64:\n                try:\n                    file_content = base64.b64decode(content_b64)\n                    file_data = (filename, file_content, content_type)\n                except Exception as e:\n                    raise HTTPException(\n                        status_code=400,\n                        detail={\"error\": f\"Invalid base64 content: {e}\"},\n                    )\n\n    # Validate\n    if file_data is None and file_url is None and file_id is None:\n        raise HTTPException(\n            status_code=400,\n            detail={\"error\": \"Must provide file, file_url, or file_id\"},\n        )\n\n    if \"vector_store\" not in ingest_options:\n        raise HTTPException(\n            status_code=400,\n            detail={\"error\": \"ingest_options must contain 'vector_store' configuration\"},\n        )\n\n    # Credential fields must come from server configuration, not user requests.\n    # Accepting user-supplied credentials (e.g. vertex_credentials with\n    # type=external_account + credential_source.file=/proc/1/environ) allows\n    # any authenticated user to exfiltrate host secrets via SSRF through\n    # google-auth's identity_pool credential refresh.\n    # api_base is also blocked: a user-controlled base URL causes the server\n    # to send its configured provider credentials to an attacker endpoint.\n    _BLOCKED_VECTOR_STORE_CREDENTIAL_PARAMS: Final = {\n        \"vertex_credentials\",\n        \"vertex_ai_credentials\",\n        \"aws_access_key_id\",\n        \"aws_secret_access_key\",\n        \"aws_session_token\",\n        \"aws_web_identity_token\",","sourceCodeStart":343,"sourceCodeEnd":379,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/rag_endpoints/endpoints.py#L343-L379","documentation":"RAG ingest validation: ingest_options has no usable 'vector_store' configuration (missing or not a dict), so the handler cannot create or target a vector store for ingestion; rejected with 400.","triggerScenarios":"Thrown at litellm/proxy/rag_endpoints/endpoints.py:361 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include a vector_store object inside ingest_options with the target vector store configuration or ID."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}