{"openapi":"3.1.0","info":{"title":"LiteLLM API","description":"Enterprise Edition \n\nProxy Server to call 100+ LLMs in the OpenAI format. [**Customize Swagger Docs**](https://docs.litellm.ai/docs/proxy/enterprise#swagger-docs---custom-routes--branding)\n\n👉 [```LiteLLM Admin Panel on /ui```](/ui). Create, Edit Keys with SSO. Having issues? Try [```Fallback Login```](/fallback/login)\n\n💸 [```LiteLLM Model Cost Map```](https://models.litellm.ai/).\n\n🔎 [```LiteLLM Model Hub```](/ui/model_hub_table). See available models on the proxy. [**Docs**](https://docs.litellm.ai/docs/proxy/ai_hub)\n\n💬 [```LiteLLM Chat UI```](/ui/chat). ChatGPT-like interface for your users to chat with AI models and MCP tools.","version":"1.99.0"},"paths":{"/models":{"get":{"tags":["model management"],"summary":"Model List","description":"Use `/model/info` - to get detailed model information, example - pricing, mode, etc.\n\nThis is just for compatibility with openai projects like aider.\n\nQuery Parameters:\n- include_metadata: Include additional metadata in the response with fallback information\n- fallback_type: Type of fallbacks to include (\"general\", \"context_window\", \"content_policy\")\n                Defaults to \"general\" when include_metadata=true\n- scope: Optional scope parameter. Currently only accepts \"expand\".\n         When scope=expand is passed, proxy admins, team admins, and org admins\n         will receive all proxy models as if they are a proxy admin.\n- healthy_only: When true, hide models whose backing deployments are all marked\n                unhealthy by background health checks. Requires\n                `background_health_checks: true` in general_settings; without\n                health state the listing is returned unfiltered (fail open).\n                Models expanded from wildcard routes (e.g. `openai/*`) are not\n                filtered, and nothing is hidden when `allowed_fails_policy` is\n                configured (cooldown remains the sole exclusion mechanism).\n                Hiding is presentation-only: a hidden model can still be\n                called directly.","operationId":"model_list_models_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"return_wildcard_routes","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Return Wildcard Routes"}},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"name":"include_model_access_groups","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Include Model Access Groups"}},{"name":"only_model_access_groups","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Only Model Access Groups"}},{"name":"include_metadata","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Include Metadata"}},{"name":"fallback_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Type"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},{"name":"healthy_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Healthy Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["model management"],"summary":"Model List","description":"Use `/model/info` - to get detailed model information, example - pricing, mode, etc.\n\nThis is just for compatibility with openai projects like aider.\n\nQuery Parameters:\n- include_metadata: Include additional metadata in the response with fallback information\n- fallback_type: Type of fallbacks to include (\"general\", \"context_window\", \"content_policy\")\n                Defaults to \"general\" when include_metadata=true\n- scope: Optional scope parameter. Currently only accepts \"expand\".\n         When scope=expand is passed, proxy admins, team admins, and org admins\n         will receive all proxy models as if they are a proxy admin.\n- healthy_only: When true, hide models whose backing deployments are all marked\n                unhealthy by background health checks. Requires\n                `background_health_checks: true` in general_settings; without\n                health state the listing is returned unfiltered (fail open).\n                Models expanded from wildcard routes (e.g. `openai/*`) are not\n                filtered, and nothing is hidden when `allowed_fails_policy` is\n                configured (cooldown remains the sole exclusion mechanism).\n                Hiding is presentation-only: a hidden model can still be\n                called directly.","operationId":"model_list_v1_models_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"return_wildcard_routes","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Return Wildcard Routes"}},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"name":"include_model_access_groups","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Include Model Access Groups"}},{"name":"only_model_access_groups","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Only Model Access Groups"}},{"name":"include_metadata","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Include Metadata"}},{"name":"fallback_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Type"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}},{"name":"healthy_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Healthy Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/models/{model_id}":{"get":{"tags":["model management"],"summary":"Model Info","description":"Retrieve information about a specific model accessible to your API key.\n\nReturns model details only if the model is available to your API key/team.\nReturns 404 if the model doesn't exist or is not accessible.\n\nFollows OpenAI API specification for individual model retrieval.\nhttps://platform.openai.com/docs/api-reference/models/retrieve\n\nQuery parameters mirror `/v1/models` so the same caller context (team\nscoping, health filtering, paused deployments) drives both endpoints; the\nlisting's public id must resolve to the same internal deployment here.","operationId":"model_info_models__model_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"name":"healthy_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Healthy Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models/{model_id}":{"get":{"tags":["model management"],"summary":"Model Info","description":"Retrieve information about a specific model accessible to your API key.\n\nReturns model details only if the model is available to your API key/team.\nReturns 404 if the model doesn't exist or is not accessible.\n\nFollows OpenAI API specification for individual model retrieval.\nhttps://platform.openai.com/docs/api-reference/models/retrieve\n\nQuery parameters mirror `/v1/models` so the same caller context (team\nscoping, health filtering, paused deployments) drives both endpoints; the\nlisting's public id must resolve to the same internal deployment here.","operationId":"model_info_v1_models__model_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"name":"healthy_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Healthy Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/deployments/{model}/chat/completions":{"post":{"tags":["chat/completions"],"summary":"Chat Completion","description":"Follows the exact same API spec as `OpenAI's Chat API https://platform.openai.com/docs/api-reference/chat`\n\n```bash\ncurl -X POST http://localhost:4000/v1/chat/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-4o\",\n    \"messages\": [\n        {\n            \"role\": \"user\",\n            \"content\": \"Hello!\"\n        }\n    ]\n}'\n```","operationId":"chat_completion_openai_deployments__model__chat_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"401":{"description":"AuthenticationError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"NotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"ContentPolicyViolationError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"UnprocessableEntityError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"408":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"PermissionDeniedError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"\nUnified rate-limit error.\n\nEvery rate-limit condition surfaced by litellm — whether it originated from\nan upstream LLM provider, a vendor batch endpoint, or one of litellm's own\nproxy-side limiters (parallel-requests, dynamic-rate, batch-rate, budget,\nmax-iterations, etc.) — is raised as an instance of this class.\n\nThe :attr:`category` attribute lets callers distinguish the source. See\n:class:`RateLimitErrorCategory` for the available values.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"JSONSchemaValidationError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"APIConnectionError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","messages"],"properties":{"model":{"title":"Model","type":"string"},"messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Messages","type":"array","example":[{"role":"user","content":"Hello, how are you?"}]},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Penalty"},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"title":"Logit Bias"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Top Logprobs"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Tokens"},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"N"},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Presence Penalty"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Format"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Seed"},"service_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Service Tier"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Stop"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Stream Options"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Top P"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Parallel Tool Calls"},"function_call":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Function Call"},"functions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Functions"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Stream"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Metadata"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Guardrails"},"caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Caching"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Num Retries"},"context_window_fallback_dict":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Context Window Fallback Dict"},"fallbacks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Fallbacks"}}}}}}}},"/engines/{model}/chat/completions":{"post":{"tags":["chat/completions"],"summary":"Chat Completion","description":"Follows the exact same API spec as `OpenAI's Chat API https://platform.openai.com/docs/api-reference/chat`\n\n```bash\ncurl -X POST http://localhost:4000/v1/chat/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-4o\",\n    \"messages\": [\n        {\n            \"role\": \"user\",\n            \"content\": \"Hello!\"\n        }\n    ]\n}'\n```","operationId":"chat_completion_engines__model__chat_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","messages"],"properties":{"model":{"title":"Model","type":"string"},"messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Messages","type":"array","example":[{"role":"user","content":"Hello, how are you?"}]},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Penalty"},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"title":"Logit Bias"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Top Logprobs"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Tokens"},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"N"},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Presence Penalty"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Format"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Seed"},"service_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Service Tier"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Stop"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Stream Options"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Top P"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Parallel Tool Calls"},"function_call":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Function Call"},"functions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Functions"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Stream"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Metadata"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Guardrails"},"caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Caching"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Num Retries"},"context_window_fallback_dict":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Context Window Fallback Dict"},"fallbacks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Fallbacks"}}}}}}}},"/chat/completions":{"post":{"tags":["chat/completions"],"summary":"Chat Completion","description":"Follows the exact same API spec as `OpenAI's Chat API https://platform.openai.com/docs/api-reference/chat`\n\n```bash\ncurl -X POST http://localhost:4000/v1/chat/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-4o\",\n    \"messages\": [\n        {\n            \"role\": \"user\",\n            \"content\": \"Hello!\"\n        }\n    ]\n}'\n```","operationId":"chat_completion_chat_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","messages"],"properties":{"model":{"title":"Model","type":"string"},"messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Messages","type":"array","example":[{"role":"user","content":"Hello, how are you?"}]},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Penalty"},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"title":"Logit Bias"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Top Logprobs"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Tokens"},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"N"},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Presence Penalty"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Format"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Seed"},"service_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Service Tier"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Stop"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Stream Options"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Top P"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Parallel Tool Calls"},"function_call":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Function Call"},"functions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Functions"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Stream"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Metadata"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Guardrails"},"caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Caching"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Num Retries"},"context_window_fallback_dict":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Context Window Fallback Dict"},"fallbacks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Fallbacks"}}}}}}}},"/v1/chat/completions":{"post":{"tags":["chat/completions"],"summary":"Chat Completion","description":"Follows the exact same API spec as `OpenAI's Chat API https://platform.openai.com/docs/api-reference/chat`\n\n```bash\ncurl -X POST http://localhost:4000/v1/chat/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-4o\",\n    \"messages\": [\n        {\n            \"role\": \"user\",\n            \"content\": \"Hello!\"\n        }\n    ]\n}'\n```","operationId":"chat_completion_v1_chat_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","messages"],"properties":{"model":{"title":"Model","type":"string"},"messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Messages","type":"array","example":[{"role":"user","content":"Hello, how are you?"}]},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Penalty"},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"title":"Logit Bias"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Top Logprobs"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Tokens"},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"N"},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Presence Penalty"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Format"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Seed"},"service_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Service Tier"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Stop"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Stream Options"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Top P"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Parallel Tool Calls"},"function_call":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Function Call"},"functions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Functions"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Stream"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Metadata"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Guardrails"},"caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Caching"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Num Retries"},"context_window_fallback_dict":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Context Window Fallback Dict"},"fallbacks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Fallbacks"}}}}}}}},"/openai/deployments/{model}/completions":{"post":{"tags":["completions"],"summary":"Completion","description":"Follows the exact same API spec as `OpenAI's Completions API https://platform.openai.com/docs/api-reference/completions`\n\n```bash\ncurl -X POST http://localhost:4000/v1/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-3.5-turbo-instruct\",\n    \"prompt\": \"Once upon a time\",\n    \"max_tokens\": 50,\n    \"temperature\": 0.7\n}'\n```","operationId":"completion_openai_deployments__model__completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engines/{model}/completions":{"post":{"tags":["completions"],"summary":"Completion","description":"Follows the exact same API spec as `OpenAI's Completions API https://platform.openai.com/docs/api-reference/completions`\n\n```bash\ncurl -X POST http://localhost:4000/v1/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-3.5-turbo-instruct\",\n    \"prompt\": \"Once upon a time\",\n    \"max_tokens\": 50,\n    \"temperature\": 0.7\n}'\n```","operationId":"completion_engines__model__completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/completions":{"post":{"tags":["completions"],"summary":"Completion","description":"Follows the exact same API spec as `OpenAI's Completions API https://platform.openai.com/docs/api-reference/completions`\n\n```bash\ncurl -X POST http://localhost:4000/v1/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-3.5-turbo-instruct\",\n    \"prompt\": \"Once upon a time\",\n    \"max_tokens\": 50,\n    \"temperature\": 0.7\n}'\n```","operationId":"completion_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/completions":{"post":{"tags":["completions"],"summary":"Completion","description":"Follows the exact same API spec as `OpenAI's Completions API https://platform.openai.com/docs/api-reference/completions`\n\n```bash\ncurl -X POST http://localhost:4000/v1/completions \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"gpt-3.5-turbo-instruct\",\n    \"prompt\": \"Once upon a time\",\n    \"max_tokens\": 50,\n    \"temperature\": 0.7\n}'\n```","operationId":"completion_v1_completions_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/deployments/{model}/embeddings":{"post":{"tags":["embeddings"],"summary":"Embeddings","description":"Follows the exact same API spec as `OpenAI's Embeddings API https://platform.openai.com/docs/api-reference/embeddings`\n\n```bash\ncurl -X POST http://localhost:4000/v1/embeddings \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"text-embedding-ada-002\",\n    \"input\": \"The quick brown fox jumps over the lazy dog\"\n}'\n```","operationId":"embeddings_openai_deployments__model__embeddings_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model"],"properties":{"model":{"title":"Model","type":"string"},"input":{"default":[],"items":{"type":"string"},"title":"Input","type":"array"},"timeout":{"default":600,"title":"Timeout","type":"integer"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Version"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"},"api_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Type"},"caching":{"default":false,"title":"Caching","type":"boolean"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Custom Llm Provider"},"litellm_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litellm Call Id"},"litellm_logging_obj":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Litellm Logging Obj"},"logger_fn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Logger Fn"}}}}}}}},"/engines/{model}/embeddings":{"post":{"tags":["embeddings"],"summary":"Embeddings","description":"Follows the exact same API spec as `OpenAI's Embeddings API https://platform.openai.com/docs/api-reference/embeddings`\n\n```bash\ncurl -X POST http://localhost:4000/v1/embeddings \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"text-embedding-ada-002\",\n    \"input\": \"The quick brown fox jumps over the lazy dog\"\n}'\n```","operationId":"embeddings_engines__model__embeddings_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model"],"properties":{"model":{"title":"Model","type":"string"},"input":{"default":[],"items":{"type":"string"},"title":"Input","type":"array"},"timeout":{"default":600,"title":"Timeout","type":"integer"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Version"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"},"api_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Type"},"caching":{"default":false,"title":"Caching","type":"boolean"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Custom Llm Provider"},"litellm_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litellm Call Id"},"litellm_logging_obj":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Litellm Logging Obj"},"logger_fn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Logger Fn"}}}}}}}},"/embeddings":{"post":{"tags":["embeddings"],"summary":"Embeddings","description":"Follows the exact same API spec as `OpenAI's Embeddings API https://platform.openai.com/docs/api-reference/embeddings`\n\n```bash\ncurl -X POST http://localhost:4000/v1/embeddings \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"text-embedding-ada-002\",\n    \"input\": \"The quick brown fox jumps over the lazy dog\"\n}'\n```","operationId":"embeddings_embeddings_post","security":[{"APIKeyHeader":[]}],"parameters":[],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model"],"properties":{"model":{"title":"Model","type":"string"},"input":{"default":[],"items":{"type":"string"},"title":"Input","type":"array"},"timeout":{"default":600,"title":"Timeout","type":"integer"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Version"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"},"api_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Type"},"caching":{"default":false,"title":"Caching","type":"boolean"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Custom Llm Provider"},"litellm_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litellm Call Id"},"litellm_logging_obj":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Litellm Logging Obj"},"logger_fn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Logger Fn"}}}}}}}},"/v1/embeddings":{"post":{"tags":["embeddings"],"summary":"Embeddings","description":"Follows the exact same API spec as `OpenAI's Embeddings API https://platform.openai.com/docs/api-reference/embeddings`\n\n```bash\ncurl -X POST http://localhost:4000/v1/embeddings \n-H \"Content-Type: application/json\" \n-H \"Authorization: Bearer sk-1234\" \n-d '{\n    \"model\": \"text-embedding-ada-002\",\n    \"input\": \"The quick brown fox jumps over the lazy dog\"\n}'\n```","operationId":"embeddings_v1_embeddings_post","security":[{"APIKeyHeader":[]}],"parameters":[],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model"],"properties":{"model":{"title":"Model","type":"string"},"input":{"default":[],"items":{"type":"string"},"title":"Input","type":"array"},"timeout":{"default":600,"title":"Timeout","type":"integer"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Version"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"},"api_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Type"},"caching":{"default":false,"title":"Caching","type":"boolean"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Custom Llm Provider"},"litellm_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litellm Call Id"},"litellm_logging_obj":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Litellm Logging Obj"},"logger_fn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Logger Fn"}}}}}}}},"/moderations":{"post":{"tags":["moderations"],"summary":"Moderations","description":"The moderations endpoint is a tool you can use to check whether content complies with an LLM Providers policies.\nQuick Start\n```\ncurl --location 'http://0.0.0.0:4000/moderations'     --header 'Content-Type: application/json'     --header 'Authorization: Bearer sk-1234'     --data '{\"input\": \"Sample text goes here\", \"model\": \"text-moderation-stable\"}'\n```","operationId":"moderations_moderations_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/moderations":{"post":{"tags":["moderations"],"summary":"Moderations","description":"The moderations endpoint is a tool you can use to check whether content complies with an LLM Providers policies.\nQuick Start\n```\ncurl --location 'http://0.0.0.0:4000/moderations'     --header 'Content-Type: application/json'     --header 'Authorization: Bearer sk-1234'     --data '{\"input\": \"Sample text goes here\", \"model\": \"text-moderation-stable\"}'\n```","operationId":"moderations_v1_moderations_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/audio/speech":{"post":{"tags":["audio"],"summary":"Audio Speech","description":"Same params as:\n\nhttps://platform.openai.com/docs/api-reference/audio/createSpeech","operationId":"audio_speech_audio_speech_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/audio/speech":{"post":{"tags":["audio"],"summary":"Audio Speech","description":"Same params as:\n\nhttps://platform.openai.com/docs/api-reference/audio/createSpeech","operationId":"audio_speech_v1_audio_speech_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/audio/transcriptions":{"post":{"tags":["audio"],"summary":"Audio Transcriptions","description":"Same params as:\n\nhttps://platform.openai.com/docs/api-reference/audio/createTranscription?lang=curl","operationId":"audio_transcriptions_audio_transcriptions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_audio_transcriptions_audio_transcriptions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/audio/transcriptions":{"post":{"tags":["audio"],"summary":"Audio Transcriptions","description":"Same params as:\n\nhttps://platform.openai.com/docs/api-reference/audio/createTranscription?lang=curl","operationId":"audio_transcriptions_v1_audio_transcriptions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_audio_transcriptions_v1_audio_transcriptions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/assistants":{"get":{"tags":["assistants"],"summary":"Get Assistants","description":"Returns a list of assistants.\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/listAssistants","operationId":"get_assistants_assistants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["assistants"],"summary":"Create Assistant","description":"Create assistant\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/createAssistant","operationId":"create_assistant_assistants_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/assistants":{"get":{"tags":["assistants"],"summary":"Get Assistants","description":"Returns a list of assistants.\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/listAssistants","operationId":"get_assistants_v1_assistants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["assistants"],"summary":"Create Assistant","description":"Create assistant\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/createAssistant","operationId":"create_assistant_v1_assistants_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/assistants/{assistant_id}":{"delete":{"tags":["assistants"],"summary":"Delete Assistant","description":"Delete assistant\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/createAssistant","operationId":"delete_assistant_assistants__assistant_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"assistant_id","in":"path","required":true,"schema":{"type":"string","title":"Assistant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assistants/{assistant_id}":{"delete":{"tags":["assistants"],"summary":"Delete Assistant","description":"Delete assistant\n\nAPI Reference docs - https://platform.openai.com/docs/api-reference/assistants/createAssistant","operationId":"delete_assistant_v1_assistants__assistant_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"assistant_id","in":"path","required":true,"schema":{"type":"string","title":"Assistant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/threads":{"post":{"tags":["assistants"],"summary":"Create Threads","description":"Create a thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/threads/createThread","operationId":"create_threads_threads_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/threads":{"post":{"tags":["assistants"],"summary":"Create Threads","description":"Create a thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/threads/createThread","operationId":"create_threads_v1_threads_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/threads/{thread_id}":{"get":{"tags":["assistants"],"summary":"Get Thread","description":"Retrieves a thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/threads/getThread","operationId":"get_thread_threads__thread_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/threads/{thread_id}":{"get":{"tags":["assistants"],"summary":"Get Thread","description":"Retrieves a thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/threads/getThread","operationId":"get_thread_v1_threads__thread_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/threads/{thread_id}/messages":{"post":{"tags":["assistants"],"summary":"Add Messages","description":"Create a message.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/messages/createMessage","operationId":"add_messages_threads__thread_id__messages_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["assistants"],"summary":"Get Messages","description":"Returns a list of messages for a given thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/messages/listMessages","operationId":"get_messages_threads__thread_id__messages_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/threads/{thread_id}/messages":{"post":{"tags":["assistants"],"summary":"Add Messages","description":"Create a message.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/messages/createMessage","operationId":"add_messages_v1_threads__thread_id__messages_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["assistants"],"summary":"Get Messages","description":"Returns a list of messages for a given thread.\n\nAPI Reference - https://platform.openai.com/docs/api-reference/messages/listMessages","operationId":"get_messages_v1_threads__thread_id__messages_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/threads/{thread_id}/runs":{"post":{"tags":["assistants"],"summary":"Run Thread","description":"Create a run.\n\nAPI Reference: https://platform.openai.com/docs/api-reference/runs/createRun","operationId":"run_thread_threads__thread_id__runs_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/threads/{thread_id}/runs":{"post":{"tags":["assistants"],"summary":"Run Thread","description":"Create a run.\n\nAPI Reference: https://platform.openai.com/docs/api-reference/runs/createRun","operationId":"run_thread_v1_threads__thread_id__runs_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/utils/token_counter":{"post":{"tags":["llm utils"],"summary":"Token Counter","description":"Args:\n    request: TokenCountRequest\n    call_endpoint: bool - When set to \"True\" it will call the token counting endpoint - e.g Anthropic or Google AI Studio Token Counting APIs.\n\nReturns:\n    TokenCountResponse","operationId":"token_counter_utils_token_counter_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"call_endpoint","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Call Endpoint"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/utils/supported_openai_params":{"get":{"tags":["llm utils"],"summary":"Supported Openai Params","description":"Returns supported openai params for a given litellm model name\n\ne.g. `gpt-4` vs `gpt-3.5-turbo`\n\nExample curl:\n```\ncurl -X GET --location 'http://localhost:4000/utils/supported_openai_params?model=gpt-3.5-turbo-16k'         --header 'Authorization: Bearer sk-1234'\n```","operationId":"supported_openai_params_utils_supported_openai_params_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":true,"schema":{"type":"string","title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/utils/transform_request":{"post":{"tags":["llm utils"],"summary":"Transform Request","operationId":"transform_request_utils_transform_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformRequestBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RawRequestTypedDict"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/model/info":{"get":{"tags":["model management"],"summary":"Model Info V2","description":"Paginated model metadata for proxy deployments (pricing, provider, team access).\n\nReturns configured router deployments with enriched `model_info` (costs, provider,\ncontext window, etc.). Sensitive fields such as API keys and api_base are omitted.\n\nQuery parameters:\n    model: Filter to a single public `model_name`.\n    user_models_only: When true, only return models created by the calling user.\n    include_team_models: When true, populate `access_via_team_ids` and `direct_access`\n        on each model and filter to deployments the caller can use.\n    page / size: Pagination controls (defaults: page=1, size=50).\n    search: Case-insensitive partial match on model name or team public name.\n    modelId: Return a single deployment by LiteLLM model id.\n    teamId: Filter to models with direct access or team membership for this team id.\n    sortBy / sortOrder: Sort by model_name, created_at, updated_at, costs, or status.\n\nExample request:\n```\ncurl -X GET 'http://localhost:4000/v2/model/info?include_team_models=true&page=1&size=50' \\\n--header 'Authorization: Bearer sk-1234'\n```\n\nExample response:\n```json\n{\n    \"data\": [\n        {\n            \"model_name\": \"gpt-4\",\n            \"litellm_params\": {\"model\": \"openai/gpt-4.1\"},\n            \"model_info\": {\n                \"id\": \"abc123\",\n                \"litellm_provider\": \"openai\",\n                \"access_via_team_ids\": [\"team-1\"],\n                \"direct_access\": true\n            }\n        }\n    ],\n    \"total_count\": 1,\n    \"current_page\": 1,\n    \"total_pages\": 1,\n    \"size\": 50\n}\n```","operationId":"model_info_v2_v2_model_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specify the model name (optional)","title":"Model"},"description":"Specify the model name (optional)"},{"name":"user_models_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only return models added by this user","default":false,"title":"User Models Only"},"description":"Only return models added by this user"},{"name":"include_team_models","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Return all models across all teams user is in.","default":false,"title":"Include Team Models"},"description":"Return all models across all teams user is in."},{"name":"debug","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Debug"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search model names (case-insensitive partial match)","title":"Search"},"description":"Search model names (case-insensitive partial match)"},{"name":"modelId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search for a specific model by its unique ID","title":"Modelid"},"description":"Search for a specific model by its unique ID"},{"name":"teamId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids","title":"Teamid"},"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids"},{"name":"sortBy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field to sort by. Options: model_name, created_at, updated_at, costs, status","title":"Sortby"},"description":"Field to sort by. Options: model_name, created_at, updated_at, costs, status"},{"name":"sortOrder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order. Options: asc, desc","default":"asc","title":"Sortorder"},"description":"Sort order. Options: asc, desc"},{"name":"exclude_auto_routers","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Omit auto-router deployments (litellm model prefixed `auto_router/`). They select among deployments rather than being deployments themselves, so a caller rendering a deployment list can leave them out. Defaults to false, so existing callers are unaffected","default":false,"title":"Exclude Auto Routers"},"description":"Omit auto-router deployments (litellm model prefixed `auto_router/`). They select among deployments rather than being deployments themselves, so a caller rendering a deployment list can leave them out. Defaults to false, so existing callers are unaffected"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/model/info":{"get":{"tags":["model management"],"summary":"Model Info V1","description":"Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)\n\nParameters:\n    litellm_model_id: Optional[str] = None (this is the value of `x-litellm-model-id` returned in response headers)\n\n    - When litellm_model_id is passed, it will return the info for that specific model\n    - When litellm_model_id is not passed, it will return the info for all models\n    - include_team_models: When true, filter to deployments the caller can use (same as /v2/model/info).\n    - teamId: Filter to models accessible by the given team.\n\nEach model in the list response includes `model_info.access_via_team_ids` and\n`model_info.direct_access` when the proxy database is connected.\n\nReturns:\n    Returns a dictionary containing information about each model.\n\nExample Response:\n```json\n{\n    \"data\": [\n                {\n                    \"model_name\": \"fake-openai-endpoint\",\n                    \"litellm_params\": {\n                        \"api_base\": \"https://exampleopenaiendpoint-production.up.railway.app/\",\n                        \"model\": \"openai/fake\"\n                    },\n                    \"model_info\": {\n                        \"id\": \"112f74fab24a7a5245d2ced3536dd8f5f9192c57ee6e332af0f0512e08bed5af\",\n                        \"db_model\": false\n                    }\n                }\n            ]\n}\n\n```","operationId":"model_info_v1_v1_model_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm_model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Model Id"}},{"name":"include_team_models","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When true, filter to deployments the caller can use via direct access or team membership.","default":false,"title":"Include Team Models"},"description":"When true, filter to deployments the caller can use via direct access or team membership."},{"name":"teamId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids","title":"Teamid"},"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/info":{"get":{"tags":["model management"],"summary":"Model Info V1","description":"Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)\n\nParameters:\n    litellm_model_id: Optional[str] = None (this is the value of `x-litellm-model-id` returned in response headers)\n\n    - When litellm_model_id is passed, it will return the info for that specific model\n    - When litellm_model_id is not passed, it will return the info for all models\n    - include_team_models: When true, filter to deployments the caller can use (same as /v2/model/info).\n    - teamId: Filter to models accessible by the given team.\n\nEach model in the list response includes `model_info.access_via_team_ids` and\n`model_info.direct_access` when the proxy database is connected.\n\nReturns:\n    Returns a dictionary containing information about each model.\n\nExample Response:\n```json\n{\n    \"data\": [\n                {\n                    \"model_name\": \"fake-openai-endpoint\",\n                    \"litellm_params\": {\n                        \"api_base\": \"https://exampleopenaiendpoint-production.up.railway.app/\",\n                        \"model\": \"openai/fake\"\n                    },\n                    \"model_info\": {\n                        \"id\": \"112f74fab24a7a5245d2ced3536dd8f5f9192c57ee6e332af0f0512e08bed5af\",\n                        \"db_model\": false\n                    }\n                }\n            ]\n}\n\n```","operationId":"model_info_v1_model_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm_model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Model Id"}},{"name":"include_team_models","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When true, filter to deployments the caller can use via direct access or team membership.","default":false,"title":"Include Team Models"},"description":"When true, filter to deployments the caller can use via direct access or team membership."},{"name":"teamId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids","title":"Teamid"},"description":"Filter models by team ID. Returns models with direct_access=True or teamId in access_via_team_ids"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/model/deprecations":{"get":{"tags":["model management"],"summary":"Model Deprecations","description":"List models with known deprecation/sunset dates, bucketed by urgency.\n\nReads `deprecation_date` metadata from `model_prices_and_context_window.json`\n(and any per-deployment `model_info.deprecation_date` overrides) for the\nmodels configured on this proxy.\n\nParameters:\n    warn_within_days: Window (in days) used to bucket \"imminent\" models,\n        30 by default.\n\nReturns:\n    A payload with three lists of `ModelDeprecationInfo` entries:\n\n    - `deprecated`: deprecation date is in the past, so these requests may\n      fail at any time.\n    - `imminent`: deprecation date is within `warn_within_days` from today.\n    - `upcoming`: deprecation date is further out.\n\nExample:\n```shell\ncurl -X GET 'http://localhost:4000/model/deprecations' \\\n    -H 'Authorization: Bearer sk-1234'\n```","operationId":"model_deprecations_v1_model_deprecations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"warn_within_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Warn Within Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelDeprecationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/deprecations":{"get":{"tags":["model management"],"summary":"Model Deprecations","description":"List models with known deprecation/sunset dates, bucketed by urgency.\n\nReads `deprecation_date` metadata from `model_prices_and_context_window.json`\n(and any per-deployment `model_info.deprecation_date` overrides) for the\nmodels configured on this proxy.\n\nParameters:\n    warn_within_days: Window (in days) used to bucket \"imminent\" models,\n        30 by default.\n\nReturns:\n    A payload with three lists of `ModelDeprecationInfo` entries:\n\n    - `deprecated`: deprecation date is in the past, so these requests may\n      fail at any time.\n    - `imminent`: deprecation date is within `warn_within_days` from today.\n    - `upcoming`: deprecation date is further out.\n\nExample:\n```shell\ncurl -X GET 'http://localhost:4000/model/deprecations' \\\n    -H 'Authorization: Bearer sk-1234'\n```","operationId":"model_deprecations_model_deprecations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"warn_within_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Warn Within Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelDeprecationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model_group/info":{"get":{"tags":["model management"],"summary":"Model Group Info","description":"Get information about all the deployments on litellm proxy, including config.yaml descriptions (except api key and api base)\n\n- /model_group/info returns all model groups. End users of proxy should use /model_group/info since those models will be used for /chat/completions, /embeddings, etc.\n- /model_group/info?model_group=rerank-english-v3.0 returns all model groups for a specific model group (`model_name` in config.yaml)\n\n\n\nExample Request (All Models):\n```shell\ncurl -X 'GET'     'http://localhost:4000/model_group/info'     -H 'accept: application/json'     -H 'x-api-key: sk-1234'\n```\n\nExample Request (Specific Model Group):\n```shell\ncurl -X 'GET'     'http://localhost:4000/model_group/info?model_group=rerank-english-v3.0'     -H 'accept: application/json'     -H 'Authorization: Bearer sk-1234'\n```\n\nExample Request (Specific Wildcard Model Group): (e.g. `model_name: openai/*` on config.yaml)\n```shell\ncurl -X 'GET'     'http://localhost:4000/model_group/info?model_group=openai/tts-1'\n-H 'accept: application/json'     -H 'Authorization: Bearersk-1234'\n```\n\nLearn how to use and set wildcard models [here](https://docs.litellm.ai/docs/wildcard_routing)\n\nExample Response:\n```json\n    {\n        \"data\": [\n            {\n            \"model_group\": \"rerank-english-v3.0\",\n            \"providers\": [\n                \"cohere\"\n            ],\n            \"max_input_tokens\": null,\n            \"max_output_tokens\": null,\n            \"input_cost_per_token\": 0.0,\n            \"output_cost_per_token\": 0.0,\n            \"mode\": null,\n            \"tpm\": null,\n            \"rpm\": null,\n            \"supports_parallel_function_calling\": false,\n            \"supports_vision\": false,\n            \"supports_function_calling\": false,\n            \"supported_openai_params\": [\n                \"stream\",\n                \"temperature\",\n                \"max_tokens\",\n                \"logit_bias\",\n                \"top_p\",\n                \"frequency_penalty\",\n                \"presence_penalty\",\n                \"stop\",\n                \"n\",\n                \"extra_headers\"\n            ]\n            },\n            {\n            \"model_group\": \"gpt-3.5-turbo\",\n            \"providers\": [\n                \"openai\"\n            ],\n            \"max_input_tokens\": 16385.0,\n            \"max_output_tokens\": 4096.0,\n            \"input_cost_per_token\": 1.5e-06,\n            \"output_cost_per_token\": 2e-06,\n            \"mode\": \"chat\",\n            \"tpm\": null,\n            \"rpm\": null,\n            \"supports_parallel_function_calling\": false,\n            \"supports_vision\": false,\n            \"supports_function_calling\": true,\n            \"supported_openai_params\": [\n                \"frequency_penalty\",\n                \"logit_bias\",\n                \"logprobs\",\n                \"top_logprobs\",\n                \"max_tokens\",\n                \"max_completion_tokens\",\n                \"n\",\n                \"presence_penalty\",\n                \"seed\",\n                \"stop\",\n                \"stream\",\n                \"stream_options\",\n                \"temperature\",\n                \"top_p\",\n                \"tools\",\n                \"tool_choice\",\n                \"function_call\",\n                \"functions\",\n                \"max_retries\",\n                \"extra_headers\",\n                \"parallel_tool_calls\",\n                \"response_format\"\n            ]\n            },\n            {\n            \"model_group\": \"llava-hf\",\n            \"providers\": [\n                \"openai\"\n            ],\n            \"max_input_tokens\": null,\n            \"max_output_tokens\": null,\n            \"input_cost_per_token\": 0.0,\n            \"output_cost_per_token\": 0.0,\n            \"mode\": null,\n            \"tpm\": null,\n            \"rpm\": null,\n            \"supports_parallel_function_calling\": false,\n            \"supports_vision\": true,\n            \"supports_function_calling\": false,\n            \"supported_openai_params\": [\n                \"frequency_penalty\",\n                \"logit_bias\",\n                \"logprobs\",\n                \"top_logprobs\",\n                \"max_tokens\",\n                \"max_completion_tokens\",\n                \"n\",\n                \"presence_penalty\",\n                \"seed\",\n                \"stop\",\n                \"stream\",\n                \"stream_options\",\n                \"temperature\",\n                \"top_p\",\n                \"tools\",\n                \"tool_choice\",\n                \"function_call\",\n                \"functions\",\n                \"max_retries\",\n                \"extra_headers\",\n                \"parallel_tool_calls\",\n                \"response_format\"\n            ]\n            }\n        ]\n        }\n```","operationId":"model_group_info_model_group_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Group"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Home","operationId":"home__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/adaptive_router/state":{"get":{"tags":["adaptive_router"],"summary":"Get Adaptive Router State","description":"Return live bandit posteriors + queue depth for every configured adaptive router.\n\nAdmin-only. Returns 404 if no adaptive router is configured.\n\nResponse shape: `{\"routers\": [<snapshot>, ...]}` — one snapshot per\nadaptive-router deployment. Each snapshot's `router_name` field identifies\nwhich deployment it came from.","operationId":"get_adaptive_router_state_adaptive_router_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/routes":{"get":{"summary":"Get Routes","description":"Get a list of available routes in the FastAPI application.","operationId":"get_routes_routes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/openai/v1/responses":{"post":{"tags":["responses"],"summary":"Responses Api","description":"Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses\n\nSupports background mode with polling_via_cache for partial response retrieval.\nWhen background=true and polling_via_cache is enabled, returns a polling_id immediately\nand streams the response in the background, updating Redis cache.\n\n```bash\n# Normal request\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\"\n}'\n\n# Background request with polling\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\",\n    \"background\": true\n}'\n```","operationId":"responses_api_openai_v1_responses_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/responses":{"post":{"tags":["responses"],"summary":"Responses Api","description":"Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses\n\nSupports background mode with polling_via_cache for partial response retrieval.\nWhen background=true and polling_via_cache is enabled, returns a polling_id immediately\nand streams the response in the background, updating Redis cache.\n\n```bash\n# Normal request\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\"\n}'\n\n# Background request with polling\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\",\n    \"background\": true\n}'\n```","operationId":"responses_api_responses_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"get":{"summary":"WebSocket: responses_websocket_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_responses_websocket_endpoint_get","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/v1/responses":{"post":{"tags":["responses"],"summary":"Responses Api","description":"Follows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses\n\nSupports background mode with polling_via_cache for partial response retrieval.\nWhen background=true and polling_via_cache is enabled, returns a polling_id immediately\nand streams the response in the background, updating Redis cache.\n\n```bash\n# Normal request\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\"\n}'\n\n# Background request with polling\ncurl -X POST http://localhost:4000/v1/responses     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": \"Tell me about AI\",\n    \"background\": true\n}'\n```","operationId":"responses_api_v1_responses_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"get":{"summary":"WebSocket: responses_websocket_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_responses_websocket_endpoint_get_2","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/cursor/v1/models":{"get":{"tags":["responses"],"summary":"Cursor Model List","description":"OpenAI-compatible model listing for the Cursor BYOK base URL.\n\nClients pointed at `<proxy>/cursor` as an OpenAI-compatible base URL resolve and\nverify models via `GET {base}/models` (the OpenAI SDK contract). Without this\nroute those requests fall through to the Cursor Cloud Agents passthrough, which\ndemands a Cursor API key and 401s, so key verification silently fails before any\nchat request is ever sent. Delegates to the standard `/v1/models` handler.","operationId":"cursor_model_list_cursor_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/cursor/models":{"get":{"tags":["responses"],"summary":"Cursor Model List","description":"OpenAI-compatible model listing for the Cursor BYOK base URL.\n\nClients pointed at `<proxy>/cursor` as an OpenAI-compatible base URL resolve and\nverify models via `GET {base}/models` (the OpenAI SDK contract). Without this\nroute those requests fall through to the Cursor Cloud Agents passthrough, which\ndemands a Cursor API key and 401s, so key verification silently fails before any\nchat request is ever sent. Delegates to the standard `/v1/models` handler.","operationId":"cursor_model_list_cursor_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/cursor/chat/completions":{"post":{"tags":["responses"],"summary":"Cursor Chat Completions","description":"Cursor BYOK endpoint. Accepts both request shapes Cursor sends to its OpenAI-compatible\nbase URL and always answers in chat completions format.\n\nCursor agent mode sends Responses API format bodies (`input`, flat tool defs, `reasoning`,\ncustom tools) to the chat/completions path while expecting chat completions responses;\nthose are routed through the Responses API pipeline and converted back. Genuine chat\ncompletions bodies (`messages` present) are routed through the standard chat completions\npipeline, after normalizing each level of the `tools` array and `tool_choice` to the chat\ncompletions shapes OpenAI requires. Cursor mixes Responses API shapes into chat bodies\nper level, independently: a flat tool def (`{\"type\": \"custom\", \"name\": \"ApplyPatch\", ...}`)\ngets nested under `custom`, and a flat grammar format\n(`{\"type\": \"grammar\", \"definition\", \"syntax\"}`) gets wrapped as\n`{\"type\": \"grammar\", \"grammar\": {...}}` wherever it appears, including inside tool defs\nCursor already sent pre-nested.\n\n```bash\ncurl -X POST http://localhost:4000/cursor/chat/completions     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n}'\nResponds back in chat completions format.\n```","operationId":"cursor_chat_completions_cursor_chat_completions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/openai/v1/responses/{response_id}":{"get":{"tags":["responses"],"summary":"Get Response","description":"Get a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Returns cumulative cached content from background responses\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/get\n\n```bash\n# Get polling response\ncurl -X GET http://localhost:4000/v1/responses/litellm_poll_abc123     -H \"Authorization: Bearer sk-1234\"\n\n# Get provider response\ncurl -X GET http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"get_response_openai_v1_responses__response_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["responses"],"summary":"Delete Response","description":"Delete a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Deletes from Redis cache\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/delete\n\n```bash\ncurl -X DELETE http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"delete_response_openai_v1_responses__response_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/responses/{response_id}":{"get":{"tags":["responses"],"summary":"Get Response","description":"Get a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Returns cumulative cached content from background responses\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/get\n\n```bash\n# Get polling response\ncurl -X GET http://localhost:4000/v1/responses/litellm_poll_abc123     -H \"Authorization: Bearer sk-1234\"\n\n# Get provider response\ncurl -X GET http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"get_response_responses__response_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["responses"],"summary":"Delete Response","description":"Delete a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Deletes from Redis cache\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/delete\n\n```bash\ncurl -X DELETE http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"delete_response_responses__response_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/responses/{response_id}":{"get":{"tags":["responses"],"summary":"Get Response","description":"Get a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Returns cumulative cached content from background responses\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/get\n\n```bash\n# Get polling response\ncurl -X GET http://localhost:4000/v1/responses/litellm_poll_abc123     -H \"Authorization: Bearer sk-1234\"\n\n# Get provider response\ncurl -X GET http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"get_response_v1_responses__response_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["responses"],"summary":"Delete Response","description":"Delete a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Deletes from Redis cache\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/delete\n\n```bash\ncurl -X DELETE http://localhost:4000/v1/responses/resp_abc123     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"delete_response_v1_responses__response_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/v1/responses/{response_id}/input_items":{"get":{"tags":["responses"],"summary":"Get Response Input Items","description":"List input items for a response.","operationId":"get_response_input_items_openai_v1_responses__response_id__input_items_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/responses/{response_id}/input_items":{"get":{"tags":["responses"],"summary":"Get Response Input Items","description":"List input items for a response.","operationId":"get_response_input_items_responses__response_id__input_items_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/responses/{response_id}/input_items":{"get":{"tags":["responses"],"summary":"Get Response Input Items","description":"List input items for a response.","operationId":"get_response_input_items_v1_responses__response_id__input_items_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/v1/responses/compact":{"post":{"tags":["responses"],"summary":"Compact Response","description":"Compact a response by running a compaction pass over a conversation.\n\nReturns encrypted, opaque items that can be used to reduce context size.\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/compact\n\n```bash\ncurl -X POST http://localhost:4000/v1/responses/compact     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n}'\n```","operationId":"compact_response_openai_v1_responses_compact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/responses/compact":{"post":{"tags":["responses"],"summary":"Compact Response","description":"Compact a response by running a compaction pass over a conversation.\n\nReturns encrypted, opaque items that can be used to reduce context size.\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/compact\n\n```bash\ncurl -X POST http://localhost:4000/v1/responses/compact     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n}'\n```","operationId":"compact_response_responses_compact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/responses/compact":{"post":{"tags":["responses"],"summary":"Compact Response","description":"Compact a response by running a compaction pass over a conversation.\n\nReturns encrypted, opaque items that can be used to reduce context size.\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/compact\n\n```bash\ncurl -X POST http://localhost:4000/v1/responses/compact     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"     -d '{\n    \"model\": \"gpt-4o\",\n    \"input\": [{\"role\": \"user\", \"content\": \"Hello\"}]\n}'\n```","operationId":"compact_response_v1_responses_compact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/openai/v1/responses/{response_id}/cancel":{"post":{"tags":["responses"],"summary":"Cancel Response","description":"Cancel a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Cancels background response and updates status in Redis\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/cancel\n\n```bash\n# Cancel polling response\ncurl -X POST http://localhost:4000/v1/responses/litellm_poll_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n\n# Cancel provider response\ncurl -X POST http://localhost:4000/v1/responses/resp_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"cancel_response_openai_v1_responses__response_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/responses/{response_id}/cancel":{"post":{"tags":["responses"],"summary":"Cancel Response","description":"Cancel a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Cancels background response and updates status in Redis\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/cancel\n\n```bash\n# Cancel polling response\ncurl -X POST http://localhost:4000/v1/responses/litellm_poll_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n\n# Cancel provider response\ncurl -X POST http://localhost:4000/v1/responses/resp_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"cancel_response_responses__response_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/responses/{response_id}/cancel":{"post":{"tags":["responses"],"summary":"Cancel Response","description":"Cancel a response by ID.\n\nSupports both:\n- Polling IDs (litellm_poll_*): Cancels background response and updates status in Redis\n- Provider response IDs: Passes through to provider API\n\nFollows the OpenAI Responses API spec: https://platform.openai.com/docs/api-reference/responses/cancel\n\n```bash\n# Cancel polling response\ncurl -X POST http://localhost:4000/v1/responses/litellm_poll_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n\n# Cancel provider response\ncurl -X POST http://localhost:4000/v1/responses/resp_abc123/cancel     -H \"Authorization: Bearer sk-1234\"\n```","operationId":"cancel_response_v1_responses__response_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/model_hub":{"get":{"tags":["public","model management"],"summary":"Public Model Hub","operationId":"public_model_hub_public_model_hub_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ModelGroupInfoProxy"},"type":"array","title":"Response Public Model Hub Public Model Hub Get"}}}}}}},"/public/agent_hub":{"get":{"tags":["[beta] Agents","public"],"summary":"Get Agents","operationId":"get_agents_public_agent_hub_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentCard"},"type":"array","title":"Response Get Agents Public Agent Hub Get"}}}}}}},"/public/mcp_hub":{"get":{"tags":["[beta] MCP","public"],"summary":"Get Mcp Servers","operationId":"get_mcp_servers_public_mcp_hub_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MCPPublicServer"},"type":"array","title":"Response Get Mcp Servers Public Mcp Hub Get"}}}}}}},"/public/skill_hub":{"get":{"tags":["public","Claude Code Marketplace"],"summary":"Public Skill Hub","description":"Return enabled (public) Claude Code skills — no auth required.","operationId":"public_skill_hub_public_skill_hub_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/public/model_hub/info":{"get":{"tags":["public","model management"],"summary":"Public Model Hub Info","operationId":"public_model_hub_info_public_model_hub_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModelHubInfo"}}}}}}},"/public/providers":{"get":{"tags":["public","providers"],"summary":"Get Supported Providers","description":"Return a sorted list of all providers supported by LiteLLM.","operationId":"get_supported_providers_public_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Get Supported Providers Public Providers Get"}}}}}}},"/public/providers/fields":{"get":{"tags":["public","providers"],"summary":"Get Provider Fields","description":"Return provider metadata required by the dashboard create-model flow.","operationId":"get_provider_fields_public_providers_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProviderCreateInfo"},"type":"array","title":"Response Get Provider Fields Public Providers Fields Get"}}}}}}},"/public/complexity_router/scorer_defaults":{"get":{"tags":["public","auto router"],"summary":"Get Complexity Scorer Defaults","description":"Return the complexity router's shipped heuristic scorer defaults, for the dashboard to prefill with.","operationId":"get_complexity_scorer_defaults_public_complexity_router_scorer_defaults_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplexityScorerDefaults"}}}}}}},"/public/litellm_model_cost_map":{"get":{"tags":["public","model management"],"summary":"Get Litellm Model Cost Map","description":"Public endpoint to get the LiteLLM model cost map.\nReturns pricing information for all supported models.","operationId":"get_litellm_model_cost_map_public_litellm_model_cost_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/public/litellm_blog_posts":{"get":{"tags":["public"],"summary":"Get Litellm Blog Posts","description":"Public endpoint to get the latest LiteLLM blog posts.\n\nFetches from GitHub with a 1-hour in-process cache.\nFalls back to the bundled local backup on any failure.","operationId":"get_litellm_blog_posts_public_litellm_blog_posts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostsResponse"}}}}}}},"/public/endpoints":{"get":{"tags":["public"],"summary":"Get Supported Endpoints","description":"Return the list of LiteLLM proxy endpoints and which providers support each one.\n\nReads from the bundled local backup file. Result is cached in-process for\nthe lifetime of the server process.","operationId":"get_supported_endpoints_public_endpoints_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedEndpointsResponse"}}}}}}},"/public/agents/fields":{"get":{"tags":["public","[beta] Agents"],"summary":"Get Agent Fields","description":"Return agent type metadata required by the dashboard create-agent flow.\n\nIf an agent has `inherit_credentials_from_provider`, the provider's credential\nfields are automatically appended to the agent's credential_fields.","operationId":"get_agent_fields_public_agents_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentCreateInfo"},"type":"array","title":"Response Get Agent Fields Public Agents Fields Get"}}}}}}},"/rerank":{"post":{"tags":["rerank"],"summary":"Rerank","operationId":"rerank_rerank_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/rerank":{"post":{"tags":["rerank"],"summary":"Rerank","operationId":"rerank_v1_rerank_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/rerank":{"post":{"tags":["rerank"],"summary":"Rerank","operationId":"rerank_v2_rerank_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/ocr":{"post":{"tags":["ocr"],"summary":"Ocr","description":"OCR endpoint for extracting text from documents and images.\n\nSupports two input modes:\n\n**1. JSON body** (Mistral OCR API compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/ocr\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"mistral-ocr\",\n        \"document\": {\n            \"type\": \"document_url\",\n            \"document_url\": \"https://arxiv.org/pdf/2201.04234\"\n        }\n    }'\n```\n\n**2. Multipart form file upload**:\n```bash\ncurl -X POST \"http://localhost:4000/v1/ocr\"         -H \"Authorization: Bearer sk-1234\"         -F \"model=mistral-ocr\"         -F \"file=@document.pdf\"\n```\n\nResponse format is normalized to the LiteLLM OCR schema by default. Providers\nthat support it (Azure Document Intelligence) can return their own payload\ninstead, with cost tracking unchanged, via `x-req-format: native` (or\n`\"req_format\": \"native\"` in the body).","operationId":"ocr_ocr_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/ocr":{"post":{"tags":["ocr"],"summary":"Ocr","description":"OCR endpoint for extracting text from documents and images.\n\nSupports two input modes:\n\n**1. JSON body** (Mistral OCR API compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/ocr\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"mistral-ocr\",\n        \"document\": {\n            \"type\": \"document_url\",\n            \"document_url\": \"https://arxiv.org/pdf/2201.04234\"\n        }\n    }'\n```\n\n**2. Multipart form file upload**:\n```bash\ncurl -X POST \"http://localhost:4000/v1/ocr\"         -H \"Authorization: Bearer sk-1234\"         -F \"model=mistral-ocr\"         -F \"file=@document.pdf\"\n```\n\nResponse format is normalized to the LiteLLM OCR schema by default. Providers\nthat support it (Azure Document Intelligence) can return their own payload\ninstead, with cost tracking unchanged, via `x-req-format: native` (or\n`\"req_format\": \"native\"` in the body).","operationId":"ocr_v1_ocr_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/rag/ingest":{"post":{"tags":["rag"],"summary":"Rag Ingest","description":"RAG Ingest endpoint - all-in-one document ingestion pipeline.\n\nSupports form upload (for files) or JSON body (for URLs).\n\n## Form upload (for files):\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -F file=\"@document.pdf\" \\\n    -F 'ingest_options={\"vector_store\": {\"custom_llm_provider\": \"openai\"}}'\n```\n\n## JSON body (for URLs):\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"file_url\": \"https://example.com/document.pdf\",\n        \"ingest_options\": {\"vector_store\": {\"custom_llm_provider\": \"openai\"}}\n    }'\n```\n\n## Bedrock:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -F file=\"@document.pdf\" \\\n    -F 'ingest_options={\"vector_store\": {\"custom_llm_provider\": \"bedrock\"}}'\n```","operationId":"rag_ingest_rag_ingest_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/rag/ingest":{"post":{"tags":["rag"],"summary":"Rag Ingest","description":"RAG Ingest endpoint - all-in-one document ingestion pipeline.\n\nSupports form upload (for files) or JSON body (for URLs).\n\n## Form upload (for files):\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -F file=\"@document.pdf\" \\\n    -F 'ingest_options={\"vector_store\": {\"custom_llm_provider\": \"openai\"}}'\n```\n\n## JSON body (for URLs):\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"file_url\": \"https://example.com/document.pdf\",\n        \"ingest_options\": {\"vector_store\": {\"custom_llm_provider\": \"openai\"}}\n    }'\n```\n\n## Bedrock:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/ingest\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -F file=\"@document.pdf\" \\\n    -F 'ingest_options={\"vector_store\": {\"custom_llm_provider\": \"bedrock\"}}'\n```","operationId":"rag_ingest_v1_rag_ingest_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/rag/query":{"post":{"tags":["rag"],"summary":"Rag Query","description":"RAG Query endpoint - search vector store, optionally rerank, and generate LLM response.\n\nThis endpoint:\n1. Extracts the query from the last user message\n2. Searches the vector store for relevant context\n3. Optionally reranks the results\n4. Generates an LLM response with the retrieved context\n\n## Example Request:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/query\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"model\": \"gpt-4o-mini\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"What is LiteLLM?\"}],\n        \"retrieval_config\": {\n            \"vector_store_id\": \"vs_abc123\",\n            \"custom_llm_provider\": \"openai\",\n            \"top_k\": 5\n        }\n    }'\n```\n\n## With Reranking:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/query\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"model\": \"gpt-4o-mini\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"What is LiteLLM?\"}],\n        \"retrieval_config\": {\n            \"vector_store_id\": \"vs_abc123\",\n            \"custom_llm_provider\": \"openai\",\n            \"top_k\": 10\n        },\n        \"rerank\": {\n            \"enabled\": true,\n            \"model\": \"cohere/rerank-english-v3.0\",\n            \"top_n\": 3\n        }\n    }'\n```","operationId":"rag_query_rag_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/rag/query":{"post":{"tags":["rag"],"summary":"Rag Query","description":"RAG Query endpoint - search vector store, optionally rerank, and generate LLM response.\n\nThis endpoint:\n1. Extracts the query from the last user message\n2. Searches the vector store for relevant context\n3. Optionally reranks the results\n4. Generates an LLM response with the retrieved context\n\n## Example Request:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/query\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"model\": \"gpt-4o-mini\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"What is LiteLLM?\"}],\n        \"retrieval_config\": {\n            \"vector_store_id\": \"vs_abc123\",\n            \"custom_llm_provider\": \"openai\",\n            \"top_k\": 5\n        }\n    }'\n```\n\n## With Reranking:\n```bash\ncurl -X POST \"http://localhost:4000/v1/rag/query\" \\\n    -H \"Authorization: Bearer sk-1234\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"model\": \"gpt-4o-mini\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"What is LiteLLM?\"}],\n        \"retrieval_config\": {\n            \"vector_store_id\": \"vs_abc123\",\n            \"custom_llm_provider\": \"openai\",\n            \"top_k\": 10\n        },\n        \"rerank\": {\n            \"enabled\": true,\n            \"model\": \"cohere/rerank-english-v3.0\",\n            \"top_n\": 3\n        }\n    }'\n```","operationId":"rag_query_v1_rag_query_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/videos":{"get":{"tags":["videos"],"summary":"Video List","description":"Video list endpoint for retrieving a list of videos.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_list_videos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["videos"],"summary":"Video Generation","description":"Video generation endpoint for creating videos from text prompts.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"sora-2\",\n        \"prompt\": \"A beautiful sunset over the ocean\"\n    }'\n```","operationId":"video_generation_videos_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_generation_videos_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/videos":{"get":{"tags":["videos"],"summary":"Video List","description":"Video list endpoint for retrieving a list of videos.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_list_v1_videos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["videos"],"summary":"Video Generation","description":"Video generation endpoint for creating videos from text prompts.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"sora-2\",\n        \"prompt\": \"A beautiful sunset over the ocean\"\n    }'\n```","operationId":"video_generation_v1_videos_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_generation_v1_videos_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/videos/{video_id}":{"get":{"tags":["videos"],"summary":"Video Status","description":"Video status endpoint for retrieving video status and metadata.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/video_123\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_status_videos__video_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/videos/{video_id}":{"get":{"tags":["videos"],"summary":"Video Status","description":"Video status endpoint for retrieving video status and metadata.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/video_123\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_status_v1_videos__video_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/videos/{video_id}/content":{"get":{"tags":["videos"],"summary":"Video Content","description":"Video content endpoint for downloading video content.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/{video_id}/content\"         -H \"Authorization: Bearer sk-1234\"         --output video.mp4\n```","operationId":"video_content_videos__video_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/videos/{video_id}/content":{"get":{"tags":["videos"],"summary":"Video Content","description":"Video content endpoint for downloading video content.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/{video_id}/content\"         -H \"Authorization: Bearer sk-1234\"         --output video.mp4\n```","operationId":"video_content_v1_videos__video_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/videos/{video_id}/remix":{"post":{"tags":["videos"],"summary":"Video Remix","description":"Video remix endpoint for remixing existing videos with new prompts.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/video_123/remix\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"prompt\": \"A new version with different colors\"\n    }'\n```","operationId":"video_remix_videos__video_id__remix_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/videos/{video_id}/remix":{"post":{"tags":["videos"],"summary":"Video Remix","description":"Video remix endpoint for remixing existing videos with new prompts.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/video_123/remix\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"prompt\": \"A new version with different colors\"\n    }'\n```","operationId":"video_remix_v1_videos__video_id__remix_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/videos/characters":{"post":{"tags":["videos"],"summary":"Video Create Character","description":"Create a character from an uploaded video file.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-character\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/characters\"         -H \"Authorization: Bearer sk-1234\"         -F \"video=@character_video.mp4\"         -F \"name=my_character\"\n```","operationId":"video_create_character_videos_characters_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_create_character_videos_characters_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/videos/characters":{"post":{"tags":["videos"],"summary":"Video Create Character","description":"Create a character from an uploaded video file.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-character\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/characters\"         -H \"Authorization: Bearer sk-1234\"         -F \"video=@character_video.mp4\"         -F \"name=my_character\"\n```","operationId":"video_create_character_v1_videos_characters_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_create_character_v1_videos_characters_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/videos/characters/{character_id}":{"get":{"tags":["videos"],"summary":"Video Get Character","description":"Retrieve a character by ID.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/get-character\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/characters/char_123\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_get_character_videos_characters__character_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/videos/characters/{character_id}":{"get":{"tags":["videos"],"summary":"Video Get Character","description":"Retrieve a character by ID.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/get-character\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/videos/characters/char_123\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"video_get_character_v1_videos_characters__character_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/videos/edits":{"post":{"tags":["videos"],"summary":"Video Edit","description":"Create a video edit job.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-edit\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/edits\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\"prompt\": \"Make it brighter\", \"video\": {\"id\": \"video_123\"}}'\n```","operationId":"video_edit_videos_edits_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/videos/edits":{"post":{"tags":["videos"],"summary":"Video Edit","description":"Create a video edit job.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-edit\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/edits\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\"prompt\": \"Make it brighter\", \"video\": {\"id\": \"video_123\"}}'\n```","operationId":"video_edit_v1_videos_edits_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/videos/extensions":{"post":{"tags":["videos"],"summary":"Video Extension","description":"Create a video extension.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-extension\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/extensions\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\"prompt\": \"Continue the scene\", \"seconds\": \"5\", \"video\": {\"id\": \"video_123\"}}'\n```","operationId":"video_extension_videos_extensions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/videos/extensions":{"post":{"tags":["videos"],"summary":"Video Extension","description":"Create a video extension.\n\nFollows the OpenAI Videos API spec:\nhttps://platform.openai.com/docs/api-reference/videos/create-extension\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/videos/extensions\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\"prompt\": \"Continue the scene\", \"seconds\": \"5\", \"video\": {\"id\": \"video_123\"}}'\n```","operationId":"video_extension_v1_videos_extensions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/containers":{"get":{"tags":["containers"],"summary":"List Containers","description":"Container list endpoint for retrieving a list of containers.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers?limit=20&order=desc\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header or query param:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers?custom_llm_provider=azure\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"list_containers_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["containers"],"summary":"Create Container","description":"Container creation endpoint for creating new containers.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/containers\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"name\": \"My Container\",\n        \"expires_after\": {\n            \"anchor\": \"last_active_at\",\n            \"minutes\": 20\n        }\n    }'\n```\n\nOr specify provider via header:\n```bash\ncurl -X POST \"http://localhost:4000/v1/containers\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"         -H \"Content-Type: application/json\"         -d '{\n        \"name\": \"My Container\"\n    }'\n```","operationId":"create_container_containers_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/containers":{"get":{"tags":["containers"],"summary":"List Containers","description":"Container list endpoint for retrieving a list of containers.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers?limit=20&order=desc\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header or query param:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers?custom_llm_provider=azure\"         -H \"Authorization: Bearer sk-1234\"\n```","operationId":"list_containers_v1_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["containers"],"summary":"Create Container","description":"Container creation endpoint for creating new containers.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1/containers\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"name\": \"My Container\",\n        \"expires_after\": {\n            \"anchor\": \"last_active_at\",\n            \"minutes\": 20\n        }\n    }'\n```\n\nOr specify provider via header:\n```bash\ncurl -X POST \"http://localhost:4000/v1/containers\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"         -H \"Content-Type: application/json\"         -d '{\n        \"name\": \"My Container\"\n    }'\n```","operationId":"create_container_v1_containers_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/containers/{container_id}":{"get":{"tags":["containers"],"summary":"Retrieve Container","description":"Container retrieve endpoint for getting details of a specific container.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"\n```","operationId":"retrieve_container_containers__container_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["containers"],"summary":"Delete Container","description":"Container delete endpoint for deleting a specific container.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"\n```","operationId":"delete_container_containers__container_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/containers/{container_id}":{"get":{"tags":["containers"],"summary":"Retrieve Container","description":"Container retrieve endpoint for getting details of a specific container.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header:\n```bash\ncurl -X GET \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"\n```","operationId":"retrieve_container_v1_containers__container_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["containers"],"summary":"Delete Container","description":"Container delete endpoint for deleting a specific container.\n\nFollows the OpenAI Containers API spec:\nhttps://platform.openai.com/docs/api-reference/containers\n\nExample:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nOr specify provider via header:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/containers/cntr_123\"         -H \"Authorization: Bearer sk-1234\"         -H \"custom-llm-provider: azure\"\n```","operationId":"delete_container_v1_containers__container_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/containers/{container_id}/files":{"get":{"tags":["containers"],"summary":"Handler Container Id","operationId":"handler_container_id_v1_containers__container_id__files_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["containers"],"summary":"Handler Multipart Upload","operationId":"handler_multipart_upload_v1_containers__container_id__files_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/containers/{container_id}/files":{"get":{"tags":["containers"],"summary":"Handler Container Id","operationId":"handler_container_id_containers__container_id__files_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["containers"],"summary":"Handler Multipart Upload","operationId":"handler_multipart_upload_containers__container_id__files_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/containers/{container_id}/files/{file_id}":{"get":{"tags":["containers"],"summary":"Handler Container File","operationId":"handler_container_file_v1_containers__container_id__files__file_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["containers"],"summary":"Handler Container File","operationId":"handler_container_file_v1_containers__container_id__files__file_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/containers/{container_id}/files/{file_id}":{"get":{"tags":["containers"],"summary":"Handler Container File","operationId":"handler_container_file_containers__container_id__files__file_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["containers"],"summary":"Handler Container File","operationId":"handler_container_file_containers__container_id__files__file_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/containers/{container_id}/files/{file_id}/content":{"get":{"tags":["containers"],"summary":"Handler Binary Content","operationId":"handler_binary_content_v1_containers__container_id__files__file_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/containers/{container_id}/files/{file_id}/content":{"get":{"tags":["containers"],"summary":"Handler Binary Content","operationId":"handler_binary_content_containers__container_id__files__file_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"container_id","in":"path","required":true,"schema":{"type":"string","title":"Container Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"post":{"tags":["search"],"summary":"Search","description":"Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"search_tool_name\": \"litellm-search\",\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n    \"object\": \"search\",\n    \"results\": [\n        {\n            \"title\": \"Result title\",\n            \"url\": \"https://example.com\",\n            \"snippet\": \"Result snippet...\",\n            \"date\": \"2024-01-01\",\n            \"last_updated\": \"2024-01-01\"\n        }\n    ]\n}\n```","operationId":"search_search_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"search_tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search":{"post":{"tags":["search"],"summary":"Search","description":"Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"search_tool_name\": \"litellm-search\",\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n    \"object\": \"search\",\n    \"results\": [\n        {\n            \"title\": \"Result title\",\n            \"url\": \"https://example.com\",\n            \"snippet\": \"Result snippet...\",\n            \"date\": \"2024-01-01\",\n            \"last_updated\": \"2024-01-01\"\n        }\n    ]\n}\n```","operationId":"search_v1_search_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"search_tool_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/{search_tool_name}":{"post":{"tags":["search"],"summary":"Search","description":"Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"search_tool_name\": \"litellm-search\",\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n    \"object\": \"search\",\n    \"results\": [\n        {\n            \"title\": \"Result title\",\n            \"url\": \"https://example.com\",\n            \"snippet\": \"Result snippet...\",\n            \"date\": \"2024-01-01\",\n            \"last_updated\": \"2024-01-01\"\n        }\n    ]\n}\n```","operationId":"search_search__search_tool_name__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"search_tool_name","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search/{search_tool_name}":{"post":{"tags":["search"],"summary":"Search","description":"Search endpoint for performing web searches.\n\nFollows the Perplexity Search API spec:\nhttps://docs.perplexity.ai/api-reference/search-post\n\nThe search_tool_name can be passed either:\n1. In the URL path: /v1/search/{search_tool_name}\n2. In the request body: {\"search_tool_name\": \"...\"}\n\nExample with search_tool_name in URL (recommended - keeps body Perplexity-compatible):\n```bash\ncurl -X POST \"http://localhost:4000/v1/search/litellm-search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nExample with search_tool_name in body:\n```bash\ncurl -X POST \"http://localhost:4000/v1/search\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"search_tool_name\": \"litellm-search\",\n        \"query\": \"latest AI developments 2024\",\n        \"max_results\": 5,\n        \"search_domain_filter\": [\"arxiv.org\", \"nature.com\"],\n        \"country\": \"US\"\n    }'\n```\n\nRequest Body Parameters (when search_tool_name not in URL):\n- search_tool_name (str, required if not in URL): Name of the search tool configured in router\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nWhen using URL path parameter, only Perplexity-compatible parameters are needed in body:\n- query (str or list[str], required): Search query\n- max_results (int, optional): Maximum number of results (1-20), default 10\n- search_domain_filter (list[str], optional): List of domains to filter (max 20)\n- max_tokens_per_page (int, optional): Max tokens per page, default 1024\n- country (str, optional): Country code filter (e.g., 'US', 'GB', 'DE')\n\nResponse follows Perplexity Search API format:\n```json\n{\n    \"object\": \"search\",\n    \"results\": [\n        {\n            \"title\": \"Result title\",\n            \"url\": \"https://example.com\",\n            \"snippet\": \"Result snippet...\",\n            \"date\": \"2024-01-01\",\n            \"last_updated\": \"2024-01-01\"\n        }\n    ]\n}\n```","operationId":"search_v1_search__search_tool_name__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"search_tool_name","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/tools":{"get":{"tags":["search"],"summary":"List Search Tools","description":"List all available search tools configured in the router.\n\nThis endpoint returns the search tools that are currently loaded and available\nfor use with the /v1/search endpoint.\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/search/tools\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nResponse:\n```json\n{\n    \"object\": \"list\",\n    \"data\": [\n        {\n            \"search_tool_name\": \"litellm-search\",\n            \"search_provider\": \"perplexity\",\n            \"description\": \"Perplexity search tool\"\n        }\n    ]\n}\n```","operationId":"list_search_tools_search_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/search/tools":{"get":{"tags":["search"],"summary":"List Search Tools","description":"List all available search tools configured in the router.\n\nThis endpoint returns the search tools that are currently loaded and available\nfor use with the /v1/search endpoint.\n\nExample:\n```bash\ncurl -X GET \"http://localhost:4000/v1/search/tools\"         -H \"Authorization: Bearer sk-1234\"\n```\n\nResponse:\n```json\n{\n    \"object\": \"list\",\n    \"data\": [\n        {\n            \"search_tool_name\": \"litellm-search\",\n            \"search_provider\": \"perplexity\",\n            \"description\": \"Perplexity search tool\"\n        }\n    ]\n}\n```","operationId":"list_search_tools_v1_search_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/openai/deployments/{model}/images/generations":{"post":{"tags":["images"],"summary":"Image Generation","operationId":"image_generation_openai_deployments__model__images_generations_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/images/generations":{"post":{"tags":["images"],"summary":"Image Generation","operationId":"image_generation_images_generations_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/images/generations":{"post":{"tags":["images"],"summary":"Image Generation","operationId":"image_generation_v1_images_generations_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/deployments/{model}/images/edits":{"post":{"tags":["images"],"summary":"Image Edit Api","description":"Follows the OpenAI Images API spec: https://platform.openai.com/docs/api-reference/images/create\n\n```bash\ncurl -s -D >(grep -i x-request-id >&2)     -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png)     -X POST \"http://localhost:4000/v1/images/edits\"     -H \"Authorization: Bearer sk-1234\"         -F \"model=gpt-image-1\"         -F \"image[]=@soap.png\"         -F 'prompt=Create a studio ghibli image of this'\n```","operationId":"image_edit_api_openai_deployments__model__images_edits_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_image_edit_api_openai_deployments__model__images_edits_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/images/edits":{"post":{"tags":["images"],"summary":"Image Edit Api","description":"Follows the OpenAI Images API spec: https://platform.openai.com/docs/api-reference/images/create\n\n```bash\ncurl -s -D >(grep -i x-request-id >&2)     -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png)     -X POST \"http://localhost:4000/v1/images/edits\"     -H \"Authorization: Bearer sk-1234\"         -F \"model=gpt-image-1\"         -F \"image[]=@soap.png\"         -F 'prompt=Create a studio ghibli image of this'\n```","operationId":"image_edit_api_images_edits_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_image_edit_api_images_edits_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/images/edits":{"post":{"tags":["images"],"summary":"Image Edit Api","description":"Follows the OpenAI Images API spec: https://platform.openai.com/docs/api-reference/images/create\n\n```bash\ncurl -s -D >(grep -i x-request-id >&2)     -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png)     -X POST \"http://localhost:4000/v1/images/edits\"     -H \"Authorization: Bearer sk-1234\"         -F \"model=gpt-image-1\"         -F \"image[]=@soap.png\"         -F 'prompt=Create a studio ghibli image of this'\n```","operationId":"image_edit_api_v1_images_edits_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_image_edit_api_v1_images_edits_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fine_tuning/jobs":{"post":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Create Fine-Tuning Job","description":"Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\nThis is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/fine-tuning/create\n\nExample Curl:\n```\ncurl http://localhost:4000/v1/fine_tuning/jobs       -H \"Content-Type: application/json\"       -H \"Authorization: Bearer sk-1234\"       -d '{\n    \"model\": \"gpt-3.5-turbo\",\n    \"training_file\": \"file-abc123\",\n    \"hyperparameters\": {\n      \"n_epochs\": 4\n    }\n  }'\n```","operationId":"create_fine_tuning_job_fine_tuning_jobs_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLMFineTuningJobCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) List Fine-Tuning Jobs","description":"Lists fine-tuning jobs for the organization.\nThis is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `after`: Identifier for the last job from the previous pagination request.\n- `limit`: Number of fine-tuning jobs to retrieve (default is 20).","operationId":"list_fine_tuning_jobs_fine_tuning_jobs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"custom_llm_provider","in":"query","required":false,"schema":{"anyOf":[{"enum":["openai","azure"],"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma separated list of model names to filter by. Example: 'gpt-4o,gpt-4o-mini'","title":"Target Model Names"},"description":"Comma separated list of model names to filter by. Example: 'gpt-4o,gpt-4o-mini'"},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fine_tuning/jobs":{"post":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Create Fine-Tuning Job","description":"Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\nThis is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/fine-tuning/create\n\nExample Curl:\n```\ncurl http://localhost:4000/v1/fine_tuning/jobs       -H \"Content-Type: application/json\"       -H \"Authorization: Bearer sk-1234\"       -d '{\n    \"model\": \"gpt-3.5-turbo\",\n    \"training_file\": \"file-abc123\",\n    \"hyperparameters\": {\n      \"n_epochs\": 4\n    }\n  }'\n```","operationId":"create_fine_tuning_job_v1_fine_tuning_jobs_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLMFineTuningJobCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) List Fine-Tuning Jobs","description":"Lists fine-tuning jobs for the organization.\nThis is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `after`: Identifier for the last job from the previous pagination request.\n- `limit`: Number of fine-tuning jobs to retrieve (default is 20).","operationId":"list_fine_tuning_jobs_v1_fine_tuning_jobs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"custom_llm_provider","in":"query","required":false,"schema":{"anyOf":[{"enum":["openai","azure"],"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma separated list of model names to filter by. Example: 'gpt-4o,gpt-4o-mini'","title":"Target Model Names"},"description":"Comma separated list of model names to filter by. Example: 'gpt-4o,gpt-4o-mini'"},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fine_tuning/jobs/{fine_tuning_job_id}":{"get":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Retrieve Fine-Tuning Job","description":"Retrieves a fine-tuning job.\nThis is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `fine_tuning_job_id`: The ID of the fine-tuning job to retrieve.","operationId":"retrieve_fine_tuning_job_fine_tuning_jobs__fine_tuning_job_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fine_tuning_job_id","in":"path","required":true,"schema":{"type":"string","title":"Fine Tuning Job Id"}},{"name":"custom_llm_provider","in":"query","required":false,"schema":{"anyOf":[{"enum":["openai","azure"],"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fine_tuning/jobs/{fine_tuning_job_id}":{"get":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Retrieve Fine-Tuning Job","description":"Retrieves a fine-tuning job.\nThis is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `fine_tuning_job_id`: The ID of the fine-tuning job to retrieve.","operationId":"retrieve_fine_tuning_job_v1_fine_tuning_jobs__fine_tuning_job_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fine_tuning_job_id","in":"path","required":true,"schema":{"type":"string","title":"Fine Tuning Job Id"}},{"name":"custom_llm_provider","in":"query","required":false,"schema":{"anyOf":[{"enum":["openai","azure"],"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fine_tuning/jobs/{fine_tuning_job_id}/cancel":{"post":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Cancel Fine-Tuning Jobs","description":"Cancel a fine-tuning job.\n\nThis is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `fine_tuning_job_id`: The ID of the fine-tuning job to cancel.","operationId":"cancel_fine_tuning_job_fine_tuning_jobs__fine_tuning_job_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fine_tuning_job_id","in":"path","required":true,"schema":{"type":"string","title":"Fine Tuning Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel":{"post":{"tags":["fine-tuning"],"summary":"✨ (Enterprise) Cancel Fine-Tuning Jobs","description":"Cancel a fine-tuning job.\n\nThis is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel\n\nSupported Query Params:\n- `custom_llm_provider`: Name of the LiteLLM provider\n- `fine_tuning_job_id`: The ID of the fine-tuning job to cancel.","operationId":"cancel_fine_tuning_job_v1_fine_tuning_jobs__fine_tuning_job_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fine_tuning_job_id","in":"path","required":true,"schema":{"type":"string","title":"Fine Tuning Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credentials":{"get":{"tags":["credential management"],"summary":"Get Credentials","description":"[BETA] endpoint. This might change unexpectedly.","operationId":"get_credentials_credentials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["credential management"],"summary":"Create Credential","description":"[BETA] endpoint. This might change unexpectedly.\nStores credential in DB.\nReloads credentials in memory.","operationId":"create_credential_credentials_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialItem"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/credentials/by_name/{credential_name}":{"get":{"tags":["credential management"],"summary":"Get Credential By Name","description":"[BETA] endpoint. This might change unexpectedly.","operationId":"get_credential_by_name_credentials_by_name__credential_name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"credential_name","in":"path","required":true,"schema":{"type":"string","description":"The credential name, percent-decoded; may contain slashes","title":"Credential Name"},"description":"The credential name, percent-decoded; may contain slashes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credentials/by_model/{model_id}":{"get":{"tags":["credential management"],"summary":"Get Credential By Model","description":"[BETA] endpoint. This might change unexpectedly.","operationId":"get_credential_by_model_credentials_by_model__model_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","description":"The model ID to look up credentials for","title":"Model Id"},"description":"The model ID to look up credentials for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credentials/{credential_name}":{"delete":{"tags":["credential management"],"summary":"Delete Credential","description":"[BETA] endpoint. This might change unexpectedly.","operationId":"delete_credential_credentials__credential_name__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"credential_name","in":"path","required":true,"schema":{"type":"string","description":"The credential name, percent-decoded; may contain slashes","title":"Credential Name"},"description":"The credential name, percent-decoded; may contain slashes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["credential management"],"summary":"Update Credential","description":"[BETA] endpoint. This might change unexpectedly.","operationId":"update_credential_credentials__credential_name__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"credential_name","in":"path","required":true,"schema":{"type":"string","description":"The credential name, percent-decoded; may contain slashes","title":"Credential Name"},"description":"The credential name, percent-decoded; may contain slashes"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialItem"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai_passthrough/{endpoint}":{"delete":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai_passthrough__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai_passthrough__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai_passthrough__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai_passthrough__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai_passthrough__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/batches":{"post":{"tags":["batch"],"summary":"Create Batch","description":"Create large batches of API requests for asynchronous processing.\nThis is the equivalent of POST https://api.openai.com/v1/batch\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"input_file_id\": \"file-abc123\",\n        \"endpoint\": \"/v1/chat/completions\",\n        \"completion_window\": \"24h\"\n}'\n```","operationId":"create_batch_batches_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["batch"],"summary":"List Batches","description":"Lists \nThis is the equivalent of GET https://api.openai.com/v1/batches/\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches?limit=2     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"list_batches_batches_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches":{"post":{"tags":["batch"],"summary":"Create Batch","description":"Create large batches of API requests for asynchronous processing.\nThis is the equivalent of POST https://api.openai.com/v1/batch\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"input_file_id\": \"file-abc123\",\n        \"endpoint\": \"/v1/chat/completions\",\n        \"completion_window\": \"24h\"\n}'\n```","operationId":"create_batch_v1_batches_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["batch"],"summary":"List Batches","description":"Lists \nThis is the equivalent of GET https://api.openai.com/v1/batches/\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches?limit=2     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"list_batches_v1_batches_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/batches":{"post":{"tags":["batch"],"summary":"Create Batch","description":"Create large batches of API requests for asynchronous processing.\nThis is the equivalent of POST https://api.openai.com/v1/batch\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"input_file_id\": \"file-abc123\",\n        \"endpoint\": \"/v1/chat/completions\",\n        \"completion_window\": \"24h\"\n}'\n```","operationId":"create_batch__provider__v1_batches_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["batch"],"summary":"List Batches","description":"Lists \nThis is the equivalent of GET https://api.openai.com/v1/batches/\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches?limit=2     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"list_batches__provider__v1_batches_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/batches/{batch_id}":{"get":{"tags":["batch"],"summary":"Retrieve Batch","description":"Retrieves a batch.\nThis is the equivalent of GET https://api.openai.com/v1/batches/{batch_id}\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"retrieve_batch_batches__batch_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch ID to retrieve","description":"The ID of the batch to retrieve"},"description":"The ID of the batch to retrieve"},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches/{batch_id}":{"get":{"tags":["batch"],"summary":"Retrieve Batch","description":"Retrieves a batch.\nThis is the equivalent of GET https://api.openai.com/v1/batches/{batch_id}\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"retrieve_batch_v1_batches__batch_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch ID to retrieve","description":"The ID of the batch to retrieve"},"description":"The ID of the batch to retrieve"},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/batches/{batch_id}":{"get":{"tags":["batch"],"summary":"Retrieve Batch","description":"Retrieves a batch.\nThis is the equivalent of GET https://api.openai.com/v1/batches/{batch_id}\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123     -H \"Authorization: Bearer sk-1234\"     -H \"Content-Type: application/json\" \n```","operationId":"retrieve_batch__provider__v1_batches__batch_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch ID to retrieve","description":"The ID of the batch to retrieve"},"description":"The ID of the batch to retrieve"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/batches/{batch_id}/cancel":{"post":{"tags":["batch"],"summary":"Cancel Batch","description":"Cancel a batch.\nThis is the equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/cancel\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123/cancel         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -X POST\n\n```","operationId":"cancel_batch_batches__batch_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches/{batch_id}/cancel":{"post":{"tags":["batch"],"summary":"Cancel Batch","description":"Cancel a batch.\nThis is the equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/cancel\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123/cancel         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -X POST\n\n```","operationId":"cancel_batch_v1_batches__batch_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/batches/{batch_id}/cancel":{"post":{"tags":["batch"],"summary":"Cancel Batch","description":"Cancel a batch.\nThis is the equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/batch/cancel\n\nExample Curl\n```\ncurl http://localhost:4000/v1/batches/batch_abc123/cancel         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -X POST\n\n```","operationId":"cancel_batch__provider__v1_batches__batch_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files":{"post":{"tags":["files"],"summary":"Create File","description":"Upload a file that can be used across - Assistants API, Batch API \nThis is the equivalent of POST https://api.openai.com/v1/files\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/create\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files         -H \"Authorization: Bearer sk-1234\"         -F purpose=\"batch\"         -F file=\"@mydata.jsonl\"\n    -F expires_after[anchor]=\"created_at\"         -F expires_after[seconds]=2592000\n```","operationId":"create_file_files_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_file_files_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["files"],"summary":"List Files","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files        -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"list_files_files_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}},{"name":"purpose","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files":{"post":{"tags":["files"],"summary":"Create File","description":"Upload a file that can be used across - Assistants API, Batch API \nThis is the equivalent of POST https://api.openai.com/v1/files\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/create\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files         -H \"Authorization: Bearer sk-1234\"         -F purpose=\"batch\"         -F file=\"@mydata.jsonl\"\n    -F expires_after[anchor]=\"created_at\"         -F expires_after[seconds]=2592000\n```","operationId":"create_file_v1_files_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_file_v1_files_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["files"],"summary":"List Files","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files        -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"list_files_v1_files_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}},{"name":"purpose","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/files":{"post":{"tags":["files"],"summary":"Create File","description":"Upload a file that can be used across - Assistants API, Batch API \nThis is the equivalent of POST https://api.openai.com/v1/files\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/create\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files         -H \"Authorization: Bearer sk-1234\"         -F purpose=\"batch\"         -F file=\"@mydata.jsonl\"\n    -F expires_after[anchor]=\"created_at\"         -F expires_after[seconds]=2592000\n```","operationId":"create_file__provider__v1_files_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_file__provider__v1_files_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["files"],"summary":"List Files","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/list\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files        -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"list_files__provider__v1_files_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"target_model_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Model Names"}},{"name":"purpose","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/{file_id}/content":{"get":{"tags":["files"],"summary":"Get File Content","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}/content\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve-contents\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123/content         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file_content_files__file_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/{file_id}/content":{"get":{"tags":["files"],"summary":"Get File Content","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}/content\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve-contents\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123/content         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file_content_v1_files__file_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/files/{file_id}/content":{"get":{"tags":["files"],"summary":"Get File Content","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}/content\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve-contents\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123/content         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file_content__provider__v1_files__file_id__content_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/{file_id}":{"get":{"tags":["files"],"summary":"Get File","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file_files__file_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","description":"Deletes a specified file. that can be used across - Assistants API, Batch API \nThis is the equivalent of DELETE https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/delete\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123     -X DELETE     -H \"Authorization: Bearer $OPENAI_API_KEY\"\n\n```","operationId":"delete_file_files__file_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/{file_id}":{"get":{"tags":["files"],"summary":"Get File","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file_v1_files__file_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","description":"Deletes a specified file. that can be used across - Assistants API, Batch API \nThis is the equivalent of DELETE https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/delete\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123     -X DELETE     -H \"Authorization: Bearer $OPENAI_API_KEY\"\n\n```","operationId":"delete_file_v1_files__file_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{provider}/v1/files/{file_id}":{"get":{"tags":["files"],"summary":"Get File","description":"Returns information about a specific file. that can be used across - Assistants API, Batch API \nThis is the equivalent of GET https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/retrieve\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123         -H \"Authorization: Bearer sk-1234\"\n\n```","operationId":"get_file__provider__v1_files__file_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","description":"Deletes a specified file. that can be used across - Assistants API, Batch API \nThis is the equivalent of DELETE https://api.openai.com/v1/files/{file_id}\n\nSupports Identical Params as: https://platform.openai.com/docs/api-reference/files/delete\n\nExample Curl\n```\ncurl http://localhost:4000/v1/files/file-abc123     -X DELETE     -H \"Authorization: Bearer $OPENAI_API_KEY\"\n\n```","operationId":"delete_file__provider__v1_files__file_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"provider","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gemini/{endpoint}":{"delete":{"tags":["Google AI Studio Pass-through","pass-through"],"summary":"Gemini Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/google_ai_studio)","operationId":"gemini_proxy_route_gemini__endpoint__delete","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Google AI Studio Pass-through","pass-through"],"summary":"Gemini Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/google_ai_studio)","operationId":"gemini_proxy_route_gemini__endpoint__put","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Google AI Studio Pass-through","pass-through"],"summary":"Gemini Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/google_ai_studio)","operationId":"gemini_proxy_route_gemini__endpoint__get","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Google AI Studio Pass-through","pass-through"],"summary":"Gemini Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/google_ai_studio)","operationId":"gemini_proxy_route_gemini__endpoint__post","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Google AI Studio Pass-through","pass-through"],"summary":"Gemini Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/google_ai_studio)","operationId":"gemini_proxy_route_gemini__endpoint__patch","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cohere/{endpoint}":{"delete":{"tags":["Cohere Pass-through","pass-through"],"summary":"Cohere Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/cohere)","operationId":"cohere_proxy_route_cohere__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Cohere Pass-through","pass-through"],"summary":"Cohere Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/cohere)","operationId":"cohere_proxy_route_cohere__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Cohere Pass-through","pass-through"],"summary":"Cohere Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/cohere)","operationId":"cohere_proxy_route_cohere__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Cohere Pass-through","pass-through"],"summary":"Cohere Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/cohere)","operationId":"cohere_proxy_route_cohere__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Cohere Pass-through","pass-through"],"summary":"Cohere Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/cohere)","operationId":"cohere_proxy_route_cohere__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vllm/{endpoint}":{"delete":{"tags":["VLLM Pass-through","pass-through"],"summary":"Vllm Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/vllm)","operationId":"vllm_proxy_route_vllm__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["VLLM Pass-through","pass-through"],"summary":"Vllm Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/vllm)","operationId":"vllm_proxy_route_vllm__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["VLLM Pass-through","pass-through"],"summary":"Vllm Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/vllm)","operationId":"vllm_proxy_route_vllm__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["VLLM Pass-through","pass-through"],"summary":"Vllm Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/vllm)","operationId":"vllm_proxy_route_vllm__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["VLLM Pass-through","pass-through"],"summary":"Vllm Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/vllm)","operationId":"vllm_proxy_route_vllm__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mistral/{endpoint}":{"delete":{"tags":["Mistral Pass-through","pass-through"],"summary":"Mistral Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/mistral)","operationId":"mistral_proxy_route_mistral__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Mistral Pass-through","pass-through"],"summary":"Mistral Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/mistral)","operationId":"mistral_proxy_route_mistral__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Mistral Pass-through","pass-through"],"summary":"Mistral Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/mistral)","operationId":"mistral_proxy_route_mistral__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Mistral Pass-through","pass-through"],"summary":"Mistral Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/mistral)","operationId":"mistral_proxy_route_mistral__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Mistral Pass-through","pass-through"],"summary":"Mistral Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/mistral)","operationId":"mistral_proxy_route_mistral__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/milvus/{endpoint}":{"delete":{"tags":["Milvus Pass-through","pass-through"],"summary":"Milvus Proxy Route","description":"Enable using Milvus `/vectors` endpoint as a pass-through endpoint.","operationId":"milvus_proxy_route_milvus__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Milvus Pass-through","pass-through"],"summary":"Milvus Proxy Route","description":"Enable using Milvus `/vectors` endpoint as a pass-through endpoint.","operationId":"milvus_proxy_route_milvus__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Milvus Pass-through","pass-through"],"summary":"Milvus Proxy Route","description":"Enable using Milvus `/vectors` endpoint as a pass-through endpoint.","operationId":"milvus_proxy_route_milvus__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Milvus Pass-through","pass-through"],"summary":"Milvus Proxy Route","description":"Enable using Milvus `/vectors` endpoint as a pass-through endpoint.","operationId":"milvus_proxy_route_milvus__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Milvus Pass-through","pass-through"],"summary":"Milvus Proxy Route","description":"Enable using Milvus `/vectors` endpoint as a pass-through endpoint.","operationId":"milvus_proxy_route_milvus__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/anthropic/{endpoint}":{"delete":{"tags":["Anthropic Pass-through","pass-through"],"summary":"Anthropic Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion)","operationId":"anthropic_proxy_route_anthropic__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Anthropic Pass-through","pass-through"],"summary":"Anthropic Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion)","operationId":"anthropic_proxy_route_anthropic__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Anthropic Pass-through","pass-through"],"summary":"Anthropic Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion)","operationId":"anthropic_proxy_route_anthropic__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Anthropic Pass-through","pass-through"],"summary":"Anthropic Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion)","operationId":"anthropic_proxy_route_anthropic__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Anthropic Pass-through","pass-through"],"summary":"Anthropic Proxy Route","description":"[Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion)","operationId":"anthropic_proxy_route_anthropic__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bedrock/{endpoint}":{"delete":{"tags":["Bedrock Pass-through","pass-through"],"summary":"Bedrock Proxy Route","description":"This is the v1 passthrough for Bedrock.\nV2 is handled by the `/bedrock/v2` endpoint.\n[Docs](https://docs.litellm.ai/docs/pass_through/bedrock)","operationId":"bedrock_proxy_route_bedrock__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Bedrock Pass-through","pass-through"],"summary":"Bedrock Proxy Route","description":"This is the v1 passthrough for Bedrock.\nV2 is handled by the `/bedrock/v2` endpoint.\n[Docs](https://docs.litellm.ai/docs/pass_through/bedrock)","operationId":"bedrock_proxy_route_bedrock__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Bedrock Pass-through","pass-through"],"summary":"Bedrock Proxy Route","description":"This is the v1 passthrough for Bedrock.\nV2 is handled by the `/bedrock/v2` endpoint.\n[Docs](https://docs.litellm.ai/docs/pass_through/bedrock)","operationId":"bedrock_proxy_route_bedrock__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Bedrock Pass-through","pass-through"],"summary":"Bedrock Proxy Route","description":"This is the v1 passthrough for Bedrock.\nV2 is handled by the `/bedrock/v2` endpoint.\n[Docs](https://docs.litellm.ai/docs/pass_through/bedrock)","operationId":"bedrock_proxy_route_bedrock__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Bedrock Pass-through","pass-through"],"summary":"Bedrock Proxy Route","description":"This is the v1 passthrough for Bedrock.\nV2 is handled by the `/bedrock/v2` endpoint.\n[Docs](https://docs.litellm.ai/docs/pass_through/bedrock)","operationId":"bedrock_proxy_route_bedrock__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/comprehendmedical/{operation}":{"post":{"tags":["AWS Comprehend Medical Pass-through","pass-through"],"summary":"Comprehend Medical Proxy Route","description":"Pass-through for Amazon Comprehend Medical, e.g. `POST /comprehendmedical/DetectEntitiesV2`.\n\nThe request body is forwarded as-is to the AWS JSON 1.1 API and signed with SigV4\nusing the proxy's AWS credentials.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/comprehend_medical)","operationId":"comprehend_medical_proxy_route_comprehendmedical__operation__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"operation","in":"path","required":true,"schema":{"type":"string","title":"Operation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/comprehendmedical":{"post":{"tags":["AWS Comprehend Medical Pass-through","pass-through"],"summary":"Comprehend Medical Sdk Proxy Route","description":"AWS-SDK-shaped pass-through for Amazon Comprehend Medical: point the SDK's\n`endpoint_url` at `/comprehendmedical` and the operation is read from the\n`X-Amz-Target` header, per the AWS JSON 1.1 protocol.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/comprehend_medical)","operationId":"comprehend_medical_sdk_proxy_route_comprehendmedical_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/eu.assemblyai/{endpoint}":{"delete":{"tags":["AssemblyAI EU Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_eu_assemblyai__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["AssemblyAI EU Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_eu_assemblyai__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["AssemblyAI EU Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_eu_assemblyai__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["AssemblyAI EU Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_eu_assemblyai__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["AssemblyAI EU Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_eu_assemblyai__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assemblyai/{endpoint}":{"delete":{"tags":["AssemblyAI Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_assemblyai__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["AssemblyAI Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_assemblyai__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["AssemblyAI Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_assemblyai__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["AssemblyAI Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_assemblyai__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["AssemblyAI Pass-through","pass-through"],"summary":"Assemblyai Proxy Route","operationId":"assemblyai_proxy_route_assemblyai__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/azure/{endpoint}":{"delete":{"tags":["Azure Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Azure Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Azure Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Azure Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Azure Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/azure_ai/{endpoint}":{"delete":{"tags":["Azure AI Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure_ai__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Azure AI Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure_ai__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Azure AI Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure_ai__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Azure AI Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure_ai__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Azure AI Pass-through","pass-through"],"summary":"Azure Proxy Route","description":"Call any azure endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/azure/{endpoint:path}`\n\nChecks if the deployment id in the url is a litellm model name. If so, it will route using the llm_router.allm_passthrough_route.","operationId":"azure_proxy_route_azure_ai__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vertex_ai/discovery/{endpoint}":{"delete":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Discovery Proxy Route","description":"Call any vertex discovery endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/vertex_ai/discovery/{endpoint:path}`\n\nTarget url: `https://discoveryengine.googleapis.com`","operationId":"vertex_discovery_proxy_route_vertex_ai_discovery__endpoint__delete","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Discovery Proxy Route","description":"Call any vertex discovery endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/vertex_ai/discovery/{endpoint:path}`\n\nTarget url: `https://discoveryengine.googleapis.com`","operationId":"vertex_discovery_proxy_route_vertex_ai_discovery__endpoint__put","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Discovery Proxy Route","description":"Call any vertex discovery endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/vertex_ai/discovery/{endpoint:path}`\n\nTarget url: `https://discoveryengine.googleapis.com`","operationId":"vertex_discovery_proxy_route_vertex_ai_discovery__endpoint__get","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Discovery Proxy Route","description":"Call any vertex discovery endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/vertex_ai/discovery/{endpoint:path}`\n\nTarget url: `https://discoveryengine.googleapis.com`","operationId":"vertex_discovery_proxy_route_vertex_ai_discovery__endpoint__post","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Discovery Proxy Route","description":"Call any vertex discovery endpoint using the proxy.\n\nJust use `{PROXY_BASE_URL}/vertex_ai/discovery/{endpoint:path}`\n\nTarget url: `https://discoveryengine.googleapis.com`","operationId":"vertex_discovery_proxy_route_vertex_ai_discovery__endpoint__patch","parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vertex_ai/{endpoint}":{"delete":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Proxy Route","description":"Call LiteLLM proxy via Vertex AI SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/vertex_ai)","operationId":"vertex_proxy_route_vertex_ai__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Proxy Route","description":"Call LiteLLM proxy via Vertex AI SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/vertex_ai)","operationId":"vertex_proxy_route_vertex_ai__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Proxy Route","description":"Call LiteLLM proxy via Vertex AI SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/vertex_ai)","operationId":"vertex_proxy_route_vertex_ai__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Proxy Route","description":"Call LiteLLM proxy via Vertex AI SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/vertex_ai)","operationId":"vertex_proxy_route_vertex_ai__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Vertex AI Pass-through","pass-through"],"summary":"Vertex Proxy Route","description":"Call LiteLLM proxy via Vertex AI SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/vertex_ai)","operationId":"vertex_proxy_route_vertex_ai__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/openai/{endpoint}":{"delete":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["OpenAI Pass-through","pass-through"],"summary":"Openai Proxy Route","description":"Pass-through endpoint for OpenAI API calls.\n\nAvailable on both routes:\n- /openai/{endpoint:path} - Standard OpenAI passthrough route\n- /openai_passthrough/{endpoint:path} - Dedicated passthrough route (recommended for Responses API)\n\nUse /openai_passthrough/* when you need guaranteed passthrough to OpenAI without conflicts\nwith LiteLLM's native implementations (e.g., for the Responses API at /v1/responses).\n\nExamples:\n    Standard route:\n    - /openai/v1/chat/completions\n    - /openai/v1/assistants\n    - /openai/v1/threads\n\n    Dedicated passthrough (for Responses API):\n    - /openai_passthrough/v1/responses\n    - /openai_passthrough/v1/responses/{response_id}\n    - /openai_passthrough/v1/responses/{response_id}/input_items\n\n[Docs](https://docs.litellm.ai/docs/pass_through/openai_passthrough)","operationId":"openai_proxy_route_openai__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cursor/{endpoint}":{"delete":{"tags":["Cursor Pass-through","pass-through"],"summary":"Cursor Proxy Route","description":"Pass-through endpoint for the Cursor Cloud Agents API.\n\nSupports all Cursor Cloud Agents endpoints:\n- GET    /v0/agents         — List agents\n- POST   /v0/agents         — Launch an agent\n- GET    /v0/agents/{id}    — Agent status\n- GET    /v0/agents/{id}/conversation — Agent conversation\n- POST   /v0/agents/{id}/followup    — Add follow-up\n- POST   /v0/agents/{id}/stop        — Stop an agent\n- DELETE /v0/agents/{id}    — Delete an agent\n- GET    /v0/me             — API key info\n- GET    /v0/models         — List models\n- GET    /v0/repositories   — List GitHub repositories\n\nUses Basic Authentication (base64-encoded `API_KEY:`).\n\nCredential lookup order:\n1. passthrough_endpoint_router (config.yaml deployments with use_in_pass_through)\n2. litellm.credential_list (credentials added via UI)\n3. CURSOR_API_KEY environment variable","operationId":"cursor_proxy_route_cursor__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Cursor Pass-through","pass-through"],"summary":"Cursor Proxy Route","description":"Pass-through endpoint for the Cursor Cloud Agents API.\n\nSupports all Cursor Cloud Agents endpoints:\n- GET    /v0/agents         — List agents\n- POST   /v0/agents         — Launch an agent\n- GET    /v0/agents/{id}    — Agent status\n- GET    /v0/agents/{id}/conversation — Agent conversation\n- POST   /v0/agents/{id}/followup    — Add follow-up\n- POST   /v0/agents/{id}/stop        — Stop an agent\n- DELETE /v0/agents/{id}    — Delete an agent\n- GET    /v0/me             — API key info\n- GET    /v0/models         — List models\n- GET    /v0/repositories   — List GitHub repositories\n\nUses Basic Authentication (base64-encoded `API_KEY:`).\n\nCredential lookup order:\n1. passthrough_endpoint_router (config.yaml deployments with use_in_pass_through)\n2. litellm.credential_list (credentials added via UI)\n3. CURSOR_API_KEY environment variable","operationId":"cursor_proxy_route_cursor__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Cursor Pass-through","pass-through"],"summary":"Cursor Proxy Route","description":"Pass-through endpoint for the Cursor Cloud Agents API.\n\nSupports all Cursor Cloud Agents endpoints:\n- GET    /v0/agents         — List agents\n- POST   /v0/agents         — Launch an agent\n- GET    /v0/agents/{id}    — Agent status\n- GET    /v0/agents/{id}/conversation — Agent conversation\n- POST   /v0/agents/{id}/followup    — Add follow-up\n- POST   /v0/agents/{id}/stop        — Stop an agent\n- DELETE /v0/agents/{id}    — Delete an agent\n- GET    /v0/me             — API key info\n- GET    /v0/models         — List models\n- GET    /v0/repositories   — List GitHub repositories\n\nUses Basic Authentication (base64-encoded `API_KEY:`).\n\nCredential lookup order:\n1. passthrough_endpoint_router (config.yaml deployments with use_in_pass_through)\n2. litellm.credential_list (credentials added via UI)\n3. CURSOR_API_KEY environment variable","operationId":"cursor_proxy_route_cursor__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Cursor Pass-through","pass-through"],"summary":"Cursor Proxy Route","description":"Pass-through endpoint for the Cursor Cloud Agents API.\n\nSupports all Cursor Cloud Agents endpoints:\n- GET    /v0/agents         — List agents\n- POST   /v0/agents         — Launch an agent\n- GET    /v0/agents/{id}    — Agent status\n- GET    /v0/agents/{id}/conversation — Agent conversation\n- POST   /v0/agents/{id}/followup    — Add follow-up\n- POST   /v0/agents/{id}/stop        — Stop an agent\n- DELETE /v0/agents/{id}    — Delete an agent\n- GET    /v0/me             — API key info\n- GET    /v0/models         — List models\n- GET    /v0/repositories   — List GitHub repositories\n\nUses Basic Authentication (base64-encoded `API_KEY:`).\n\nCredential lookup order:\n1. passthrough_endpoint_router (config.yaml deployments with use_in_pass_through)\n2. litellm.credential_list (credentials added via UI)\n3. CURSOR_API_KEY environment variable","operationId":"cursor_proxy_route_cursor__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Cursor Pass-through","pass-through"],"summary":"Cursor Proxy Route","description":"Pass-through endpoint for the Cursor Cloud Agents API.\n\nSupports all Cursor Cloud Agents endpoints:\n- GET    /v0/agents         — List agents\n- POST   /v0/agents         — Launch an agent\n- GET    /v0/agents/{id}    — Agent status\n- GET    /v0/agents/{id}/conversation — Agent conversation\n- POST   /v0/agents/{id}/followup    — Add follow-up\n- POST   /v0/agents/{id}/stop        — Stop an agent\n- DELETE /v0/agents/{id}    — Delete an agent\n- GET    /v0/me             — API key info\n- GET    /v0/models         — List models\n- GET    /v0/repositories   — List GitHub repositories\n\nUses Basic Authentication (base64-encoded `API_KEY:`).\n\nCredential lookup order:\n1. passthrough_endpoint_router (config.yaml deployments with use_in_pass_through)\n2. litellm.credential_list (credentials added via UI)\n3. CURSOR_API_KEY environment variable","operationId":"cursor_proxy_route_cursor__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/watsonx/{endpoint}":{"delete":{"tags":["Watsonx Pass-through","pass-through"],"summary":"Watsonx Proxy Route","description":"Watsonx pass-through endpoint.\nAllows using Watsonx APIs with automatic IAM token management and version parameter injection.\n\nExample:\n    POST /watsonx/ml/v1/text/tokenization\n    POST /watsonx/ml/v1/text/generation","operationId":"watsonx_proxy_route_watsonx__endpoint__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Watsonx Pass-through","pass-through"],"summary":"Watsonx Proxy Route","description":"Watsonx pass-through endpoint.\nAllows using Watsonx APIs with automatic IAM token management and version parameter injection.\n\nExample:\n    POST /watsonx/ml/v1/text/tokenization\n    POST /watsonx/ml/v1/text/generation","operationId":"watsonx_proxy_route_watsonx__endpoint__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Watsonx Pass-through","pass-through"],"summary":"Watsonx Proxy Route","description":"Watsonx pass-through endpoint.\nAllows using Watsonx APIs with automatic IAM token management and version parameter injection.\n\nExample:\n    POST /watsonx/ml/v1/text/tokenization\n    POST /watsonx/ml/v1/text/generation","operationId":"watsonx_proxy_route_watsonx__endpoint__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Watsonx Pass-through","pass-through"],"summary":"Watsonx Proxy Route","description":"Watsonx pass-through endpoint.\nAllows using Watsonx APIs with automatic IAM token management and version parameter injection.\n\nExample:\n    POST /watsonx/ml/v1/text/tokenization\n    POST /watsonx/ml/v1/text/generation","operationId":"watsonx_proxy_route_watsonx__endpoint__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Watsonx Pass-through","pass-through"],"summary":"Watsonx Proxy Route","description":"Watsonx pass-through endpoint.\nAllows using Watsonx APIs with automatic IAM token management and version parameter injection.\n\nExample:\n    POST /watsonx/ml/v1/text/tokenization\n    POST /watsonx/ml/v1/text/generation","operationId":"watsonx_proxy_route_watsonx__endpoint__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/pass_through_endpoint/team/{team_id}":{"get":{"summary":"Get Pass Through Endpoints","description":"GET configured pass through endpoint.\n\nIf no endpoint_id given, return all configured endpoints.","operationId":"get_pass_through_endpoints_config_pass_through_endpoint_team__team_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"name":"endpoint_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassThroughEndpointResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/pass_through_endpoint":{"get":{"summary":"Get Pass Through Endpoints","description":"GET configured pass through endpoint.\n\nIf no endpoint_id given, return all configured endpoints.","operationId":"get_pass_through_endpoints_config_pass_through_endpoint_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Id"}},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassThroughEndpointResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Pass Through Endpoints","description":"Create new pass-through endpoint","operationId":"create_pass_through_endpoints_config_pass_through_endpoint_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassThroughGenericEndpoint"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Pass Through Endpoints","description":"Delete a pass-through endpoint by ID.\n\nReturns - the deleted endpoint","operationId":"delete_pass_through_endpoints_config_pass_through_endpoint_delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint_id","in":"query","required":true,"schema":{"type":"string","title":"Endpoint Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassThroughEndpointResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/pass_through_endpoint/{endpoint_id}":{"post":{"summary":"Update Pass Through Endpoints","description":"Update a pass-through endpoint by ID.","operationId":"update_pass_through_endpoints_config_pass_through_endpoint__endpoint_id__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Endpoint Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassThroughGenericEndpoint"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/test":{"get":{"tags":["health"],"summary":"Test Endpoint","description":"[DEPRECATED] use `/health/liveliness` instead.\n\nA test endpoint that pings the proxy server to check if it's healthy.\n\nParameters:\n    request (Request): The incoming request.\n\nReturns:\n    dict: A dictionary containing the route of the request URL.","operationId":"test_endpoint_test_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/services":{"get":{"tags":["health"],"summary":"Health Services Endpoint","description":"Use this admin-only endpoint to check if the service is healthy.\n\nExample:\n```\ncurl -L -X GET 'http://0.0.0.0:4000/health/services?service=datadog'     -H 'Authorization: Bearer sk-1234'\n```","operationId":"health_services_endpoint_health_services_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"service","in":"query","required":true,"schema":{"anyOf":[{"enum":["slack_budget_alerts","langfuse","langfuse_otel","slack","openmeter","webhook","email","braintrust","datadog","datadog_llm_observability","generic_api","arize","galileo","newrelic","sqs"],"type":"string"},{"type":"string"}],"description":"Specify the service being hit.","title":"Service"},"description":"Specify the service being hit."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health Endpoint","description":"🚨 USE `/health/liveliness` to health check the proxy 🚨\n\nSee more 👉 https://docs.litellm.ai/docs/proxy/health\n\n\nCheck the health of all the endpoints in config.yaml\n\nTo run health checks in the background, add this to config.yaml:\n```\ngeneral_settings:\n    # ... other settings\n    background_health_checks: True\n```\nelse, the health checks will be run on models when /health is called.\n\nTo skip deployments that set ``model_info.disable_background_health_check: true``\non ``GET /health`` as well as in the background loop, set\n``general_settings.health_check_skip_disabled_background_models: true``.","operationId":"health_endpoint_health_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specify the model name (optional)","title":"Model"},"description":"Specify the model name (optional)"},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specify the model ID (optional)","title":"Model Id"},"description":"Specify the model ID (optional)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/history":{"get":{"tags":["health"],"summary":"Health Check History Endpoint","description":"Get health check history for models\n\nReturns historical health check data with optional filtering.","operationId":"health_check_history_endpoint_health_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific model name","title":"Model"},"description":"Filter by specific model name"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (healthy/unhealthy)","title":"Status Filter"},"description":"Filter by status (healthy/unhealthy)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Number of records to return","default":100,"title":"Limit"},"description":"Number of records to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip","default":0,"title":"Offset"},"description":"Number of records to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/latest":{"get":{"tags":["health"],"summary":"Latest Health Checks Endpoint","description":"Get the latest health check status for all models\n\nReturns the most recent health check result for each model.","operationId":"latest_health_checks_endpoint_health_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/shared-status":{"get":{"tags":["health"],"summary":"Shared Health Check Status Endpoint","description":"Get the status of shared health check coordination across pods.\n\nReturns information about Redis connectivity, lock status, and cache status.","operationId":"shared_health_check_status_endpoint_health_shared_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/license":{"get":{"tags":["health"],"summary":"Health License Endpoint","description":"Return metadata about the configured LiteLLM license without exposing the key.","operationId":"health_license_endpoint_health_license_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/active/callbacks":{"get":{"tags":["health"],"summary":"Active Callbacks","description":"Returns a list of litellm level settings\n\nThis is useful for debugging and ensuring the proxy server is configured correctly.\n\nResponse schema:\n```\n{\n    \"alerting\": _alerting,\n    \"litellm.callbacks\": litellm_callbacks,\n    \"litellm.input_callback\": litellm_input_callbacks,\n    \"litellm.failure_callback\": litellm_failure_callbacks,\n    \"litellm.success_callback\": litellm_success_callbacks,\n    \"litellm._async_success_callback\": litellm_async_success_callbacks,\n    \"litellm._async_failure_callback\": litellm_async_failure_callbacks,\n    \"litellm._async_input_callback\": litellm_async_input_callbacks,\n    \"all_litellm_callbacks\": all_litellm_callbacks,\n    \"num_callbacks\": len(all_litellm_callbacks),\n    \"num_alerting\": _num_alerting,\n    \"litellm.request_timeout\": litellm.request_timeout,\n}\n```","operationId":"active_callbacks_active_callbacks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/settings":{"get":{"tags":["health"],"summary":"Active Callbacks","description":"Returns a list of litellm level settings\n\nThis is useful for debugging and ensuring the proxy server is configured correctly.\n\nResponse schema:\n```\n{\n    \"alerting\": _alerting,\n    \"litellm.callbacks\": litellm_callbacks,\n    \"litellm.input_callback\": litellm_input_callbacks,\n    \"litellm.failure_callback\": litellm_failure_callbacks,\n    \"litellm.success_callback\": litellm_success_callbacks,\n    \"litellm._async_success_callback\": litellm_async_success_callbacks,\n    \"litellm._async_failure_callback\": litellm_async_failure_callbacks,\n    \"litellm._async_input_callback\": litellm_async_input_callbacks,\n    \"all_litellm_callbacks\": all_litellm_callbacks,\n    \"num_callbacks\": len(all_litellm_callbacks),\n    \"num_alerting\": _num_alerting,\n    \"litellm.request_timeout\": litellm.request_timeout,\n}\n```","operationId":"active_callbacks_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/readiness":{"get":{"tags":["health"],"summary":"Health Readiness","description":"Public readiness probe. Returns a low-detail payload safe to expose to\nunauthenticated load balancers — `status` plus `db` so orchestrators and\nexternal probes can distinguish \"healthy\" from \"DB unreachable\" without a\ncredential. Admins can opt into the legacy detailed payload with\ngeneral_settings.allow_public_health_readiness_details.","operationId":"health_readiness_health_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"tags":["health"],"summary":"Health Readiness Options","description":"Options endpoint for health/readiness check.","operationId":"health_readiness_options_health_readiness_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/readiness/details":{"get":{"tags":["health"],"summary":"Health Readiness Details","description":"Authenticated readiness diagnostics with DB/cache/callback metadata.","operationId":"health_readiness_details_health_readiness_details_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/backlog":{"get":{"tags":["health"],"summary":"Health Backlog","description":"Returns the number of HTTP requests currently in-flight on this uvicorn worker.\n\nUse this to measure per-pod queue depth. A high value means the worker is\nprocessing many concurrent requests — requests arriving now will have to wait\nfor the event loop to get to them, adding latency before LiteLLM even starts\nits own timer.","operationId":"health_backlog_health_backlog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/health/drain":{"get":{"tags":["health"],"summary":"Health Drain","description":"Graceful-drain probe for Kubernetes ``preStop`` hooks.\n\nDisabled by default and returns 404 unless ``general_settings`` sets\n``enable_drain_endpoint: true``. Calling it flips a process-wide\nshutting-down flag, so a successful call permanently takes the worker out\nof rotation until the pod restarts.\n\nBecause the kubelet calls preStop hooks without proxy credentials, the\nendpoint does not require ``user_api_key_auth``. To prevent any\npod-reachable caller from triggering shutdown, set\n``general_settings.drain_endpoint_token`` (or the ``DRAIN_ENDPOINT_TOKEN``\nenv var) and supply the same value on the ``X-Drain-Token`` header from\nthe preStop hook. Calls without the header (or with a wrong value) get a\n401 and have no side effect.\n\nWhen enabled, it marks the worker as shutting down (so /health/readiness\nand /health/liveliness immediately start returning 503, removing the pod\nfrom service) and blocks until the in-flight request counter drains to\nzero or ``GRACEFUL_SHUTDOWN_TIMEOUT`` elapses. Unlike a fixed ``sleep``,\nthis returns as soon as real in-flight work is done.\n\nWire it up as:\n\n```yaml\nlifecycle:\n  preStop:\n    httpGet:\n      path: /health/drain\n      port: 4000\n      httpHeaders:\n        - name: X-Drain-Token\n          value: <same value as drain_endpoint_token>\n```","operationId":"health_drain_health_drain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/liveness":{"get":{"tags":["health"],"summary":"Health Liveliness","description":"Unprotected endpoint for checking if worker is alive.\n\nReturns 503 once graceful shutdown has begun so Kubernetes stops counting\nthe draining pod as live and terminates it on schedule.","operationId":"health_liveliness_health_liveness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"tags":["health"],"summary":"Health Liveliness Options","description":"Options endpoint for health/liveliness check.","operationId":"health_liveliness_options_health_liveness_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/liveliness":{"get":{"tags":["health"],"summary":"Health Liveliness","description":"Unprotected endpoint for checking if worker is alive.\n\nReturns 503 once graceful shutdown has begun so Kubernetes stops counting\nthe draining pod as live and terminates it on schedule.","operationId":"health_liveliness_health_liveliness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"tags":["health"],"summary":"Health Liveliness Options","description":"Options endpoint for health/liveliness check.","operationId":"health_liveliness_options_health_liveliness_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/test_connection":{"post":{"tags":["health"],"summary":"Test Model Connection","description":"Test a direct connection to a specific model.\n\nThis endpoint allows you to verify if your proxy can successfully connect to a specific model.\nIt's useful for troubleshooting model connectivity issues without going through the full proxy routing.\n\nExample:\n```bash\n# If model is configured in proxy_config.yaml, you only need to specify the model name:\ncurl -X POST 'http://localhost:4000/health/test_connection' \\\n  -H 'Authorization: Bearer sk-1234' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"litellm_params\": {\n        \"model\": \"gpt-4o\"\n    },\n    \"mode\": \"chat\"\n  }'\n\n# The endpoint will automatically use api_key, api_base, etc. from proxy_config.yaml\n\n# You can also override specific params or test with custom credentials:\ncurl -X POST 'http://localhost:4000/health/test_connection' \\\n  -H 'Authorization: Bearer sk-1234' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"litellm_params\": {\n        \"model\": \"azure/gpt-4o\",\n        \"api_key\": \"os.environ/AZURE_OPENAI_API_KEY\",\n        \"api_base\": \"os.environ/AZURE_OPENAI_ENDPOINT\",\n        \"api_version\": \"2024-10-21\"\n    },\n    \"mode\": \"chat\"\n  }'\n```\n\nNote: \n- If the model is configured in proxy_config.yaml, credentials (api_key, api_base, etc.) \n  will be automatically loaded from the config (with resolved environment variables).\n- You can override specific params by including them in the request.\n- You can use `os.environ/VARIABLE_NAME` syntax to reference environment variables,\n  which will be resolved automatically (same as in proxy_config.yaml).\n\nReturns:\n    dict: A dictionary containing the health check result with either success information or error details.","operationId":"test_model_connection_health_test_connection_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_test_model_connection_health_test_connection_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/key/generate":{"post":{"tags":["key management"],"summary":"Generate Key Fn","description":"Generate an API key based on the provided data.\n\nDocs: https://docs.litellm.ai/docs/proxy/virtual_keys\n\nParameters:\n- duration: Optional[str] - Specify the length of time the token is valid for. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\").\n- key_alias: Optional[str] - User defined key alias\n- key: Optional[str] - User defined key value. Must start with 'sk-' and be at least 16 characters long. If not set, a 16-digit unique sk-key is created for you.\n- team_id: Optional[str] - The team id of the key\n- user_id: Optional[str] - The user id of the key\n- agent_id: Optional[str] - The agent id associated with the key.\n- organization_id: Optional[str] - The organization id of the key. If not set, and team_id is set, the organization id will be the same as the team id. If conflict, an error will be raised.\n- project_id: Optional[str] - The project id of the key. When set, models and max_budget are validated against the project's limits.\n- budget_id: Optional[str] - The budget id associated with the key. Created by calling `/budget/new`.\n- models: Optional[list] - Model_name's a user is allowed to call. (if empty, key is allowed to call all models)\n- aliases: Optional[dict] - Any alias mappings, on top of anything in the config.yaml model list. - https://docs.litellm.ai/docs/proxy/virtual_keys#managing-auth---upgradedowngrade-models\n- config: Optional[dict] - any key-specific configs, overrides config in config.yaml\n- spend: Optional[int] - Amount spent by key. Default is 0. Will be updated by proxy whenever key is used. https://docs.litellm.ai/docs/proxy/virtual_keys#managing-auth---tracking-spend\n- send_invite_email: Optional[bool] - Whether to send an invite email to the user_id, with the generate key\n- max_budget: Optional[float] - Specify max budget for a given key.\n- budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\").\n- max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.\n- metadata: Optional[dict] - Metadata for key, store information for key. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n- guardrails: Optional[List[str]] - List of active guardrails for the key\n- policies: Optional[List[str]] - List of policy names to apply to the key. Policies define guardrails, conditions, and inheritance rules.\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- throttle_on_budget_exceeded: Optional[bool] - When the key exceeds its max_budget, throttle its tpm/rpm to the global budget_exceeded_throttle_percentage instead of blocking the key entirely.\n- enable_prompt_caching: Optional[bool] - Auto-inject prompt caching breakpoints (Anthropic cache_control markers) on requests made with this key. Anthropic and Bedrock Claude models only.\n- permissions: Optional[dict] - key-specific permissions. Currently just used for turning off pii masking (if connected). Example - {\"pii\": false}\n- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}}. IF null or {} then no model specific budget.\n- budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n- model_rpm_limit: Optional[dict] - key-specific model rpm limit. Example - {\"text-davinci-002\": 1000, \"gpt-3.5-turbo\": 1000}. IF null or {} then no model specific rpm limit.\n- model_tpm_limit: Optional[dict] - key-specific model tpm limit. Example - {\"text-davinci-002\": 1000, \"gpt-3.5-turbo\": 1000}. IF null or {} then no model specific tpm limit.\n- default_estimated_output_tokens: Optional[int] - Proxy admin only. Expected output tokens reserved for TPM limiting when a request omits max_tokens. Positive integer. Falls back to the team setting, then to the built-in estimate.\n- default_estimated_output_tokens_per_model: Optional[dict] - Proxy admin only. Per-model override of the above. Example - {\"gpt-4\": 4096, \"gpt-3.5-turbo\": 1024}. Takes precedence over the key-wide value.\n- mcp_rpm_limit: Optional[dict] - key-specific per-MCP-server rpm limit, keyed by MCP server name (alias if set, else the configured name). Example - {\"github\": 100, \"slack\": 200}. IF null or {} then no MCP-specific rpm limit.\n- tag_rpm_limit: Optional[dict] - key-specific per-request-tag rpm limit, keyed by request tag. Example - {\"cell-1\": 1000, \"cell-2\": 500}. Each tag gets an independent counter; requests whose tag is absent fall back to the key-level rpm limit.\n- tpm_limit_type: Optional[str] - Type of tpm limit. Options: \"best_effort_throughput\" (no error if we're overallocating tpm), \"guaranteed_throughput\" (raise an error if we're overallocating tpm), \"dynamic\" (dynamically exceed limit when no 429 errors). Defaults to \"best_effort_throughput\".\n- rpm_limit_type: Optional[str] - Type of rpm limit. Options: \"best_effort_throughput\" (no error if we're overallocating rpm), \"guaranteed_throughput\" (raise an error if we're overallocating rpm), \"dynamic\" (dynamically exceed limit when no 429 errors). Defaults to \"best_effort_throughput\".\n- allowed_cache_controls: Optional[list] - List of allowed cache control values. Example - [\"no-cache\", \"no-store\"]. See all values - https://docs.litellm.ai/docs/proxy/caching#turn-on--off-caching-per-request\n- blocked: Optional[bool] - Whether the key is blocked.\n- rpm_limit: Optional[int] - Specify rpm limit for a given key (Requests per minute)\n- tpm_limit: Optional[int] - Specify tpm limit for a given key (Tokens per minute)\n- soft_budget: Optional[float] - Specify soft budget for a given key. Will trigger a slack alert when this soft budget is reached.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.\n- enforced_params: Optional[List[str]] - List of enforced params for the key (Enterprise only). [Docs](https://docs.litellm.ai/docs/proxy/enterprise#enforce-required-params-for-llm-requests)\n- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.\n- allowed_routes: Optional[list] - List of allowed routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [\"/chat/completions\", \"/embeddings\", \"/keys/*\"]\n- allowed_passthrough_routes: Optional[list] - List of allowed pass through endpoints for the key. Store the actual endpoint or store a wildcard pattern for a set of endpoints. Example - [\"/my-custom-endpoint\"]. Use this instead of allowed_routes, if you just want to specify which pass through endpoints the key can access, without specifying the routes. If allowed_routes is specified, allowed_pass_through_endpoints is ignored.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - key-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- key_type: Optional[str] - Type of key that determines default allowed routes. Options: \"llm_api\" (can call LLM API routes), \"management\" (can call management routes), \"read_only\" (can only call info/read routes), \"default\" (uses default allowed routes). Defaults to \"default\".\n- prompts: Optional[List[str]] - List of allowed prompts for the key. If specified, the key will only be able to use these specific prompts.\n- auto_rotate: Optional[bool] - Whether this key should be automatically rotated (regenerated)\n- rotation_interval: Optional[str] - How often to auto-rotate this key (e.g., '30s', '30m', '30h', '30d'). Required if auto_rotate=True.\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- router_settings: Optional[UpdateRouterConfig] - key-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the key. Access groups define which models a key can access. Example - [\"access_group_1\", \"access_group_2\"].\n- budget_limits: Optional[list] - List of concurrent budget windows for the key. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n\nExamples:\n\n1. Allow users to turn on/off pii masking\n\n```bash\ncurl --location 'http://0.0.0.0:4000/key/generate'         --header 'Authorization: Bearer sk-1234'         --header 'Content-Type: application/json'         --data '{\n        \"permissions\": {\"allow_pii_controls\": true}\n}'\n```\n\nReturns:\n- key: (str) The generated api key\n- expires: (datetime) Datetime object for when key expires.\n- user_id: (str) Unique user id - used for tracking spend across multiple keys for same user id.","operationId":"generate_key_fn_key_generate_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/service-account/generate":{"post":{"tags":["key management"],"summary":"Generate Service Account Key Fn","description":"Generate a Service Account API key based on the provided data. This key does not belong to any user. It belongs to the team.\n\nWhy use a service account key?\n- Prevent key from being deleted when user is deleted.\n- Apply team limits, not team member limits to key.\n\nDocs: https://docs.litellm.ai/docs/proxy/virtual_keys\n\nParameters:\n- duration: Optional[str] - Specify the length of time the token is valid for. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\").\n- key_alias: Optional[str] - User defined key alias\n- key: Optional[str] - User defined key value. Must start with 'sk-' and be at least 16 characters long. If not set, a 16-digit unique sk-key is created for you.\n- team_id: Optional[str] - The team id of the key\n- user_id: Optional[str] - [NON-FUNCTIONAL] THIS WILL BE IGNORED. The user id of the key\n- budget_id: Optional[str] - The budget id associated with the key. Created by calling `/budget/new`.\n- models: Optional[list] - Model_name's a user is allowed to call. (if empty, key is allowed to call all models)\n- aliases: Optional[dict] - Any alias mappings, on top of anything in the config.yaml model list. - https://docs.litellm.ai/docs/proxy/virtual_keys#managing-auth---upgradedowngrade-models\n- config: Optional[dict] - any key-specific configs, overrides config in config.yaml\n- spend: Optional[int] - Amount spent by key. Default is 0. Will be updated by proxy whenever key is used. https://docs.litellm.ai/docs/proxy/virtual_keys#managing-auth---tracking-spend\n- send_invite_email: Optional[bool] - Whether to send an invite email to the user_id, with the generate key\n- max_budget: Optional[float] - Specify max budget for a given key.\n- budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\").\n- max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.\n- metadata: Optional[dict] - Metadata for key, store information for key. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n- guardrails: Optional[List[str]] - List of active guardrails for the key\n- permissions: Optional[dict] - key-specific permissions. Currently just used for turning off pii masking (if connected). Example - {\"pii\": false}\n- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}}. IF null or {} then no model specific budget.\n- budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n- model_rpm_limit: Optional[dict] - key-specific model rpm limit. Example - {\"text-davinci-002\": 1000, \"gpt-3.5-turbo\": 1000}. IF null or {} then no model specific rpm limit.\n- model_tpm_limit: Optional[dict] - key-specific model tpm limit. Example - {\"text-davinci-002\": 1000, \"gpt-3.5-turbo\": 1000}. IF null or {} then no model specific tpm limit.\n- default_estimated_output_tokens: Optional[int] - Proxy admin only. Expected output tokens reserved for TPM limiting when a request omits max_tokens. Positive integer. Falls back to the team setting, then to the built-in estimate.\n- default_estimated_output_tokens_per_model: Optional[dict] - Proxy admin only. Per-model override of the above. Example - {\"gpt-4\": 4096, \"gpt-3.5-turbo\": 1024}. Takes precedence over the key-wide value.\n- mcp_rpm_limit: Optional[dict] - key-specific per-MCP-server rpm limit, keyed by MCP server name (alias if set, else the configured name). Example - {\"github\": 100, \"slack\": 200}. IF null or {} then no MCP-specific rpm limit.\n- tpm_limit_type: Optional[str] - TPM rate limit type - \"best_effort_throughput\", \"guaranteed_throughput\", or \"dynamic\"\n- rpm_limit_type: Optional[str] - RPM rate limit type - \"best_effort_throughput\", \"guaranteed_throughput\", or \"dynamic\"\n- allowed_cache_controls: Optional[list] - List of allowed cache control values. Example - [\"no-cache\", \"no-store\"]. See all values - https://docs.litellm.ai/docs/proxy/caching#turn-on--off-caching-per-request\n- blocked: Optional[bool] - Whether the key is blocked.\n- rpm_limit: Optional[int] - Specify rpm limit for a given key (Requests per minute)\n- tpm_limit: Optional[int] - Specify tpm limit for a given key (Tokens per minute)\n- soft_budget: Optional[float] - Specify soft budget for a given key. Will trigger a slack alert when this soft budget is reached.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- enforced_params: Optional[List[str]] - List of enforced params for the key (Enterprise only). [Docs](https://docs.litellm.ai/docs/proxy/enterprise#enforce-required-params-for-llm-requests)\n- allowed_routes: Optional[list] - List of allowed routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [\"/chat/completions\", \"/embeddings\", \"/keys/*\"]\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - key-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\nExamples:\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n\n\n1. Allow users to turn on/off pii masking\n\n```bash\ncurl --location 'http://0.0.0.0:4000/key/generate'         --header 'Authorization: Bearer sk-1234'         --header 'Content-Type: application/json'         --data '{\n        \"permissions\": {\"allow_pii_controls\": true}\n}'\n```\n\nReturns:\n- key: (str) The generated api key\n- expires: (datetime) Datetime object for when key expires.\n- user_id: (str) Unique user id - used for tracking spend across multiple keys for same user id.","operationId":"generate_service_account_key_fn_key_service_account_generate_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/update":{"post":{"tags":["key management"],"summary":"Update Key Fn","description":"Update an existing API key's parameters.\n\nParameters:\n- key: Optional[str] - The key to update. Either key or key_alias must be provided.\n- key_alias: Optional[str] - User-friendly key alias. If key is omitted, also identifies the key to update (must match exactly one key, same as /key/delete's key_aliases)\n- user_id: Optional[str] - User ID associated with key\n- team_id: Optional[str] - Team ID associated with key\n- agent_id: Optional[str] - The agent id associated with the key.\n- organization_id: Optional[str] - The organization id of the key.\n- budget_id: Optional[str] - The budget id associated with the key. Created by calling `/budget/new`.\n- models: Optional[list] - Model_name's a user is allowed to call\n- tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)\n- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.\n- enforced_params: Optional[List[str]] - List of enforced params for the key (Enterprise only). [Docs](https://docs.litellm.ai/docs/proxy/enterprise#enforce-required-params-for-llm-requests)\n- spend: Optional[float] - Amount spent by key\n- max_budget: Optional[float] - Max budget for key\n- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}\n- budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n- budget_duration: Optional[str] - Budget reset period (\"30d\", \"1h\", etc.)\n- soft_budget: Optional[float] - [TODO] Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.\n- max_parallel_requests: Optional[int] - Rate limit for parallel requests\n- metadata: Optional[dict] - Metadata for key. Example {\"team\": \"core-infra\", \"app\": \"app2\"}\n- tpm_limit: Optional[int] - Tokens per minute limit\n- rpm_limit: Optional[int] - Requests per minute limit\n- model_rpm_limit: Optional[dict] - Model-specific RPM limits {\"gpt-4\": 100, \"claude-v1\": 200}\n- mcp_rpm_limit: Optional[dict] - Per-MCP-server RPM limits, keyed by MCP server name {\"github\": 100, \"slack\": 200}\n- tag_rpm_limit: Optional[dict] - Per-request-tag RPM limits, keyed by request tag {\"cell-1\": 1000, \"cell-2\": 500}. Each tag gets an independent counter; absent tags fall back to the key-level rpm limit.\n- model_tpm_limit: Optional[dict] - Model-specific TPM limits {\"gpt-4\": 100000, \"claude-v1\": 200000}\n- default_estimated_output_tokens: Optional[int] - Proxy admin only. Expected output tokens reserved for TPM limiting when a request omits max_tokens. Positive integer.\n- default_estimated_output_tokens_per_model: Optional[dict] - Proxy admin only. Per-model override of the above {\"gpt-4\": 4096, \"gpt-3.5-turbo\": 1024}\n- tpm_limit_type: Optional[str] - TPM rate limit type - \"best_effort_throughput\", \"guaranteed_throughput\", or \"dynamic\"\n- rpm_limit_type: Optional[str] - RPM rate limit type - \"best_effort_throughput\", \"guaranteed_throughput\", or \"dynamic\"\n- allowed_cache_controls: Optional[list] - List of allowed cache control values\n- duration: Optional[str] - Key validity duration (\"30d\", \"1h\", etc.), null to never expire, or \"-1\" to never expire (deprecated, use null)\n- permissions: Optional[dict] - Key-specific permissions\n- send_invite_email: Optional[bool] - Send invite email to user_id\n- guardrails: Optional[List[str]] - List of active guardrails for the key\n- policies: Optional[List[str]] - List of policy names to apply to the key. Policies define guardrails, conditions, and inheritance rules.\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- throttle_on_budget_exceeded: Optional[bool] - When the key exceeds its max_budget, throttle its tpm/rpm to the global budget_exceeded_throttle_percentage instead of blocking the key entirely.\n- enable_prompt_caching: Optional[bool] - Auto-inject prompt caching breakpoints (Anthropic cache_control markers) on requests made with this key. Anthropic and Bedrock Claude models only.\n- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.\n- blocked: Optional[bool] - Whether the key is blocked\n- aliases: Optional[dict] - Model aliases for the key - [Docs](https://litellm.vercel.app/docs/proxy/virtual_keys#model-aliases)\n- config: Optional[dict] - [DEPRECATED PARAM] Key-specific config.\n- temp_budget_increase: Optional[float] - Temporary budget increase for the key (Enterprise only).\n- temp_budget_expiry: Optional[str] - Expiry time for the temporary budget increase (Enterprise only).\n- allowed_routes: Optional[list] - List of allowed routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [\"/chat/completions\", \"/embeddings\", \"/keys/*\"]\n- allowed_passthrough_routes: Optional[list] - List of allowed pass through routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [\"/my-custom-endpoint\"]. Use this instead of allowed_routes, if you just want to specify which pass through routes the key can access, without specifying the routes. If allowed_routes is specified, allowed_passthrough_routes is ignored.\n- prompts: Optional[List[str]] - List of allowed prompts for the key. If specified, the key will only be able to use these specific prompts.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - key-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- auto_rotate: Optional[bool] - Whether this key should be automatically rotated\n- rotation_interval: Optional[str] - How often to rotate this key (e.g., '30d', '90d'). Required if auto_rotate=True\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- router_settings: Optional[UpdateRouterConfig] - key-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the key. Access groups define which models a key can access. Example - [\"access_group_1\", \"access_group_2\"].\n- budget_limits: Optional[list] - List of concurrent budget windows for the key. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/key/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"key\": \"sk-1234\",\n    \"key_alias\": \"my-key\",\n    \"user_id\": \"user-1234\",\n    \"team_id\": \"team-1234\",\n    \"max_budget\": 100,\n    \"metadata\": {\"any_key\": \"any-val\"},\n}'\n```","operationId":"update_key_fn_key_update_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/bulk_update":{"post":{"tags":["key management"],"summary":"Bulk Update Keys","description":"Bulk update multiple keys at once.\n\nThis endpoint allows updating multiple keys in a single request. Each key update\nis processed independently - if some updates fail, others will still succeed.\n\nParameters:\n- keys: List[BulkUpdateKeyRequestItem] - List of key update requests, each containing:\n    - key: str - The key identifier (token) to update\n    - budget_id: Optional[str] - Budget ID associated with the key\n    - max_budget: Optional[float] - Max budget for key\n    - team_id: Optional[str] - Team ID associated with key\n    - tags: Optional[List[str]] - Tags for organizing keys\n\nReturns:\n- total_requested: int - Total number of keys requested for update\n- successful_updates: List[SuccessfulKeyUpdate] - List of successfully updated keys with their updated info\n- failed_updates: List[FailedKeyUpdate] - List of failed updates with key_info and failed_reason\n\nExample request:\n```bash\ncurl --location 'http://0.0.0.0:4000/key/bulk_update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"keys\": [\n        {\n            \"key\": \"sk-1234\",\n            \"max_budget\": 100.0,\n            \"team_id\": \"team-123\",\n            \"tags\": [\"production\", \"api\"]\n        },\n        {\n            \"key\": \"sk-5678\",\n            \"budget_id\": \"budget-456\",\n            \"tags\": [\"staging\"]\n        }\n    ]\n}'\n```","operationId":"bulk_update_keys_key_bulk_update_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/key/bulk_update":{"post":{"tags":["key management"],"summary":"Bulk Update Team Keys","description":"Apply one update payload to many keys inside a single team.\n\nPass `team_id` plus either `key_ids` or `all_keys_in_team=True`. The\n`update_fields` payload is broadcast to every selected key. Per-key\nfailures are returned in `failed_updates` rather than aborting the batch.\n\nCallable by proxy admins, or by team admins with `KEY_UPDATE` permission.","operationId":"bulk_update_team_keys_team_key_bulk_update_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateTeamKeysRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/delete":{"post":{"tags":["key management"],"summary":"Delete Key Fn","description":"Delete a key from the key management system.\n\nParameters::\n- keys (List[str]): A list of keys or hashed keys to delete. Example {\"keys\": [\"sk-QWrxEynunsNpV1zT48HIrw\", \"837e17519f44683334df5291321d97b8bf1098cd490e49e215f6fea935aa28be\"]}\n- key_aliases (List[str]): A list of key aliases to delete. Can be passed instead of `keys`.Example {\"key_aliases\": [\"alias1\", \"alias2\"]}\n\nReturns:\n- deleted_keys (List[str]): A list of deleted keys. Example {\"deleted_keys\": [\"sk-QWrxEynunsNpV1zT48HIrw\", \"837e17519f44683334df5291321d97b8bf1098cd490e49e215f6fea935aa28be\"]}\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/key/delete'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"keys\": [\"sk-QWrxEynunsNpV1zT48HIrw\"]\n}'\n```\n\nRaises:\n    HTTPException: If an error occurs during key deletion.","operationId":"delete_key_fn_key_delete_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/info":{"get":{"tags":["key management"],"summary":"Info Key Fn","description":"Retrieve information about a key.\n\nParameters:\n- key: str | None (query parameter) - The key to look up. Accepts the plaintext key or its hash.\n  Defaults to the key in the Authorization header.\n\nReturns:\n- key: str - The key that was looked up, echoed back as it was passed in\n- info: dict - The key's row, minus the hashed token\n    - key_alias: str | None - User-friendly key alias\n    - spend: float - Amount spent by the key. When budget_duration is set this covers only the\n      current budget window, not the key's lifetime\n    - max_budget: float | None - Max budget for the key, enforced against spend\n    - budget_duration: str | None - Budget reset period (\"30d\", \"1h\", etc.)\n    - budget_reset_at: datetime | None - When the current budget window ends and spend is next\n      reset to 0, not when it was last reset. Reset times snap to standard boundaries in the\n      configured timezone (30d and 1mo land on the 1st of the month, 7d on Monday, 1h on the\n      hour), so subtracting budget_duration from it does not give the window's start\n    - model_max_budget: dict - Per-model budgets, e.g. {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}\n    - model_max_budget_usage: dict | None - Current-window spend per model, present only when\n      the key has per-model budgets\n    - models: list - Model_name's the key is allowed to call\n    - tpm_limit / rpm_limit: int | None - Tokens and requests per minute limits\n    - metadata: dict - Metadata for the key, e.g. {\"team\": \"core-infra\"}\n    - blocked: bool | None - Whether the key is blocked\n    - expires: datetime | None - When the key stops authenticating requests\n    - last_active: datetime | None - When the key was last used\n    - object_permission: dict | None - Resolved vector store / MCP permissions when the key has\n      an object_permission_id\n\nExample Curl:\n```\ncurl -X GET \"http://0.0.0.0:4000/key/info?key=sk-test-example-key-123\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Curl - if no key is passed, it will use the Key Passed in Authorization Header\n```\ncurl -X GET \"http://0.0.0.0:4000/key/info\" -H \"Authorization: Bearer sk-test-example-key-123\"\n```","operationId":"info_key_fn_key_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Key in the request parameters","title":"Key"},"description":"Key in the request parameters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credentials/migrate-encryption":{"post":{"tags":["credential management"],"summary":"Migrate Encryption Endpoint","description":"Re-encrypt all at-rest credentials into the AES-256-GCM (``v2:gcm:``) format.\n\nAdmin only. Requires ``general_settings.encryption_algorithm: aes-256-gcm``.\nIdempotent and resumable — re-running skips already-migrated values. Pass\n``dry_run=true`` for a non-mutating scan (equivalent to ``--check``).","operationId":"migrate_encryption_endpoint_credentials_migrate_encryption_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","description":"If true, scan and report without writing any changes.","default":false,"title":"Dry Run"},"description":"If true, scan and report without writing any changes."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/credentials/migrate-encryption/check":{"get":{"tags":["credential management"],"summary":"Check Encryption Endpoint","description":"Read-only residual scan for compliance attestation. Reports how many at-rest\nvalues are still in the legacy format. ``residual_legacy == 0`` attests no\nlegacy ciphertext remains. Admin only; performs no writes.","operationId":"check_encryption_endpoint_credentials_migrate_encryption_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/key/regenerate":{"post":{"tags":["key management"],"summary":"Regenerate Key Fn","description":"Regenerate an existing API key while optionally updating its parameters.\n\nParameters:\n- key: str (path parameter) - The key to regenerate\n- data: Optional[RegenerateKeyRequest] - Request body containing optional parameters to update\n    - key: Optional[str] - The key to regenerate.\n    - new_master_key: Optional[str] - The new master key to use, if key is the master key.\n    - new_key: Optional[str] - The new key to use, if key is not the master key. Must start with 'sk-' and be at least 16 characters long. If both set, new_master_key will be used.\n    - key_alias: Optional[str] - User-friendly key alias\n    - user_id: Optional[str] - User ID associated with key\n    - team_id: Optional[str] - Team ID associated with key\n    - models: Optional[list] - Model_name's a user is allowed to call\n    - tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)\n    - spend: Optional[float] - Amount spent by key\n    - max_budget: Optional[float] - Max budget for key\n    - model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}\n    - budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n    - budget_duration: Optional[str] - Budget reset period (\"30d\", \"1h\", etc.)\n    - soft_budget: Optional[float] - Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.\n    - max_parallel_requests: Optional[int] - Rate limit for parallel requests\n    - metadata: Optional[dict] - Metadata for key. Example {\"team\": \"core-infra\", \"app\": \"app2\"}\n    - tpm_limit: Optional[int] - Tokens per minute limit\n    - rpm_limit: Optional[int] - Requests per minute limit\n    - model_rpm_limit: Optional[dict] - Model-specific RPM limits {\"gpt-4\": 100, \"claude-v1\": 200}\n    - model_tpm_limit: Optional[dict] - Model-specific TPM limits {\"gpt-4\": 100000, \"claude-v1\": 200000}\n    - allowed_cache_controls: Optional[list] - List of allowed cache control values\n    - duration: Optional[str] - Key validity duration (\"30d\", \"1h\", etc.)\n    - permissions: Optional[dict] - Key-specific permissions\n    - guardrails: Optional[List[str]] - List of active guardrails for the key\n    - blocked: Optional[bool] - Whether the key is blocked\n    - grace_period: Optional[str] - Duration to keep old key valid after rotation (e.g. \"24h\", \"2d\"). Omitted = immediate revoke. Env: LITELLM_KEY_ROTATION_GRACE_PERIOD\n\n\nReturns:\n- GenerateKeyResponse containing the new key and its updated parameters\n\nExample:\n```bash\ncurl --location --request POST 'http://localhost:4000/key/sk-1234/regenerate'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"max_budget\": 100,\n    \"metadata\": {\"team\": \"core-infra\"},\n    \"models\": [\"gpt-4\", \"gpt-3.5-turbo\"]\n}'\n```\n\nNote: This is an Enterprise feature. It requires a premium license to use.","operationId":"regenerate_key_fn_key_regenerate_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RegenerateKeyRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GenerateKeyResponse"},{"type":"null"}],"title":"Response Regenerate Key Fn Key Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/{key}/regenerate":{"post":{"tags":["key management"],"summary":"Regenerate Key Fn","description":"Regenerate an existing API key while optionally updating its parameters.\n\nParameters:\n- key: str (path parameter) - The key to regenerate\n- data: Optional[RegenerateKeyRequest] - Request body containing optional parameters to update\n    - key: Optional[str] - The key to regenerate.\n    - new_master_key: Optional[str] - The new master key to use, if key is the master key.\n    - new_key: Optional[str] - The new key to use, if key is not the master key. Must start with 'sk-' and be at least 16 characters long. If both set, new_master_key will be used.\n    - key_alias: Optional[str] - User-friendly key alias\n    - user_id: Optional[str] - User ID associated with key\n    - team_id: Optional[str] - Team ID associated with key\n    - models: Optional[list] - Model_name's a user is allowed to call\n    - tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)\n    - spend: Optional[float] - Amount spent by key\n    - max_budget: Optional[float] - Max budget for key\n    - model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {\"gpt-4\": {\"budget_limit\": 0.0005, \"time_period\": \"30d\"}}\n    - budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n    - budget_duration: Optional[str] - Budget reset period (\"30d\", \"1h\", etc.)\n    - soft_budget: Optional[float] - Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.\n    - max_parallel_requests: Optional[int] - Rate limit for parallel requests\n    - metadata: Optional[dict] - Metadata for key. Example {\"team\": \"core-infra\", \"app\": \"app2\"}\n    - tpm_limit: Optional[int] - Tokens per minute limit\n    - rpm_limit: Optional[int] - Requests per minute limit\n    - model_rpm_limit: Optional[dict] - Model-specific RPM limits {\"gpt-4\": 100, \"claude-v1\": 200}\n    - model_tpm_limit: Optional[dict] - Model-specific TPM limits {\"gpt-4\": 100000, \"claude-v1\": 200000}\n    - allowed_cache_controls: Optional[list] - List of allowed cache control values\n    - duration: Optional[str] - Key validity duration (\"30d\", \"1h\", etc.)\n    - permissions: Optional[dict] - Key-specific permissions\n    - guardrails: Optional[List[str]] - List of active guardrails for the key\n    - blocked: Optional[bool] - Whether the key is blocked\n    - grace_period: Optional[str] - Duration to keep old key valid after rotation (e.g. \"24h\", \"2d\"). Omitted = immediate revoke. Env: LITELLM_KEY_ROTATION_GRACE_PERIOD\n\n\nReturns:\n- GenerateKeyResponse containing the new key and its updated parameters\n\nExample:\n```bash\ncurl --location --request POST 'http://localhost:4000/key/sk-1234/regenerate'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"max_budget\": 100,\n    \"metadata\": {\"team\": \"core-infra\"},\n    \"models\": [\"gpt-4\", \"gpt-3.5-turbo\"]\n}'\n```\n\nNote: This is an Enterprise feature. It requires a premium license to use.","operationId":"regenerate_key_fn_key__key__regenerate_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RegenerateKeyRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GenerateKeyResponse"},{"type":"null"}],"title":"Response Regenerate Key Fn Key  Key  Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/{key}/reset_spend":{"post":{"tags":["key management"],"summary":"Reset Key Spend Fn","operationId":"reset_key_spend_fn_key__key__reset_spend_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetSpendRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Key Spend Fn Key  Key  Reset Spend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/list":{"get":{"tags":["key management"],"summary":"List Keys","description":"List all keys for a given user / team / organization.\n\nParameters:\n    expand: Optional[List[str]] - Expand related objects (e.g. 'user' to include user information)\n    status: Optional[str] - Filter by status. Currently supports \"deleted\" to query deleted keys.\n\nReturns:\n    {\n        \"keys\": List[str] or List[UserAPIKeyAuth],\n        \"total_count\": int,\n        \"current_page\": int,\n        \"total_pages\": int,\n    }\n\nWhen expand includes \"user\", each key object will include a \"user\" field with the associated user object.\nNote: When expand=user is specified, full key objects are returned regardless of the return_full_object parameter.","operationId":"list_keys_key_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":10,"title":"Size"},"description":"Page size"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by user ID. Exact match by default; set substring_matching=true (admin only) for case-insensitive substring matching.","title":"User Id"},"description":"Filter keys by user ID. Exact match by default; set substring_matching=true (admin only) for case-insensitive substring matching."},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by team ID","title":"Team Id"},"description":"Filter keys by team ID"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by organization ID","title":"Organization Id"},"description":"Filter keys by organization ID"},{"name":"key_hash","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by key hash","title":"Key Hash"},"description":"Filter keys by key hash"},{"name":"key_alias","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by key alias. Exact match by default; set substring_matching=true (admin only) for case-insensitive substring matching.","title":"Key Alias"},"description":"Filter keys by key alias. Exact match by default; set substring_matching=true (admin only) for case-insensitive substring matching."},{"name":"return_full_object","in":"query","required":false,"schema":{"type":"boolean","description":"Return full key object","default":false,"title":"Return Full Object"},"description":"Return full key object"},{"name":"include_team_keys","in":"query","required":false,"schema":{"type":"boolean","description":"Include all keys for teams that user is an admin of.","default":false,"title":"Include Team Keys"},"description":"Include all keys for teams that user is an admin of."},{"name":"include_created_by_keys","in":"query","required":false,"schema":{"type":"boolean","description":"Include keys created by the user","default":false,"title":"Include Created By Keys"},"description":"Include keys created by the user"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (e.g. 'user_id', 'created_at', 'spend')","title":"Sort By"},"description":"Column to sort by (e.g. 'user_id', 'created_at', 'spend')"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Sort order ('asc' or 'desc')","default":"desc","title":"Sort Order"},"description":"Sort order ('asc' or 'desc')"},{"name":"expand","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Expand related objects (e.g. 'user')","title":"Expand"},"description":"Expand related objects (e.g. 'user')"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (e.g. 'deleted')","title":"Status"},"description":"Filter by status (e.g. 'deleted')"},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by project ID","title":"Project Id"},"description":"Filter keys by project ID"},{"name":"access_group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by access group ID","title":"Access Group Id"},"description":"Filter keys by access group ID"},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by agent ID","title":"Agent Id"},"description":"Filter keys by agent ID"},{"name":"substring_matching","in":"query","required":false,"schema":{"type":"boolean","description":"If true (proxy admins only), match user_id/key_alias as case-insensitive substrings instead of exact values. Defaults to false: /key/list matched these exactly before substring search was added, and an exact user_id/key_alias filter must never return another user's keys.","default":false,"title":"Substring Matching"},"description":"If true (proxy admins only), match user_id/key_alias as case-insensitive substrings instead of exact values. Defaults to false: /key/list matched these exactly before substring search was added, and an exact user_id/key_alias filter must never return another user's keys."},{"name":"expires","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter keys by expiration. 'expired' returns keys whose expires is in the past; 'active' returns keys that never expire or expire in the future. Omit to return keys regardless of expiration.","title":"Expires"},"description":"Filter keys by expiration. 'expired' returns keys whose expires is in the past; 'active' returns keys that never expire or expire in the future. Omit to return keys regardless of expiration."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyListResponseObject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/aliases":{"get":{"tags":["key management"],"summary":"Key Aliases","description":"Lists key aliases with pagination and optional search.\n\nNon-admin users only see aliases for keys they own or keys belonging to\ntheir teams.\n\nReturns:\n    {\n        \"aliases\": List[str],\n        \"total_count\": int,\n        \"current_page\": int,\n        \"total_pages\": int,\n        \"size\": int,\n    }","operationId":"key_aliases_key_aliases_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search key aliases (case-insensitive partial match)","title":"Search"},"description":"Search key aliases (case-insensitive partial match)"},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter aliases to keys belonging to this team","title":"Team Id"},"description":"Filter aliases to keys belonging to this team"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Key Aliases Key Aliases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/block":{"post":{"tags":["key management"],"summary":"Block Key","description":"Block an Virtual key from making any requests.\n\nParameters:\n- key: str - The key to block. Can be either the unhashed key (sk-...) or the hashed key value\n\n Example:\n```bash\ncurl --location 'http://0.0.0.0:4000/key/block'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"key\": \"sk-Fn8Ej39NxjAXrvpUGKghGw\"\n}'\n```\n\nNote: This is an admin-only endpoint. Only proxy admins, team admins, or org admins can block keys.","operationId":"block_key_key_block_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_VerificationToken"},{"type":"null"}],"title":"Response Block Key Key Block Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/unblock":{"post":{"tags":["key management"],"summary":"Unblock Key","description":"Unblock a Virtual key to allow it to make requests again.\n\nParameters:\n- key: str - The key to unblock. Can be either the unhashed key (sk-...) or the hashed key value\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/key/unblock'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"key\": \"sk-Fn8Ej39NxjAXrvpUGKghGw\"\n}'\n```\n\nNote: This is an admin-only endpoint. Only proxy admins, team admins, or org admins can unblock keys.","operationId":"unblock_key_key_unblock_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/health":{"post":{"tags":["key management"],"summary":"Key Health","description":"Check the health of the key\n\nChecks:\n- If key based logging is configured correctly - sends a test log\n\nUsage \n\nPass the key in the request header\n\n```bash\ncurl -X POST \"http://localhost:4000/key/health\"      -H \"Authorization: Bearer sk-1234\"      -H \"Content-Type: application/json\"\n```\n\nResponse when logging callbacks are setup correctly:\n\n```json\n{\n  \"key\": \"healthy\",\n  \"logging_callbacks\": {\n    \"callbacks\": [\n      \"gcs_bucket\"\n    ],\n    \"status\": \"healthy\",\n    \"details\": \"No logger exceptions triggered, system is healthy. Manually check if logs were sent to ['gcs_bucket']\"\n  }\n}\n```\n\n\nResponse when logging callbacks are not setup correctly:\n```json\n{\n  \"key\": \"unhealthy\",\n  \"logging_callbacks\": {\n    \"callbacks\": [\n      \"gcs_bucket\"\n    ],\n    \"status\": \"unhealthy\",\n    \"details\": \"Logger exceptions triggered, system is unhealthy: Failed to load vertex credentials. Check to see if credentials containing partial/invalid information.\"\n  }\n}\n```","operationId":"key_health_key_health_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyHealthResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/user/new":{"post":{"tags":["Internal User management"],"summary":"New User","description":"Use this to create a new INTERNAL user with a budget.\nInternal Users can access LiteLLM Admin UI to make keys, request access to models.\nThis creates a new user and generates a new api key for the new user. The new api key is returned.\n\nReturns user id, budget + new key.\n\nParameters:\n- user_id: Optional[str] - Specify a user id. If not set, a unique id will be generated.\n- user_alias: Optional[str] - A descriptive name for you to know who this user id refers to.\n- teams: Optional[list] - specify a list of team id's a user belongs to.\n- user_email: Optional[str] - Specify a user email.\n- send_invite_email: Optional[bool] - Specify if an invite email should be sent.\n- user_role: Optional[str] - Specify a user role - \"proxy_admin\", \"proxy_admin_viewer\", \"internal_user\", \"internal_user_viewer\", \"team\", \"customer\". Info about each role here: `https://github.com/BerriAI/litellm/litellm/proxy/_types.py#L20`\n- max_budget: Optional[float] - Specify max budget for a given user.\n- budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\"), months (\"1mo\").\n- models: Optional[list] - Model_name's a user is allowed to call. (if empty, key is allowed to call all models). Set to ['no-default-models'] to block all model access. Restricting user to only team-based model access.\n- tpm_limit: Optional[int] - Specify tpm limit for a given user (Tokens per minute)\n- rpm_limit: Optional[int] - Specify rpm limit for a given user (Requests per minute)\n- auto_create_key: bool - Default=True. Flag used for returning a key as part of the /user/new response\n- aliases: Optional[dict] - Model aliases for the user - [Docs](https://litellm.vercel.app/docs/proxy/virtual_keys#model-aliases)\n- config: Optional[dict] - [DEPRECATED PARAM] User-specific config.\n- allowed_cache_controls: Optional[list] - List of allowed cache control values. Example - [\"no-cache\", \"no-store\"]. See all values - https://docs.litellm.ai/docs/proxy/caching#turn-on--off-caching-per-request-\n- blocked: Optional[bool] - [Not Implemented Yet] Whether the user is blocked.\n- guardrails: Optional[List[str]] - [Not Implemented Yet] List of active guardrails for the user\n- policies: Optional[List[str]] - List of policy names to apply to the user. Policies define guardrails, conditions, and inheritance rules.\n- permissions: Optional[dict] - [Not Implemented Yet] User-specific permissions, eg. turning off pii masking.\n- metadata: Optional[dict] - Metadata for user, store information for user. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n- max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.\n- soft_budget: Optional[float] - Get alerts when user crosses given budget, doesn't block requests.\n- model_max_budget: Optional[dict] - Model-specific max budget for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-budgets-to-keys)\n- budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n- model_rpm_limit: Optional[float] - Model-specific rpm limit for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-limits-to-keys)\n- mcp_rpm_limit: Optional[dict] - Per-MCP-server rpm limit, keyed by MCP server name {\"github\": 100, \"slack\": 200}. Enforced for keys and teams only; values set on a user are stored but not enforced per user.\n- tag_rpm_limit: Optional[dict] - Per-request-tag rpm limit, keyed by request tag {\"cell-1\": 1000, \"cell-2\": 500}. Enforced for keys only; values set on a user are stored but not enforced per user.\n- model_tpm_limit: Optional[float] - Model-specific tpm limit for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-limits-to-keys)\n- spend: Optional[float] - Amount spent by user. Default is 0. Will be updated by proxy whenever user is used. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\"), months (\"1mo\").\n- agent_id: Optional[str] - The agent id associated with the user.\n- team_id: Optional[str] - [DEPRECATED PARAM] The team id of the user. Default is None.\n- duration: Optional[str] - Duration for the key auto-created on `/user/new`. Default is None.\n- key_alias: Optional[str] - Alias for the key auto-created on `/user/new`. Default is None.\n- sso_user_id: Optional[str] - The id of the user in the SSO provider.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - internal user-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\"], \"mcp_servers\": [\"github\"], \"mcp_tool_permissions\": {\"github\": [\"list_issues\"]}}. The MCP grants act as a ceiling on every key this user holds. IF null or {} then no object permission.\n- prompts: Optional[List[str]] - List of allowed prompts for the user. If specified, the user will only be able to use these specific prompts.\n- organizations: List[str] - List of organization id's the user is a member of\n- budget_limits: Optional[list] - List of concurrent budget windows for the user. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\nReturns:\n- key: (str) The generated api key for the user\n- expires: (datetime) Datetime object for when key expires.\n- user_id: (str) Unique user id - used for tracking spend across multiple keys for same user id.\n- max_budget: (float|None) Max budget for given user.\n\nUsage Example \n\n```shell\n curl -X POST \"http://localhost:4000/user/new\"      -H \"Content-Type: application/json\"      -H \"Authorization: Bearer sk-1234\"      -d '{\n     \"username\": \"new_user\",\n     \"email\": \"new_user@example.com\"\n }'\n```","operationId":"new_user_user_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewUserRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/user/info":{"get":{"tags":["Internal User management"],"summary":"User Info","description":"[10/07/2024]\nNote: To get all users (+pagination), use `/user/list` endpoint.\n\n\nUse this to get user information. (user row + all user key info)\n\nExample request\n```\ncurl -X GET 'http://localhost:4000/user/info?user_id=krrish7%40berri.ai'     --header 'Authorization: Bearer sk-1234'\n```","operationId":"user_info_user_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID in the request parameters","title":"User Id"},"description":"User ID in the request parameters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/user/info":{"get":{"tags":["Internal User management"],"summary":"User Info V2","description":"Lightweight endpoint to get user info. Returns only the user object — no keys, no teams objects.\n\nThis is the v2 replacement for /user/info, designed to avoid the \"god endpoint\" problem\nwhere the old endpoint loaded all keys and teams into memory.\n\nAccess control:\n- Proxy admins can query any user\n- Team admins can query users within their teams\n- Internal users can only query themselves (omit user_id or pass own)\n- Returns 404 for non-existent users or unauthorized access\n\nExample request:\n```\ncurl -X GET 'http://localhost:4000/v2/user/info?user_id=user123' \\\n--header 'Authorization: Bearer sk-1234'\n```","operationId":"user_info_v2_v2_user_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID in the request parameters","title":"User Id"},"description":"User ID in the request parameters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/update":{"post":{"tags":["Internal User management"],"summary":"User Update","description":"Example curl \n\n```\ncurl --location 'http://0.0.0.0:4000/user/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"user_id\": \"test-litellm-user-4\",\n    \"user_role\": \"proxy_admin_viewer\"\n}'\n```\n\nParameters:\n    - user_id: Optional[str] - Specify a user id. If not set, a unique id will be generated.\n    - user_email: Optional[str] - Specify a user email.\n    - password: Optional[str] - Specify a user password.\n    - user_alias: Optional[str] - A descriptive name for you to know who this user id refers to.\n    - teams: Optional[list] - specify a list of team id's a user belongs to.\n    - send_invite_email: Optional[bool] - Specify if an invite email should be sent.\n    - user_role: Optional[str] - Specify a user role - \"proxy_admin\", \"proxy_admin_viewer\", \"internal_user\", \"internal_user_viewer\", \"team\", \"customer\". Info about each role here: `https://github.com/BerriAI/litellm/litellm/proxy/_types.py#L20`\n    - max_budget: Optional[float] - Specify max budget for a given user.\n    - budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\"), months (\"1mo\").\n    - models: Optional[list] - Model_name's a user is allowed to call. (if empty, key is allowed to call all models)\n    - tpm_limit: Optional[int] - Specify tpm limit for a given user (Tokens per minute)\n    - rpm_limit: Optional[int] - Specify rpm limit for a given user (Requests per minute)\n    - auto_create_key: bool - Default=True. Flag used for returning a key as part of the /user/new response\n    - aliases: Optional[dict] - Model aliases for the user - [Docs](https://litellm.vercel.app/docs/proxy/virtual_keys#model-aliases)\n    - config: Optional[dict] - [DEPRECATED PARAM] User-specific config.\n    - allowed_cache_controls: Optional[list] - List of allowed cache control values. Example - [\"no-cache\", \"no-store\"]. See all values - https://docs.litellm.ai/docs/proxy/caching#turn-on--off-caching-per-request-\n    - blocked: Optional[bool] - [Not Implemented Yet] Whether the user is blocked.\n    - guardrails: Optional[List[str]] - [Not Implemented Yet] List of active guardrails for the user\n    - policies: Optional[List[str]] - List of policy names to apply to the user. Policies define guardrails, conditions, and inheritance rules.\n    - permissions: Optional[dict] - [Not Implemented Yet] User-specific permissions, eg. turning off pii masking.\n    - metadata: Optional[dict] - Metadata for user, store information for user. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n    - max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.\n    - soft_budget: Optional[float] - Get alerts when user crosses given budget, doesn't block requests.\n    - model_max_budget: Optional[dict] - Model-specific max budget for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-budgets-to-keys)\n    - budget_fallbacks: Optional[Dict[str, List[str]]] - Per-model fallback chain tried in order when that model's own `model_max_budget` is exceeded, e.g. {\"gpt-4o\": [\"gpt-4o-mini\"]}.\n    - model_rpm_limit: Optional[float] - Model-specific rpm limit for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-limits-to-keys)\n    - mcp_rpm_limit: Optional[dict] - Per-MCP-server rpm limit, keyed by MCP server name {\"github\": 100, \"slack\": 200}. Enforced for keys and teams only; values set on a user are stored but not enforced per user.\n    - tag_rpm_limit: Optional[dict] - Per-request-tag rpm limit, keyed by request tag {\"cell-1\": 1000, \"cell-2\": 500}. Enforced for keys only; values set on a user are stored but not enforced per user.\n    - model_tpm_limit: Optional[float] - Model-specific tpm limit for user. [Docs](https://docs.litellm.ai/docs/proxy/users#add-model-specific-limits-to-keys)\n    - spend: Optional[float] - Amount spent by user. Default is 0. Will be updated by proxy whenever user is used. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\"), months (\"1mo\").\n    - agent_id: Optional[str] - The agent id associated with the user.\n    - team_id: Optional[str] - [DEPRECATED PARAM] The team id of the user. Default is None.\n    - duration: Optional[str] - [NOT IMPLEMENTED].\n    - key_alias: Optional[str] - [NOT IMPLEMENTED].\n    - object_permission: Optional[LiteLLM_ObjectPermissionBase] - internal user-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\"], \"mcp_servers\": [\"github\"], \"mcp_tool_permissions\": {\"github\": [\"list_issues\"]}}. The MCP grants act as a ceiling on every key this user holds. IF null or {} then no object permission.\n    - prompts: Optional[List[str]] - List of allowed prompts for the user. If specified, the user will only be able to use these specific prompts.\n    - budget_limits: Optional[list] - List of concurrent budget windows for the user. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].","operationId":"user_update_user_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/user/bulk_update":{"post":{"tags":["Internal User management"],"summary":"Bulk User Update","description":"Bulk update multiple users at once.\n\nThis endpoint allows updating multiple users in a single request. Each user update\nis processed independently - if some updates fail, others will still succeed.\n\nParameters:\n- users: Optional[List[UpdateUserRequest]] - List of specific user update requests\n- all_users: Optional[bool] - Set to true to update all users in the system\n- user_updates: Optional[UpdateUserRequest] - Updates to apply when all_users=True\n\nReturns:\n- results: List of individual update results\n- total_requested: Total number of users requested for update\n- successful_updates: Number of successful updates\n- failed_updates: Number of failed updates\n\nExample request for specific users:\n```bash\ncurl --location 'http://0.0.0.0:4000/user/bulk_update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"users\": [\n        {\n            \"user_id\": \"user1\",\n            \"user_role\": \"internal_user\",\n            \"max_budget\": 100.0\n        },\n        {\n            \"user_email\": \"user2@example.com\", \n            \"user_role\": \"internal_user_viewer\",\n            \"max_budget\": 50.0\n        }\n    ]\n}'\n```\n\nExample request for all users:\n```bash\ncurl --location 'http://0.0.0.0:4000/user/bulk_update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"all_users\": true,\n    \"user_updates\": {\n        \"user_role\": \"internal_user\",\n        \"max_budget\": 50.0\n    }\n}'\n```","operationId":"bulk_user_update_user_bulk_update_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/list":{"get":{"tags":["Internal User management"],"summary":"Get Users","description":"Get a paginated list of users with filtering and sorting options.\n\nParameters:\n    role: Optional[str]\n        Filter users by role. Can be one of:\n        - proxy_admin\n        - proxy_admin_viewer\n        - internal_user\n        - internal_user_viewer\n    user_ids: Optional[str]\n        Get list of users by user_ids. Comma separated list of user_ids.\n    sso_ids: Optional[str]\n        Get list of users by sso_ids. Comma separated list of sso_ids.\n    user_email: Optional[str]\n        Filter users by partial email match\n    team: Optional[str]\n        Filter users by team id. Will match if user has this team in their teams array.\n    page: int\n        The page number to return\n    page_size: int\n        The number of items per page\n    sort_by: Optional[str]\n        Column to sort by (e.g. 'user_id', 'user_email', 'created_at', 'spend')\n    sort_order: Optional[str]\n        Sort order ('asc' or 'desc')","operationId":"get_users_user_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter users by role","title":"Role"},"description":"Filter users by role"},{"name":"user_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get list of users by user_ids","title":"User Ids"},"description":"Get list of users by user_ids"},{"name":"sso_user_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get list of users by sso_user_id","title":"Sso User Ids"},"description":"Get list of users by sso_user_id"},{"name":"user_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter users by partial email match","title":"User Email"},"description":"Filter users by partial email match"},{"name":"team","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter users by team id","title":"Team"},"description":"Filter users by team id"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":25,"title":"Page Size"},"description":"Number of items per page"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (e.g. 'user_id', 'user_email', 'created_at', 'spend')","title":"Sort By"},"description":"Column to sort by (e.g. 'user_id', 'user_email', 'created_at', 'spend')"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Sort order ('asc' or 'desc')","default":"asc","title":"Sort Order"},"description":"Sort order ('asc' or 'desc')"},{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter users by organization membership. Comma-separated list of org IDs.","title":"Organization Ids"},"description":"Filter users by organization membership. Comma-separated list of org IDs."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/delete":{"post":{"tags":["Internal User management"],"summary":"Delete User","description":"delete user and associated user keys\n\n```\ncurl --location 'http://0.0.0.0:4000/user/delete' \n--header 'Authorization: Bearer sk-1234' \n--header 'Content-Type: application/json' \n--data-raw '{\n    \"user_ids\": [\"45e3e396-ee08-4a61-a88e-16b3ce7e0849\"]\n}'\n```\n\nParameters:\n- user_ids: List[str] - The list of user id's to be deleted.","operationId":"delete_user_user_delete_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/daily/activity":{"get":{"tags":["Budget & Spend Tracking","Internal User management"],"summary":"Get User Daily Activity","description":"[BETA] This is a beta endpoint. It will change.\n\nMeant to optimize querying spend data for analytics for a user.\n\nReturns:\n(by date)\n- spend\n- prompt_tokens\n- completion_tokens\n- cache_read_input_tokens\n- cache_creation_input_tokens\n- total_tokens\n- api_requests\n- breakdown by model, api_key, provider","operationId":"get_user_daily_activity_user_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date in YYYY-MM-DD format","title":"Start Date"},"description":"Start date in YYYY-MM-DD format"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date in YYYY-MM-DD format","title":"End Date"},"description":"End date in YYYY-MM-DD format"},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific model","title":"Model"},"description":"Filter by specific model"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific API key","title":"Api Key"},"description":"Filter by specific API key"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id.","title":"User Id"},"description":"Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number for pagination","default":1,"title":"Page"},"description":"Page number for pagination"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript's Date.getTimezoneOffset() convention.","title":"Timezone"},"description":"Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript's Date.getTimezoneOffset() convention."},{"name":"include_current_utc_day","in":"query","required":false,"schema":{"type":"boolean","description":"When the range ends on the caller's current local day, extend it to today's UTC bucket so spend written after the caller's local midnight (in UTC terms) is included. Requires the timezone parameter. Historical ranges are never extended.","default":false,"title":"Include Current Utc Day"},"description":"When the range ends on the caller's current local day, extend it to today's UTC bucket so spend written after the caller's local midnight (in UTC terms) is included. Requires the timezone parameter. Historical ranges are never extended."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/daily/activity/aggregated":{"get":{"tags":["Budget & Spend Tracking","Internal User management"],"summary":"Get User Daily Activity Aggregated","description":"Aggregated analytics for a user's daily activity without pagination.\nReturns the same response shape as the paginated endpoint with page metadata set to single-page.","operationId":"get_user_daily_activity_aggregated_user_daily_activity_aggregated_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date in YYYY-MM-DD format","title":"Start Date"},"description":"Start date in YYYY-MM-DD format"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date in YYYY-MM-DD format","title":"End Date"},"description":"End date in YYYY-MM-DD format"},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific model","title":"Model"},"description":"Filter by specific model"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific API key","title":"Api Key"},"description":"Filter by specific API key"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id.","title":"User Id"},"description":"Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id."},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript's Date.getTimezoneOffset() convention.","title":"Timezone"},"description":"Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript's Date.getTimezoneOffset() convention."},{"name":"include_current_utc_day","in":"query","required":false,"schema":{"type":"boolean","description":"When the range ends on the caller's current local day, extend it to today's UTC bucket so spend written after the caller's local midnight (in UTC terms) is included. Requires the timezone parameter. Historical ranges are never extended.","default":false,"title":"Include Current Utc Day"},"description":"When the range ends on the caller's current local day, extend it to today's UTC bucket so spend written after the caller's local midnight (in UTC terms) is included. Requires the timezone parameter. Historical ranges are never extended."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/new":{"post":{"tags":["team management"],"summary":"New Team","description":"Allow users to create a new team. Apply user permissions to their team.\n\n👉 [Detailed Doc on setting team budgets](https://docs.litellm.ai/docs/proxy/team_budgets)\n\n\nParameters:\n- team_alias: Optional[str] - User defined team alias\n- team_id: Optional[str] - The team id of the user. If none passed, we'll generate it.\n- members_with_roles: List[{\"role\": \"admin\" or \"user\", \"user_id\": \"<user-id>\"}] - A list of users and their roles in the team. Get user_id when making a new user via `/user/new`.\n- team_member_permissions: Optional[List[str]] - A list of routes that non-admin team members can access. example: [\"/key/generate\", \"/key/update\", \"/key/delete\"]\n- metadata: Optional[dict] - Metadata for team, store information for team. Example metadata = {\"extra_info\": \"some info\"}\n- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit for this team - applied across all keys for this team.\n- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit for this team - applied across all keys for this team.\n- default_estimated_output_tokens: Optional[int] - Expected output tokens reserved for TPM limiting when a request omits max_tokens, for keys on this team that do not set their own. Positive integer.\n- default_estimated_output_tokens_per_model: Optional[Dict[str, int]] - Per-model override of the above. Example: {\"gpt-4\": 4096, \"gpt-3.5-turbo\": 1024}\n- mcp_rpm_limit: Optional[Dict[str, int]] - Per-MCP-server RPM limit for this team, keyed by MCP server name (alias if set, else the configured name). Example: {\"github\": 100, \"slack\": 200}. Applied across all keys for this team.\n- tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for this team - all keys with this team_id will have at max this TPM limit\n- rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for this team - all keys associated with this team_id will have at max this RPM limit\n- rpm_limit_type: Optional[Literal[\"guaranteed_throughput\", \"best_effort_throughput\"]] - The type of RPM limit enforcement. Use \"guaranteed_throughput\" to raise an error if overallocating RPM, or \"best_effort_throughput\" for best effort enforcement.\n- tpm_limit_type: Optional[Literal[\"guaranteed_throughput\", \"best_effort_throughput\"]] - The type of TPM limit enforcement. Use \"guaranteed_throughput\" to raise an error if overallocating TPM, or \"best_effort_throughput\" for best effort enforcement.\n- max_budget: Optional[float] - The maximum budget allocated to the team - all keys for this team_id will have at max this max_budget\n- soft_budget: Optional[float] - The soft budget threshold for the team. If max_budget is set, soft_budget must be strictly lower than max_budget. Can be set independently if max_budget is not set.\n- budget_duration: Optional[str] - The duration of the budget for the team. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- models: Optional[list] - A list of models associated with the team - all keys for this team_id will have at most, these models. If empty, assumes all models are allowed.\n- blocked: bool - Flag indicating if the team is blocked or not - will stop all calls from keys with this team_id.\n- members: Optional[List] - Control team members via `/team/member/add` and `/team/member/delete`.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- prompts: Optional[List[str]] - List of prompts that the team is allowed to use.\n- organization_id: Optional[str] - The organization id of the team. Default is None. Create via `/organization/new`.\n- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)\n- guardrails: Optional[List[str]] - Guardrails for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails)\n- policies: Optional[List[str]] - Policies for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails/guardrail_policies)\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - team-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- team_member_budget: Optional[float] - The maximum budget allocated to an individual team member.\n- team_member_budget_duration: Optional[str] - The duration of the budget for the team member. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- team_member_rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for individual team members.\n- team_member_tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for individual team members.\n- team_member_key_duration: Optional[str] - The duration for a team member's key. e.g. \"1d\", \"1w\", \"1mo\"\n- allowed_passthrough_routes: Optional[List[str]] - List of allowed pass through routes for the team.\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- secret_manager_settings: Optional[dict] - Secret manager settings for the team. [Docs](https://docs.litellm.ai/docs/secret_managers/overview)\n- router_settings: Optional[UpdateRouterConfig] - team-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the team. Access groups define which models the team can access. Example - [\"access_group_1\", \"access_group_2\"].\n- enforced_file_expires_after: Optional[dict] - Enforced file expiration policy for the team. Keys created under this team will inherit this policy for file uploads. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- enforced_batch_output_expires_after: Optional[dict] - Enforced batch output file expiration policy for the team. Keys created under this team will inherit this policy for batch output files. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- budget_limits: Optional[list] - List of concurrent budget windows for the team. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n- default_team_member_models: Optional[List[str]] - Default models assigned to new team members when they join this team. Must be a subset of the team's models.\n\nReturns:\n- team_id: (str) Unique team id - used for tracking spend across multiple keys for same team id.\n\n_deprecated_params:\n- admins: list - A list of user_id's for the admin role\n- users: list - A list of user_id's for the user role\n\nExample Request:\n```\ncurl --location 'http://0.0.0.0:4000/team/new'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n  \"team_alias\": \"my-new-team_2\",\n  \"members_with_roles\": [{\"role\": \"admin\", \"user_id\": \"user-1234\"},\n    {\"role\": \"user\", \"user_id\": \"user-2434\"}]\n}'\n\n```\n\n ```\ncurl --location 'http://0.0.0.0:4000/team/new'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n            \"team_alias\": \"QA Prod Bot\",\n            \"max_budget\": 0.000000001,\n            \"budget_duration\": \"1d\"\n        }'\n```","operationId":"new_team_team_new_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_TeamTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/update":{"post":{"tags":["team management"],"summary":"Update Team","description":"Use `/team/member_add` AND `/team/member/delete` to add/remove new team members\n\nYou can now update team budget / rate limits via /team/update\n\nParameters:\n- team_id: str - The team id of the user. Required param.\n- team_alias: Optional[str] - User defined team alias\n- team_member_permissions: Optional[List[str]] - A list of routes that non-admin team members can access. example: [\"/key/generate\", \"/key/update\", \"/key/delete\"]\n- metadata: Optional[dict] - Metadata for team, store information for team. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n- tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for this team - all keys with this team_id will have at max this TPM limit\n- rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for this team - all keys associated with this team_id will have at max this RPM limit\n- max_budget: Optional[float] - The maximum budget allocated to the team - all keys for this team_id will have at max this max_budget\n- soft_budget: Optional[float] - The soft budget threshold for the team. If max_budget is set (either in the request or existing), soft_budget must be strictly lower than max_budget. Can be set independently if max_budget is not set.\n- budget_duration: Optional[str] - The duration of the budget for the team. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- models: Optional[list] - A list of models associated with the team - all keys for this team_id will have at most, these models. If empty, assumes all models are allowed.\n- prompts: Optional[List[str]] - List of prompts that the team is allowed to use.\n- blocked: bool - Flag indicating if the team is blocked or not - will stop all calls from keys with this team_id.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- organization_id: Optional[str] - The organization id of the team. Default is None. Create via `/organization/new`.\n- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)\n- guardrails: Optional[List[str]] - Guardrails for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails)\n- policies: Optional[List[str]] - Policies for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails/guardrail_policies)\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - team-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- team_member_budget: Optional[float] - The maximum budget allocated to an individual team member.\n- team_member_budget_duration: Optional[str] - The duration of the budget for the team member. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- team_member_rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for individual team members.\n- team_member_tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for individual team members.\n- team_member_key_duration: Optional[str] - The duration for a team member's key. e.g. \"1d\", \"1w\", \"1mo\"\n- allowed_passthrough_routes: Optional[List[str]] - List of allowed pass through routes for the team.\n- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit per model for this team. Example: {\"gpt-4\": 100, \"gpt-3.5-turbo\": 200}\n- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit per model for this team. Example: {\"gpt-4\": 10000, \"gpt-3.5-turbo\": 20000}\n- default_estimated_output_tokens: Optional[int] - Expected output tokens reserved for TPM limiting when a request omits max_tokens, for keys on this team that do not set their own. Positive integer.\n- default_estimated_output_tokens_per_model: Optional[Dict[str, int]] - Per-model override of the above. Example: {\"gpt-4\": 4096, \"gpt-3.5-turbo\": 1024}\n- mcp_rpm_limit: Optional[Dict[str, int]] - Per-MCP-server RPM limit for this team, keyed by MCP server name (alias if set, else the configured name). Example: {\"github\": 100, \"slack\": 200}. Applied across all keys for this team.\nExample - update team TPM Limit\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- secret_manager_settings: Optional[dict] - Secret manager settings for the team. [Docs](https://docs.litellm.ai/docs/secret_managers/overview)\n- router_settings: Optional[UpdateRouterConfig] - team-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the team. Access groups define which models the team can access. Example - [\"access_group_1\", \"access_group_2\"].\n- enforced_file_expires_after: Optional[dict] - Enforced file expiration policy for the team. Keys created under this team will inherit this policy for file uploads. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- enforced_batch_output_expires_after: Optional[dict] - Enforced batch output file expiration policy for the team. Keys created under this team will inherit this policy for batch output files. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- budget_limits: Optional[list] - List of concurrent budget windows for the team. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n- default_team_member_models: Optional[List[str]] - Default models assigned to new team members when they join this team. Must be a subset of the team's models.\n\n```\ncurl --location 'http://0.0.0.0:4000/team/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"team_id\": \"8d916b1c-510d-4894-a334-1c16a93344f5\",\n    \"tpm_limit\": 100\n}'\n```\n\nExample - Update Team `max_budget` budget\n```\ncurl --location 'http://0.0.0.0:4000/team/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"team_id\": \"8d916b1c-510d-4894-a334-1c16a93344f5\",\n    \"max_budget\": 10\n}'\n```","operationId":"update_team_team_update_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/{team_id}":{"patch":{"tags":["team management"],"summary":"Patch Team","description":"Partially update a team using RFC 7386 JSON Merge Patch semantics.\n\n`team_id` is taken from the path; a `team_id` in the body is accepted only when it\nmatches. `metadata` is merged with the team's stored metadata rather than replacing\nit: an omitted key is preserved, `key: null` deletes it, and any other value\noverwrites (recursing into nested objects). Every other field behaves exactly like\n`POST /team/update` (omitted preserves, a value overwrites). Returns the full\nupdated team.\n\n```\ncurl --location --request PATCH 'http://0.0.0.0:4000/team/8d916b1c-510d-4894-a334-1c16a93344f5'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"metadata\": {\"cost_center\": \"1234\", \"deprecated_key\": null}\n}'\n```","operationId":"patch_team_team__team_id__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_TeamTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/member_add":{"post":{"tags":["team management"],"summary":"Team Member Add","description":"Add new members (either via user_email or user_id) to a team\n\nIf user doesn't exist, new user row will also be added to User Table\n\nOnly proxy_admin or admin of team, allowed to access this endpoint.\n```\n\ncurl -X POST 'http://0.0.0.0:4000/team/member_add'     -H 'Authorization: Bearer sk-1234'     -H 'Content-Type: application/json'     -d '{\"team_id\": \"45e3e396-ee08-4a61-a88e-16b3ce7e0849\", \"member\": {\"role\": \"user\", \"user_id\": \"krrish247652@berri.ai\"}}'\n\n```","operationId":"team_member_add_team_member_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberAddRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamAddMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/member_delete":{"post":{"tags":["team management"],"summary":"Team Member Delete","description":"[BETA]\n\ndelete members (either via user_email or user_id) from a team\n\nIf user doesn't exist, an exception will be raised\n```\ncurl -X POST 'http://0.0.0.0:8000/team/member_delete' \n-H 'Authorization: Bearer sk-1234' \n-H 'Content-Type: application/json' \n-d '{\n    \"team_id\": \"45e3e396-ee08-4a61-a88e-16b3ce7e0849\",\n    \"user_id\": \"krrish247652@berri.ai\"\n}'\n```","operationId":"team_member_delete_team_member_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/member_update":{"post":{"tags":["team management"],"summary":"Team Member Update","description":"[BETA]\n\nUpdate team member budgets and team member role","operationId":"team_member_update_team_member_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/bulk_member_add":{"post":{"tags":["team management"],"summary":"Bulk Team Member Add","description":"Bulk add multiple members to a team at once.\n\nThis endpoint reuses the same logic as /team/member_add but provides a bulk-friendly response format.\n\nParameters:\n- team_id: str - The ID of the team to add members to\n- members: List[Member] - List of members to add to the team\n- all_users: Optional[bool] - Flag to add all users on Proxy to the team\n- max_budget_in_team: Optional[float] - Maximum budget allocated to each user within the team\n\nReturns:\n- results: List of individual member addition results\n- total_requested: Total number of members requested for addition\n- successful_additions: Number of successful additions  \n- failed_additions: Number of failed additions\n- updated_team: The updated team object\n\nExample request:\n```bash\ncurl --location 'http://0.0.0.0:4000/team/bulk_member_add'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"team_id\": \"team-1234\",\n    \"members\": [\n        {\n            \"user_id\": \"user1\",\n            \"role\": \"user\"\n        },\n        {\n            \"user_email\": \"user2@example.com\",\n            \"role\": \"admin\"\n        }\n    ],\n    \"max_budget_in_team\": 100.0\n}'\n```","operationId":"bulk_team_member_add_team_bulk_member_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTeamMemberAddRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTeamMemberAddResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/delete":{"post":{"tags":["team management"],"summary":"Delete Team","description":"delete team and associated team keys\n\nParameters:\n- team_ids: List[str] - Required. List of team IDs to delete. Example: [\"team-1234\", \"team-5678\"]\n\n```\ncurl --location 'http://0.0.0.0:4000/team/delete'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data-raw '{\n    \"team_ids\": [\"8d916b1c-510d-4894-a334-1c16a93344f5\"]\n}'\n```","operationId":"delete_team_team_delete_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/info":{"get":{"tags":["team management"],"summary":"Team Info","description":"get info on team + related keys\n\nParameters:\n- team_id: str - Required. The unique identifier of the team to get info on.\n\n```\ncurl --location 'http://localhost:4000/team/info?team_id=your_team_id_here'     --header 'Authorization: Bearer your_api_key_here'\n```","operationId":"team_info_team_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"query","required":false,"schema":{"type":"string","description":"Team ID in the request parameters","title":"Team Id"},"description":"Team ID in the request parameters"},{"name":"key_limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}],"description":"Limit the number of keys returned","title":"Key Limit"},"description":"Limit the number of keys returned"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/{team_id}/members/me":{"get":{"tags":["team management"],"summary":"Team Member Me","description":"Get the caller's own team-membership row for the given team.\n\nUsed by internal users to view their own spend, budget, budget reset\ndate, rate limits, and role within a team — without exposing other\nmembers' data. The caller is resolved from their API key; the path\n`/members/me` always refers to that caller.\n\nReturns 404 if the caller is not a member of the team.\n\n```\ncurl --location 'http://localhost:4000/team/your_team_id/members/me'     --header 'Authorization: Bearer your_api_key_here'\n```","operationId":"team_member_me_team__team_id__members_me_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/block":{"post":{"tags":["team management"],"summary":"Block Team","description":"Blocks all calls from keys with this team id.\n\nParameters:\n- team_id: str - Required. The unique identifier of the team to block.\n\nExample:\n```\ncurl --location 'http://0.0.0.0:4000/team/block'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"team_id\": \"team-1234\"\n}'\n```\n\nReturns:\n- The updated team record with blocked=True","operationId":"block_team_team_block_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockTeamRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/unblock":{"post":{"tags":["team management"],"summary":"Unblock Team","description":"Unblocks a previously blocked team, re-enabling calls from keys with this team id.\n\nParameters:\n- team_id: str - Required. The unique identifier of the team to unblock.\n\nExample:\n```\ncurl --location 'http://0.0.0.0:4000/team/unblock'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"team_id\": \"team-1234\"\n}'\n```","operationId":"unblock_team_team_unblock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockTeamRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/metadata_schema":{"get":{"tags":["team management"],"summary":"Get Team Metadata Schema","description":"Get the team metadata fields declared in ``general_settings.team_metadata_schema``.\n\nThe UI uses this to prepopulate the team metadata form with the declared\nkeys. Returns an empty ``fields`` list when no schema is configured. This\nschema is advisory; server-side enforcement stays with\n``custom_team_metadata_validate``.","operationId":"get_team_metadata_schema_team_metadata_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMetadataSchemaResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/available":{"get":{"summary":"List Available Teams","operationId":"list_available_teams_team_available_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"response_model","in":"query","required":false,"schema":{"title":"Response Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/team/list":{"get":{"tags":["team management"],"summary":"List Team V2","description":"Get a paginated list of teams with filtering and sorting options.\n\nParameters:\n    user_id: Optional[str]\n        Only return teams which this user belongs to\n    organization_id: Optional[str]\n        Only return teams which belong to this organization\n    team_id: Optional[str]\n        Filter teams by exact team_id match\n    team_alias: Optional[str]\n        Filter teams by partial team_alias match\n    page: int\n        The page number to return\n    page_size: int\n        The number of items per page\n    sort_by: Optional[str]\n        Column to sort by (e.g. 'team_id', 'team_alias', 'created_at')\n    sort_order: str\n        Sort order ('asc' or 'desc')\n    status: Optional[str]\n        Filter by status. Currently supports \"deleted\" to query deleted teams.","operationId":"list_team_v2_v2_team_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only return teams which this 'user_id' belongs to","title":"User Id"},"description":"Only return teams which this 'user_id' belongs to"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only return teams which this 'organization_id' belongs to","title":"Organization Id"},"description":"Only return teams which this 'organization_id' belongs to"},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only return teams which this 'team_id' belongs to","title":"Team Id"},"description":"Only return teams which this 'team_id' belongs to"},{"name":"team_alias","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only return teams which this 'team_alias' belongs to. Supports partial matching.","title":"Team Alias"},"description":"Only return teams which this 'team_alias' belongs to. Supports partial matching."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Combined search: matches teams whose 'team_id' matches the value OR whose 'team_alias' contains it (case-insensitive).","title":"Search"},"description":"Combined search: matches teams whose 'team_id' matches the value OR whose 'team_alias' contains it (case-insensitive)."},{"name":"search_team_id_match","in":"query","required":false,"schema":{"enum":["exact","prefix"],"type":"string","description":"How 'search' matches 'team_id': 'exact' (default) or 'prefix' for a case-sensitive prefix match.","default":"exact","title":"Search Team Id Match"},"description":"How 'search' matches 'team_id': 'exact' (default) or 'prefix' for a case-sensitive prefix match."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number for pagination","default":1,"title":"Page"},"description":"Page number for pagination"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of teams per page","default":10,"title":"Page Size"},"description":"Number of teams per page"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (e.g. 'team_id', 'team_alias', 'created_at')","title":"Sort By"},"description":"Column to sort by (e.g. 'team_id', 'team_alias', 'created_at')"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Sort order ('asc' or 'desc')","default":"asc","title":"Sort Order"},"description":"Sort order ('asc' or 'desc')"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (e.g. 'deleted')","title":"Status"},"description":"Filter by status (e.g. 'deleted')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/list":{"get":{"tags":["team management"],"summary":"List Team","description":"```\ncurl --location --request GET 'http://0.0.0.0:4000/team/list'         --header 'Authorization: Bearer sk-1234'\n```\n\nParameters:\n- user_id: str - Optional. If passed will only return teams that the user_id is a member of.\n- organization_id: str - Optional. If passed will only return teams that belong to the organization_id. Pass 'default_organization' to get all teams without organization_id.","operationId":"list_team_team_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only return teams which this 'user_id' belongs to","title":"User Id"},"description":"Only return teams which this 'user_id' belongs to"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/model/add":{"post":{"tags":["team management"],"summary":"Team Model Add","description":"Add models to a team's allowed model list. Only proxy admin or team admin can add models.\n\nParameters:\n- team_id: str - Required. The team to add models to\n- models: List[str] - Required. List of models to add to the team\n\nExample Request:\n```\ncurl --location 'http://0.0.0.0:4000/team/model/add'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"team_id\": \"team-1234\",\n    \"models\": [\"gpt-4\", \"claude-2\"]\n}'\n```","operationId":"team_model_add_team_model_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamModelAddRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/model/delete":{"post":{"tags":["team management"],"summary":"Team Model Delete","description":"Remove models from a team's allowed model list. Only proxy admin or team admin can remove models.\n\nParameters:\n- team_id: str - Required. The team to remove models from\n- models: List[str] - Required. List of models to remove from the team\n\nExample Request:\n```\ncurl --location 'http://0.0.0.0:4000/team/model/delete'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"team_id\": \"team-1234\",\n    \"models\": [\"gpt-4\"]\n}'\n```","operationId":"team_model_delete_team_model_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamModelDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/permissions_list":{"get":{"tags":["team management"],"summary":"Team Member Permissions","description":"Get the team member permissions for a team","operationId":"team_member_permissions_team_permissions_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"query","required":false,"schema":{"type":"string","description":"Team ID in the request parameters","title":"Team Id"},"description":"Team ID in the request parameters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTeamMemberPermissionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/permissions_update":{"post":{"tags":["team management"],"summary":"Update Team Member Permissions","description":"Update the team member permissions for a team","operationId":"update_team_member_permissions_team_permissions_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTeamMemberPermissionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_TeamTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/permissions_bulk_update":{"post":{"tags":["team management"],"summary":"Bulk Update Team Member Permissions","description":"Append permissions to existing teams.\n\nEither pass team_ids to target specific teams, or set\napply_to_all_teams=True to update every team. For each team,\nthe provided permissions are merged with the team's existing\npermissions (duplicates are skipped).","operationId":"bulk_update_team_member_permissions_team_permissions_bulk_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateTeamMemberPermissionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateTeamMemberPermissionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/daily/activity":{"get":{"tags":["team management"],"summary":"Get Team Daily Activity","description":"Get daily activity for specific teams or all teams.\n\nArgs:\n    team_ids (Optional[str]): Comma-separated list of team IDs to filter by. If not provided, returns data for all teams.\n    start_date (Optional[str]): Start date for the activity period (YYYY-MM-DD).\n    end_date (Optional[str]): End date for the activity period (YYYY-MM-DD).\n    model (Optional[str]): Filter by model name.\n    api_key (Optional[str]): Filter by API key.\n    page (int): Page number for pagination.\n    page_size (int): Number of items per page.\n    exclude_team_ids (Optional[str]): Comma-separated list of team IDs to exclude.\nReturns:\n    SpendAnalyticsPaginatedResponse: Paginated response containing daily activity data.","operationId":"get_team_daily_activity_team_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Ids"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Page Size"}},{"name":"exclude_team_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude Team Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/daily/activity/aggregated":{"get":{"tags":["team management"],"summary":"Get Team Daily Activity Aggregated","description":"Aggregated daily activity for teams without pagination, including per-team breakdown.\n\nOne SQL GROUPING SETS pass returns every day in the range regardless of row\nvolume, so callers never reassemble pages. Same response shape as the\npaginated endpoint with page metadata pinned to a single page.\n\nArgs:\n    team_ids (Optional[str]): Comma-separated list of team IDs to filter by. If not provided, returns data for all teams.\n    start_date (Optional[str]): Start date for the activity period (YYYY-MM-DD).\n    end_date (Optional[str]): End date for the activity period (YYYY-MM-DD).\n    model (Optional[str]): Filter by model name.\n    api_key (Optional[str]): Filter by API key.\n    exclude_team_ids (Optional[str]): Comma-separated list of team IDs to exclude.\n    timezone (Optional[int]): Timezone offset in minutes from UTC, matching JavaScript's Date.getTimezoneOffset() convention.\nReturns:\n    SpendAnalyticsPaginatedResponse: Response containing all daily activity data for the range.","operationId":"get_team_daily_activity_aggregated_team_daily_activity_aggregated_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Ids"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"exclude_team_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude Team Ids"}},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timezone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sso/readiness":{"get":{"tags":["experimental"],"summary":"Sso Readiness","description":"Health endpoint for checking SSO readiness.\nChecks if the configured SSO provider has all required environment variables set in memory.","operationId":"sso_readiness_sso_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/sso/saml/metadata":{"get":{"summary":"Saml Metadata","operationId":"saml_metadata_sso_saml_metadata_get","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sso/saml/authorize":{"get":{"summary":"Saml Authorize","operationId":"saml_authorize_sso_saml_authorize_get","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}},{"name":"relay_state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relay State"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sso/saml/callback":{"get":{"summary":"Saml Callback Get","description":"Handle SAML callback via HTTP-Redirect binding (GET request).","operationId":"saml_callback_get_sso_saml_callback_get","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Saml Callback Post","description":"Handle SAML callback via HTTP-POST binding (POST request).","operationId":"saml_callback_post_sso_saml_callback_post","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sso/saml/logout":{"get":{"summary":"Saml Logout","operationId":"saml_logout_sso_saml_logout_get","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}},{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Saml Logout","operationId":"saml_logout_sso_saml_logout_post","parameters":[{"name":"idp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idp"}},{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/new":{"post":{"tags":["organization management"],"summary":"New Organization","description":"Allow orgs to own teams\n\nSet org level budgets + model access.\n\nOnly admins can create orgs.\n\n# Parameters\n\n- organization_alias: *str* - The name of the organization.\n- models: *List* - The models the organization has access to.\n- budget_id: *Optional[str]* - The id for a budget (tpm/rpm/max budget) for the organization.\n### IF NO BUDGET ID - CREATE ONE WITH THESE PARAMS ###\n- max_budget: *Optional[float]* - Max budget for org\n- tpm_limit: *Optional[int]* - Max tpm limit for org\n- rpm_limit: *Optional[int]* - Max rpm limit for org\n- model_rpm_limit: *Optional[Dict[str, int]]* - The RPM (Requests Per Minute) limit per model for this organization.\n- model_tpm_limit: *Optional[Dict[str, int]]* - The TPM (Tokens Per Minute) limit per model for this organization.\n- max_parallel_requests: *Optional[int]* - [Not Implemented Yet] Max parallel requests for org\n- soft_budget: *Optional[float]* - [Not Implemented Yet] Get a slack alert when this soft budget is reached. Don't block requests.\n- model_max_budget: *Optional[dict]* - Max budget for a specific model\n- budget_duration: *Optional[str]* - Frequency of reseting org budget\n- metadata: *Optional[dict]* - Metadata for organization, store information for organization. Example metadata - {\"extra_info\": \"some info\"}\n- blocked: *bool* - Flag indicating if the org is blocked or not - will stop all calls from keys with this org_id.\n- tags: *Optional[List[str]]* - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- organization_id: *Optional[str]* - The organization id of the team. Default is None. Create via `/organization/new`.\n- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - organization-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"]}. IF null or {} then no object permission.\n- allowed_models: Optional[List[str]] - List of models the organization is allowed to access. If not set, defaults to the models field.\nCase 1: Create new org **without** a budget_id\n\n```bash\ncurl --location 'http://0.0.0.0:4000/organization/new' \n--header 'Authorization: Bearer sk-1234' \n--header 'Content-Type: application/json' \n--data '{\n    \"organization_alias\": \"my-secret-org\",\n    \"models\": [\"model1\", \"model2\"],\n    \"max_budget\": 100\n}'\n\n\n```\n\nCase 2: Create new org **with** a budget_id\n\n```bash\ncurl --location 'http://0.0.0.0:4000/organization/new' \n--header 'Authorization: Bearer sk-1234' \n--header 'Content-Type: application/json' \n--data '{\n    \"organization_alias\": \"my-secret-org\",\n    \"models\": [\"model1\", \"model2\"],\n    \"budget_id\": \"428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689\"\n}'\n```","operationId":"new_organization_organization_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewOrganizationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewOrganizationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/organization/daily/activity":{"get":{"tags":["organization management"],"summary":"Get Organization Daily Activity","description":"Get daily activity for specific organizations or all accessible organizations.","operationId":"get_organization_daily_activity_organization_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Ids"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Page Size"}},{"name":"exclude_organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude Organization Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/update":{"patch":{"tags":["organization management"],"summary":"Update Organization","description":"Update an organization","operationId":"update_organization_organization_update_patch","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_OrganizationTableWithMembers"}}}}},"security":[{"APIKeyHeader":[]}]}},"/organization/delete":{"delete":{"tags":["organization management"],"summary":"Delete Organization","description":"Delete an organization\n\n# Parameters:\n\n- organization_ids: List[str] - The organization ids to delete.","operationId":"delete_organization_organization_delete_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteOrganizationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LiteLLM_OrganizationTableWithMembers"},"type":"array","title":"Response Delete Organization Organization Delete Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/organization/list":{"get":{"tags":["organization management"],"summary":"List Organization","description":"Get a list of organizations with optional filtering.\n\nParameters:\n    org_id: Optional[str]\n        Filter organizations by exact organization_id match\n    org_alias: Optional[str]\n        Filter organizations by partial organization_alias match (case-insensitive)\n\nExample:\n```\ncurl --location --request GET 'http://0.0.0.0:4000/organization/list?org_alias=my-org'         --header 'Authorization: Bearer sk-1234'\n```\n\nExample with org_id:\n```\ncurl --location --request GET 'http://0.0.0.0:4000/organization/list?org_id=123e4567-e89b-12d3-a456-426614174000'         --header 'Authorization: Bearer sk-1234'\n```","operationId":"list_organization_organization_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter organizations by exact organization_id match","title":"Org Id"},"description":"Filter organizations by exact organization_id match"},{"name":"org_alias","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter organizations by partial organization_alias match. Supports case-insensitive search.","title":"Org Alias"},"description":"Filter organizations by partial organization_alias match. Supports case-insensitive search."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiteLLM_OrganizationTableWithMembers"},"title":"Response List Organization Organization List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/info":{"get":{"tags":["organization management"],"summary":"Info Organization","description":"Get the org specific information","operationId":"info_organization_organization_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"organization_id","in":"query","required":true,"schema":{"type":"string","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_OrganizationTableWithMembers"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["organization management"],"summary":"Deprecated Info Organization","description":"DEPRECATED: Use GET /organization/info instead","operationId":"deprecated_info_organization_organization_info_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/member_add":{"post":{"tags":["organization management"],"summary":"Organization Member Add","description":"[BETA]\n\nAdd new members (either via user_email or user_id) to an organization\n\nIf user doesn't exist, new user row will also be added to User Table\n\nOnly proxy_admin or org_admin of organization, allowed to access this endpoint.\n\n# Parameters:\n\n- organization_id: str (required)\n- member: Union[List[Member], Member] (required)\n    - role: Literal[LitellmUserRoles] (required)\n    - user_id: Optional[str]\n    - user_email: Optional[str]\n\nNote: Either user_id or user_email must be provided for each member.\n\nExample:\n```\ncurl -X POST 'http://0.0.0.0:4000/organization/member_add'     -H 'Authorization: Bearer sk-1234'     -H 'Content-Type: application/json'     -d '{\n    \"organization_id\": \"45e3e396-ee08-4a61-a88e-16b3ce7e0849\",\n    \"member\": {\n        \"role\": \"internal_user\",\n        \"user_id\": \"krrish247652@berri.ai\"\n    },\n    \"max_budget_in_organization\": 100.0\n}'\n```\n\nThe following is executed in this function:\n\n1. Check if organization exists\n2. Creates a new Internal User if the user_id or user_email is not found in LiteLLM_UserTable\n3. Add Internal User to the `LiteLLM_OrganizationMembership` table","operationId":"organization_member_add_organization_member_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberAddRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAddMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/organization/member_update":{"patch":{"tags":["organization management"],"summary":"Organization Member Update","description":"Update a member's role in an organization","operationId":"organization_member_update_organization_member_update_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_OrganizationMembershipTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/organization/member_delete":{"delete":{"tags":["organization management"],"summary":"Organization Member Delete","description":"Delete a member from an organization","operationId":"organization_member_delete_organization_member_delete_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/block":{"post":{"tags":["Customer Management"],"summary":"Block User","description":"[BETA] Reject calls with this end-user id\n\nParameters:\n- user_ids (List[str], required): The unique `user_id`s for the users to block\n\n    (any /chat/completion call with this user={end-user-id} param, will be rejected.)\n\n    ```\n    curl -X POST \"http://0.0.0.0:8000/user/block\"\n    -H \"Authorization: Bearer sk-1234\"\n    -d '{\n    \"user_ids\": [<user_id>, ...]\n    }'\n    ```","operationId":"block_user_customer_block_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUsers"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUsersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/unblock":{"post":{"tags":["Customer Management"],"summary":"Unblock User","description":"[BETA] Unblock calls with this user id\n\nExample\n```\ncurl -X POST \"http://0.0.0.0:8000/user/unblock\"\n-H \"Authorization: Bearer sk-1234\"\n-d '{\n\"user_ids\": [<user_id>, ...]\n}'\n```","operationId":"unblock_user_customer_unblock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUsers"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnblockUsersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/new":{"post":{"tags":["Customer Management"],"summary":"New End User","description":"Allow creating a new Customer \n\n\nParameters:\n- user_id: str - The unique identifier for the user.\n- alias: Optional[str] - A human-friendly alias for the user.\n- blocked: bool - Flag to allow or disallow requests for this end-user. Default is False.\n- max_budget: Optional[float] - The maximum budget allocated to the user. Either 'max_budget' or 'budget_id' should be provided, not both.\n- budget_id: Optional[str] - The identifier for an existing budget allocated to the user. Either 'max_budget' or 'budget_id' should be provided, not both.\n- allowed_model_region: Optional[Union[Literal[\"eu\"], Literal[\"us\"]]] - Require all user requests to use models in this specific region.\n- default_model: Optional[str] - If no equivalent model in the allowed region, default all requests to this model.\n- metadata: Optional[dict] = Metadata for customer, store information for customer. Example metadata = {\"data_training_opt_out\": True}\n- budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (\"30s\"), minutes (\"30m\"), hours (\"30h\"), days (\"30d\").\n- tpm_limit: Optional[int] - [Not Implemented Yet] Specify tpm limit for a given customer (Tokens per minute)\n- rpm_limit: Optional[int] - [Not Implemented Yet] Specify rpm limit for a given customer (Requests per minute)\n- model_max_budget: Optional[dict] - [Not Implemented Yet] Specify max budget for a given model. Example: {\"openai/gpt-4o-mini\": {\"max_budget\": 100.0, \"budget_duration\": \"1d\"}}\n- max_parallel_requests: Optional[int] - [Not Implemented Yet] Specify max parallel requests for a given customer.\n- soft_budget: Optional[float] - [Not Implemented Yet] Get alerts when customer crosses given budget, doesn't block requests.\n- spend: Optional[float] - Specify initial spend for a given customer.\n- budget_reset_at: Optional[str] - Specify the date and time when the budget should be reset.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - Customer-specific object permissions to control access to resources.\n    Supported fields:\n    * mcp_servers: List[str] - List of allowed MCP server IDs\n    * mcp_access_groups: List[str] - List of MCP access group names\n    * mcp_tool_permissions: Dict[str, List[str]] - Map of server ID to allowed tool names (e.g., {\"server_1\": [\"tool_a\", \"tool_b\"]})\n    * vector_stores: List[str] - List of allowed vector store IDs\n    * agents: List[str] - List of allowed agent IDs\n    * agent_access_groups: List[str] - List of agent access group names\n    Example: {\"mcp_servers\": [\"server_1\", \"server_2\"], \"vector_stores\": [\"vector_store_1\"], \"agents\": [\"agent_1\"]}\n    IF null or {} then no object-level restrictions apply.\n\n\n- Allow specifying allowed regions \n- Allow specifying default model\n\nExample curl:\n```\ncurl --location 'http://0.0.0.0:4000/customer/new'         --header 'Authorization: Bearer sk-1234'         --header 'Content-Type: application/json'         --data '{\n        \"user_id\" : \"ishaan-jaff-3\",\n        \"allowed_region\": \"eu\",\n        \"budget_id\": \"free_tier\",\n        \"default_model\": \"azure/gpt-3.5-turbo-eu\"\n    }'\n\n# With object permissions\ncurl -L -X POST 'http://localhost:4000/customer/new'         -H 'Authorization: Bearer sk-1234'         -H 'Content-Type: application/json'         -d '{\n        \"user_id\": \"user_1\",\n        \"object_permission\": {\n          \"mcp_servers\": [\"server_1\"],\n          \"mcp_access_groups\": [\"public_group\"],\n          \"vector_stores\": [\"vector_store_1\"]\n        }\n      }'\n\n    # return end-user object\n```\n\nNOTE: This used to be called `/end_user/new`, we will still be maintaining compatibility for /end_user/XXX for these endpoints","operationId":"new_end_user_customer_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewCustomerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/info":{"get":{"tags":["Customer Management"],"summary":"End User Info","description":"Get information about an end-user. An `end_user` is a customer (external user) of the proxy.\n\nParameters:\n- end_user_id (str, required): The unique identifier for the end-user\n\nExample curl:\n```\ncurl -X GET 'http://localhost:4000/customer/info?end_user_id=test-litellm-user-4'         -H 'Authorization: Bearer sk-1234'\n```","operationId":"end_user_info_customer_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"end_user_id","in":"query","required":true,"schema":{"type":"string","description":"End User ID in the request parameters","title":"End User Id"},"description":"End User ID in the request parameters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer/update":{"post":{"tags":["Customer Management"],"summary":"Update End User","description":"Example curl \n\nParameters:\n- user_id: str\n- alias: Optional[str] = None  # human-friendly alias\n- blocked: bool = False  # allow/disallow requests for this end-user\n- max_budget: Optional[float] = None\n- budget_id: Optional[str] = None  # give either a budget_id or max_budget\n- allowed_model_region: Optional[AllowedModelRegion] = (\n    None  # require all user requests to use models in this specific region\n)\n- default_model: Optional[str] = (\n    None  # if no equivalent model in allowed region - default all requests to this model\n)\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - Customer-specific object permissions to control access to resources.\n    Supported fields:\n    * mcp_servers: List[str] - List of allowed MCP server IDs\n    * mcp_access_groups: List[str] - List of MCP access group names\n    * mcp_tool_permissions: Dict[str, List[str]] - Map of server ID to allowed tool names\n    * vector_stores: List[str] - List of allowed vector store IDs\n    * agents: List[str] - List of allowed agent IDs\n    * agent_access_groups: List[str] - List of agent access group names\n    Example: {\"mcp_servers\": [\"server_1\"], \"vector_stores\": [\"vector_store_1\"]}\n    IF null or {} then no object-level restrictions apply.\n\nExample curl:\n```\ncurl --location 'http://0.0.0.0:4000/customer/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"user_id\": \"test-litellm-user-4\",\n    \"budget_id\": \"paid_tier\"\n}'\n\n# Updating object permissions\ncurl -L -X POST 'http://localhost:4000/customer/update'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{\n    \"user_id\": \"user_1\",\n    \"object_permission\": {\n      \"mcp_servers\": [\"server_3\"],\n      \"vector_stores\": [\"vector_store_2\", \"vector_store_3\"]\n    }\n  }'\n\nSee below for all params\n```","operationId":"update_end_user_customer_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/delete":{"post":{"tags":["Customer Management"],"summary":"Delete End User","description":"Delete multiple end-users.\n\nParameters:\n- user_ids (List[str], required): The unique `user_id`s for the users to delete\n\nExample curl:\n```\ncurl --location 'http://0.0.0.0:4000/customer/delete'         --header 'Authorization: Bearer sk-1234'         --header 'Content-Type: application/json'         --data '{\n        \"user_ids\" :[\"ishaan-jaff-5\"]\n}'\n\nSee below for all params \n```","operationId":"delete_end_user_customer_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCustomerRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCustomersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/list":{"get":{"tags":["Customer Management"],"summary":"List End User","description":"[Admin-only] List all available customers\n\nExample curl:\n```\ncurl --location --request GET 'http://0.0.0.0:4000/customer/list'         --header 'Authorization: Bearer sk-1234'\n```","operationId":"list_end_user_customer_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CustomerResponse"},"type":"array","title":"Response List End User Customer List Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/customer/daily/activity":{"get":{"tags":["Customer Management"],"summary":"Get Customer Daily Activity","description":"Get daily activity for specific organizations or all accessible organizations.","operationId":"get_customer_daily_activity_customer_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"end_user_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End User Ids"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Page Size"}},{"name":"exclude_end_user_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude End User Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/management/v1/budgets":{"get":{"tags":["budget management"],"summary":"List Budgets","description":"The budgets defined on this proxy, paged, sortable and filterable, for the\nBudgets page.\n\nReadable by a proxy admin or an admin viewer; anyone else is refused 403. The\nolder `/budget/list` answers with the whole table as a bare array and has no\nway to page, sort or filter it.\n\n`sort` takes a comma-separated list of `budget_id`, `max_budget`, `tpm_limit`,\n`rpm_limit` or `created_at`, each optionally prefixed with `-` for descending,\nand defaults to `-created_at`. `budget_id` is appended to every sort as the\ntiebreaker. `q` is a case-insensitive substring match on `budget_id`.\n`page_size` defaults to 50 and is capped at 100. Filters are\n`filter[budget_duration][in|is_null]`, `filter[max_budget][gte|lte|is_null]`\nand `filter[created_at][gte|lte]`.\n\nExample curl:\n```\ncurl --location --globoff 'http://0.0.0.0:4000/management/v1/budgets?sort=-max_budget&filter[budget_duration][in]=7d,30d&page_size=25'         --header 'Authorization: Bearer sk-1234'\n```","operationId":"list_budgets_management_v1_budgets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_BudgetListItem_"}}}}},"security":[{"APIKeyHeader":[]}]}},"/management/v1/spend_logs/end_users":{"get":{"tags":["Budget & Spend Tracking"],"summary":"List Spend Log End Users","description":"The distinct end users appearing in spend logs over a time window, for the logs\npage filter dropdown.\n\nScoped like `/spend/logs/ui`: a proxy admin sees every end user in the window,\nanyone else sees only end users from their own requests or from teams they\nadminister (or hold the `/spend/logs` permission on).\n\nThe window is required and the inner scan is capped at SPEND_LOGS_FACET_SCAN_CAP\nrows, so the query cannot degrade into a full-table scan the way\n`/global/all_end_users` does.\n\nExample curl:\n```\ncurl --location --globoff 'http://0.0.0.0:4000/management/v1/spend_logs/end_users?filter[startTime][gte]=2026-07-23T00:00:00Z&filter[startTime][lte]=2026-07-24T00:00:00Z&page_size=50&q=acme'         --header 'Authorization: Bearer sk-1234'\n```","operationId":"list_spend_log_end_users_management_v1_spend_logs_end_users_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"filter[startTime][gte]","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Window start (UTC when no offset is given)","title":"Filter[Starttime][Gte]"},"description":"Window start (UTC when no offset is given)"},{"name":"filter[startTime][lte]","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Window end (UTC when no offset is given)","title":"Filter[Starttime][Lte]"},"description":"Window end (UTC when no offset is given)"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive partial match on the end user id","title":"Q"},"description":"Case-insensitive partial match on the end user id"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Page Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/management/v1/spend_logs/users":{"get":{"tags":["Budget & Spend Tracking"],"summary":"List Spend Log Users","description":"The distinct internal users appearing in spend logs the caller can read.","operationId":"list_spend_log_users_management_v1_spend_logs_users_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"filter[startTime][gte]","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Window start (UTC when no offset is given)","title":"Filter[Starttime][Gte]"},"description":"Window start (UTC when no offset is given)"},{"name":"filter[startTime][lte]","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Window end (UTC when no offset is given)","title":"Filter[Starttime][Lte]"},"description":"Window end (UTC when no offset is given)"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive partial match on the internal user id","title":"Q"},"description":"Case-insensitive partial match on the internal user id"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Page Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/spend/tags":{"get":{"tags":["Budget & Spend Tracking"],"summary":"View Spend Tags","description":"LiteLLM Enterprise - View Spend Per Request Tag\n\nExample Request:\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/tags\" -H \"Authorization: Bearer sk-1234\"\n```\n\nSpend with Start Date and End Date\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/tags?start_date=2022-01-01&end_date=2022-02-01\" -H \"Authorization: Bearer sk-1234\"\n```","operationId":"view_spend_tags_spend_tags_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing key spend","title":"Start Date"},"description":"Time from which to start viewing key spend"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view key spend","title":"End Date"},"description":"Time till which to view key spend"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiteLLM_SpendLogs"},"title":"Response 200 View Spend Tags Spend Tags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/global/spend/report":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get Global Spend Report","description":"Get Daily Spend per Team, based on specific startTime and endTime. Per team, view usage by each key, model\n[\n    {\n        \"group-by-day\": \"2024-05-10\",\n        \"teams\": [\n            {\n                \"team_name\": \"team-1\"\n                \"spend\": 10,\n                \"keys\": [\n                    \"key\": \"1213\",\n                    \"usage\": {\n                        \"model-1\": {\n                                \"cost\": 12.50,\n                                \"input_tokens\": 1000,\n                                \"output_tokens\": 5000,\n                                \"requests\": 100\n                            },\n                            \"audio-modelname1\": {\n                            \"cost\": 25.50,\n                            \"seconds\": 25,\n                            \"requests\": 50\n                    },\n                    }\n                }\n        ]\n    ]\n}","operationId":"get_global_spend_report_global_spend_report_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing spend","title":"Start Date"},"description":"Time from which to start viewing spend"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view spend","title":"End Date"},"description":"Time till which to view spend"},{"name":"group_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["team","customer","api_key"],"type":"string"},{"type":"null"}],"description":"Group spend by internal team or customer or api_key","default":"team","title":"Group By"},"description":"Group spend by internal team or customer or api_key"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific api_key. Example api_key='sk-1234","title":"Api Key"},"description":"View spend for a specific api_key. Example api_key='sk-1234"},{"name":"internal_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific internal_user_id. Example internal_user_id='1234","title":"Internal User Id"},"description":"View spend for a specific internal_user_id. Example internal_user_id='1234"},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific team_id. Example team_id='1234","title":"Team Id"},"description":"View spend for a specific team_id. Example team_id='1234"},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific customer_id. Example customer_id='1234. Can be used in conjunction with team_id as well.","title":"Customer Id"},"description":"View spend for a specific customer_id. Example customer_id='1234. Can be used in conjunction with team_id as well."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiteLLM_SpendLogs"},"title":"Response 200 Get Global Spend Report Global Spend Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/key/spend/report":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get Key Spend Report","description":"Get spend for the calling api_key over a date range, with a per-model breakdown.\n\nSame row shape as `/global/spend/report?api_key=...`, but callable by any key:\nnon-admin callers are always scoped to their own api_key, while proxy admins\nmay pass `?api_key=` to view any key.","operationId":"get_key_spend_report_key_spend_report_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing spend (YYYY-MM-DD)","title":"Start Date"},"description":"Time from which to start viewing spend (YYYY-MM-DD)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view spend (YYYY-MM-DD)","title":"End Date"},"description":"Time till which to view spend (YYYY-MM-DD)"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific api_key. Proxy admin only; other callers are scoped to their own key.","title":"Api Key"},"description":"View spend for a specific api_key. Proxy admin only; other callers are scoped to their own key."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Key Spend Report Key Spend Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/spend/report":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get User Spend Report","description":"Get spend for the calling user over a date range, grouped by api_key with a per-model breakdown.\n\nSame row shape as `/global/spend/report?internal_user_id=...`, but callable by\nany key with a user: non-admin callers are always scoped to their own user_id,\nwhile proxy admins may pass `?internal_user_id=` to view any user.","operationId":"get_user_spend_report_user_spend_report_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing spend (YYYY-MM-DD)","title":"Start Date"},"description":"Time from which to start viewing spend (YYYY-MM-DD)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view spend (YYYY-MM-DD)","title":"End Date"},"description":"Time till which to view spend (YYYY-MM-DD)"},{"name":"internal_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific internal_user_id. Proxy admin only; other callers are scoped to their own user_id.","title":"Internal User Id"},"description":"View spend for a specific internal_user_id. Proxy admin only; other callers are scoped to their own user_id."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get User Spend Report User Spend Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/spend/report":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get Team Spend Report","description":"Get spend for the calling key's team over a date range, grouped by api_key with a per-model breakdown.\n\nCallable by any key that belongs to a team: non-admin callers are always\nscoped to their key's team_id, while proxy admins may pass `?team_id=` to\nview any team.","operationId":"get_team_spend_report_team_spend_report_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing spend (YYYY-MM-DD)","title":"Start Date"},"description":"Time from which to start viewing spend (YYYY-MM-DD)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view spend (YYYY-MM-DD)","title":"End Date"},"description":"Time till which to view spend (YYYY-MM-DD)"},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific team_id. Proxy admin only; other callers are scoped to their key's team.","title":"Team Id"},"description":"View spend for a specific team_id. Proxy admin only; other callers are scoped to their key's team."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Team Spend Report Team Spend Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/spend/report":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get Organization Spend Report","description":"Get spend for an organization over a date range, grouped by api_key with a per-model and per-team breakdown.\n\nCovers spend logged against the organization directly and against any of its\nteams. Callable by proxy admins (any organization) and org admins (their own\norganizations). Defaults to the calling key's organization_id when\n`?organization_id=` is omitted.","operationId":"get_organization_spend_report_organization_spend_report_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing spend (YYYY-MM-DD)","title":"Start Date"},"description":"Time from which to start viewing spend (YYYY-MM-DD)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view spend (YYYY-MM-DD)","title":"End Date"},"description":"Time till which to view spend (YYYY-MM-DD)"},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"View spend for a specific organization_id. Proxy admins may pass any organization; org admins are scoped to organizations they administer.","title":"Organization Id"},"description":"View spend for a specific organization_id. Proxy admins may pass any organization; org admins are scoped to organizations they administer."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Organization Spend Report Organization Spend Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/global/spend/tags":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Global View Spend Tags","description":"LiteLLM Enterprise - View Spend Per Request Tag. Used by LiteLLM UI\n\nExample Request:\n```\ncurl -X GET \"http://0.0.0.0:4000/spend/tags\" -H \"Authorization: Bearer sk-1234\"\n```\n\nSpend with Start Date and End Date\n```\ncurl -X GET \"http://0.0.0.0:4000/spend/tags?start_date=2022-01-01&end_date=2022-02-01\" -H \"Authorization: Bearer sk-1234\"\n```","operationId":"global_view_spend_tags_global_spend_tags_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing key spend","title":"Start Date"},"description":"Time from which to start viewing key spend"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view key spend","title":"End Date"},"description":"Time till which to view key spend"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"comman separated tags to filter on","title":"Tags"},"description":"comman separated tags to filter on"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiteLLM_SpendLogs"},"title":"Response 200 Global View Spend Tags Global Spend Tags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/spend/calculate":{"post":{"tags":["Budget & Spend Tracking"],"summary":"Calculate Spend","description":"Accepts all the params of completion_cost.\n\nCalculate spend **before** making call:\n\nNote: If you see a spend of $0.0 you need to set custom_pricing for your model: https://docs.litellm.ai/docs/proxy/custom_pricing\n\n```\ncurl --location 'http://localhost:4000/spend/calculate'\n--header 'Authorization: Bearer sk-1234'\n--header 'Content-Type: application/json'\n--data '{\n    \"model\": \"anthropic.claude-v2\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hey, how'''s it going?\"}]\n}'\n```\n\nCalculate spend **after** making call:\n\n```\ncurl --location 'http://localhost:4000/spend/calculate'\n--header 'Authorization: Bearer sk-1234'\n--header 'Content-Type: application/json'\n--data '{\n    \"completion_response\": {\n        \"id\": \"chatcmpl-123\",\n        \"object\": \"chat.completion\",\n        \"created\": 1677652288,\n        \"model\": \"gpt-3.5-turbo-0125\",\n        \"system_fingerprint\": \"fp_44709d6fcb\",\n        \"choices\": [{\n            \"index\": 0,\n            \"message\": {\n                \"role\": \"assistant\",\n                \"content\": \"Hello there, how may I assist you today?\"\n            },\n            \"logprobs\": null,\n            \"finish_reason\": \"stop\"\n        }]\n        \"usage\": {\n            \"prompt_tokens\": 9,\n            \"completion_tokens\": 12,\n            \"total_tokens\": 21\n        }\n    }\n}'\n```","operationId":"calculate_spend_spend_calculate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendCalculateRequest"}}},"required":true},"responses":{"200":{"description":"The calculated cost","content":{"application/json":{"schema":{"properties":{"cost":{"type":"number","description":"The calculated cost","example":0.0}},"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/spend/logs/v2":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Ui View Spend Logs","description":"View spend logs with pagination support.\nAvailable at both `/spend/logs/v2` (public API) and `/spend/logs/ui` (internal UI).\n\nReturns paginated response with data, total, page, page_size, and total_pages.\n\nExample:\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs/v2?start_date=2025-11-25%2000:00:00&end_date=2025-11-26%2023:59:59&page=1&page_size=50\" -H \"Authorization: Bearer sk-1234\"\n```","operationId":"ui_view_spend_logs_spend_logs_v2_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get spend logs based on api key","title":"Api Key"},"description":"Get spend logs based on api key"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get spend logs based on user_id","title":"User Id"},"description":"Get spend logs based on user_id"},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"request_id to get spend logs for specific request_id","title":"Request Id"},"description":"request_id to get spend logs for specific request_id"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter spend logs by session_id (partial string match)","title":"Session Id"},"description":"Filter spend logs by session_id (partial string match)"},{"name":"team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter spend logs by team_id","title":"Team Id"},"description":"Filter spend logs by team_id"},{"name":"min_spend","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Filter logs with spend greater than or equal to this value","title":"Min Spend"},"description":"Filter logs with spend greater than or equal to this value"},{"name":"max_spend","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Filter logs with spend less than or equal to this value","title":"Max Spend"},"description":"Filter logs with spend less than or equal to this value"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing key spend","title":"Start Date"},"description":"Time from which to start viewing key spend"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view key spend","title":"End Date"},"description":"Time till which to view key spend"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number for pagination","default":1,"title":"Page"},"description":"Page number for pagination"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Number of items per page","default":50,"title":"Page Size"},"description":"Number of items per page"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by status (e.g., success, failure)","title":"Status Filter"},"description":"Filter logs by status (e.g., success, failure)"},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by model","title":"Model"},"description":"Filter logs by model"},{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by model ID (litellm model deployment id)","title":"Model Id"},"description":"Filter logs by model ID (litellm model deployment id)"},{"name":"model_group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by model group","title":"Model Group"},"description":"Filter logs by model group"},{"name":"key_alias","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by key alias","title":"Key Alias"},"description":"Filter logs by key alias"},{"name":"end_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by end user","title":"End User"},"description":"Filter logs by end user"},{"name":"error_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by error code (e.g., '404', '500')","title":"Error Code"},"description":"Filter logs by error code (e.g., '404', '500')"},{"name":"error_message","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs by error message (partial string match)","title":"Error Message"},"description":"Filter logs by error message (partial string match)"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort logs by field: spend, total_tokens, startTime, endTime, request_duration_ms, model, or ttft_ms","default":"startTime","title":"Sort By"},"description":"Sort logs by field: spend, total_tokens, startTime, endTime, request_duration_ms, model, or ttft_ms"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order: asc or desc","default":"desc","title":"Sort Order"},"description":"Sort order: asc or desc"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response 200 Ui View Spend Logs Spend Logs V2 Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/spend/logs":{"get":{"tags":["Budget & Spend Tracking"],"summary":"View Spend Logs","description":"[DEPRECATED] This endpoint is not paginated and can cause performance issues.\nPlease use `/spend/logs/v2` instead for paginated access to spend logs.\n\nView all spend logs, if request_id is provided, only logs for that request_id will be returned\n\nWhen start_date and end_date are provided:\n- summarize=true (default): Returns aggregated spend data grouped by date (maintains backward compatibility)\n- summarize=false: Returns filtered individual log entries within the date range\n\nExample Request for all logs\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific request_id\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?request_id=chatcmpl-6dcb2540-d3d7-4e49-bb27-291f863f112e\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific api_key\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?api_key=sk-test-example-key-123\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific user_id\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?user_id=ishaan@berri.ai\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for date range with individual logs (unsummarized)\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?start_date=2024-01-01&end_date=2024-01-02&summarize=false\" -H \"Authorization: Bearer sk-1234\"\n```","operationId":"view_spend_logs_spend_logs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get spend logs based on api key","title":"Api Key"},"description":"Get spend logs based on api key"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Get spend logs based on user_id","title":"User Id"},"description":"Get spend logs based on user_id"},{"name":"request_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requests","title":"Request Id"},"description":"request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requests"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time from which to start viewing key spend","title":"Start Date"},"description":"Time from which to start viewing key spend"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time till which to view key spend","title":"End Date"},"description":"Time till which to view key spend"},{"name":"summarize","in":"query","required":false,"schema":{"type":"boolean","description":"When start_date and end_date are provided, summarize=true returns aggregated data by date (legacy behavior), summarize=false returns filtered individual logs","default":true,"title":"Summarize"},"description":"When start_date and end_date are provided, summarize=true returns aggregated data by date (legacy behavior), summarize=false returns filtered individual logs"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiteLLM_SpendLogs"},"title":"Response 200 View Spend Logs Spend Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/global/spend/reset":{"post":{"tags":["Budget & Spend Tracking"],"summary":"Global Spend Reset","description":"ADMIN ONLY / MASTER KEY Only Endpoint\n\nGlobally reset spend for All API Keys and Teams, maintain LiteLLM_SpendLogs\n\n1. LiteLLM_SpendLogs will maintain the logs on spend, no data gets deleted from there\n2. LiteLLM_VerificationTokens spend will be set = 0\n3. LiteLLM_TeamTable spend will be set = 0","operationId":"global_spend_reset_global_spend_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/provider/budgets":{"get":{"summary":"Provider Budgets","description":"Provider Budget Routing - Get Budget, Spend Details https://docs.litellm.ai/docs/proxy/provider_budget_routing\n\nUse this endpoint to check current budget, spend and budget reset time for a provider\n\nExample Request\n\n```bash\ncurl -X GET http://localhost:4000/provider/budgets     -H \"Content-Type: application/json\"     -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Response\n\n```json\n{\n    \"providers\": {\n        \"openai\": {\n            \"budget_limit\": 1e-12,\n            \"time_period\": \"1d\",\n            \"spend\": 0.0,\n            \"budget_reset_at\": null\n        },\n        \"azure\": {\n            \"budget_limit\": 100.0,\n            \"time_period\": \"1d\",\n            \"spend\": 0.0,\n            \"budget_reset_at\": null\n        },\n        \"anthropic\": {\n            \"budget_limit\": 100.0,\n            \"time_period\": \"10d\",\n            \"spend\": 0.0,\n            \"budget_reset_at\": null\n        },\n        \"vertex_ai\": {\n            \"budget_limit\": 100.0,\n            \"time_period\": \"12d\",\n            \"spend\": 0.0,\n            \"budget_reset_at\": null\n        }\n    }\n}\n```","operationId":"provider_budgets_provider_budgets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderBudgetResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/cache/ping":{"get":{"tags":["caching"],"summary":"Cache Ping","description":"Endpoint for checking if cache can be pinged","operationId":"cache_ping_cache_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CachePingResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/cache/delete":{"post":{"tags":["caching","caching"],"summary":"Cache Delete","description":"Endpoint for deleting a key from the cache. All responses from litellm proxy have `x-litellm-cache-key` in the headers\n\nParameters:\n- **keys**: *Optional[List[str]]* - A list of keys to delete from the cache. Example {\"keys\": [\"key1\", \"key2\"]}\n\n```shell\ncurl -X POST \"http://0.0.0.0:4000/cache/delete\"     -H \"Authorization: Bearer sk-1234\"     -d '{\"keys\": [\"key1\", \"key2\"]}'\n```","operationId":"cache_delete_cache_delete_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/cache/redis/info":{"get":{"tags":["caching"],"summary":"Cache Redis Info","description":"Endpoint for getting /redis/info","operationId":"cache_redis_info_cache_redis_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/cache/flushall":{"post":{"tags":["caching","caching"],"summary":"Cache Flushall","description":"A function to flush all items from the cache. (All items will be deleted from the cache with this)\nRaises HTTPException if the cache is not initialized or if the cache type does not support flushing.\nReturns a dictionary with the status of the operation.\n\nUsage:\n```\ncurl -X POST http://0.0.0.0:4000/cache/flushall -H \"Authorization: Bearer sk-1234\"\n```","operationId":"cache_flushall_cache_flushall_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/callbacks/list":{"get":{"tags":["Logging Callbacks"],"summary":"List Callbacks","description":"View List of Active Logging Callbacks","operationId":"list_callbacks_callbacks_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbacksByType"}}}}},"security":[{"APIKeyHeader":[]}]}},"/callbacks/configs":{"get":{"tags":["Logging Callbacks"],"summary":"Get Callback Configs","description":"Get Available Callback Configurations\n\nReturns the configuration details for all available logging callbacks,\nincluding supported parameters, field types, and descriptions.","operationId":"get_callback_configs_callbacks_configs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/debug/asyncio-tasks":{"get":{"summary":"Get Active Tasks Stats","description":"Returns:\n  total_active_tasks: int\n  by_name: { coroutine_name: count }","operationId":"get_active_tasks_stats_debug_asyncio_tasks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/rust_control_plane/logs":{"post":{"tags":["rust control plane"],"summary":"Ingest Callback Logs","description":"Replay a batch of finished logging payloads through the callback fan-out.\n\nAdmin-only: the payloads write spend logs and trigger every callback, so this\nis a trusted internal route, not a public surface.","operationId":"ingest_callback_logs_v1_rust_control_plane_logs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackLogsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackLogsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/add/allowed_ip":{"post":{"tags":["Budget & Spend Tracking"],"summary":"Add Allowed Ip","operationId":"add_allowed_ip_add_allowed_ip_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IPAddress"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/delete/allowed_ip":{"post":{"tags":["Budget & Spend Tracking"],"summary":"Delete Allowed Ip","operationId":"delete_allowed_ip_delete_allowed_ip_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IPAddress"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/internal_user_settings":{"get":{"tags":["SSO Settings"],"summary":"Get Internal User Settings","description":"Get all SSO settings from the litellm_settings configuration.\nReturns a structured object with values and descriptions for UI display.","operationId":"get_internal_user_settings_get_internal_user_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalUserSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/default_team_settings":{"get":{"tags":["SSO Settings"],"summary":"Get Default Team Settings","description":"Get the default team parameters (litellm_settings.default_team_params).\nReturns a structured object with values and descriptions for UI display.","operationId":"get_default_team_settings_get_default_team_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultTeamSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/update/internal_user_settings":{"patch":{"tags":["SSO Settings"],"summary":"Update Internal User Settings","description":"Update the default internal user parameters for SSO users.\nThese settings will be applied to new users who sign in via SSO.","operationId":"update_internal_user_settings_update_internal_user_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultInternalUserParams"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/update/default_team_settings":{"patch":{"tags":["SSO Settings"],"summary":"Update Default Team Settings","description":"Update the default team parameters (litellm_settings.default_team_params).\nApplied to every new team for fields not explicitly provided in the create request;\n`models` only applies to teams automatically created via SSO Groups.","operationId":"update_default_team_settings_update_default_team_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultTeamSSOParams"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/sso_settings":{"get":{"tags":["SSO Settings"],"summary":"Get Sso Settings","description":"Get all SSO configuration settings from the dedicated SSO table.\nReturns a structured object with values and descriptions for UI display.","operationId":"get_sso_settings_get_sso_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SSOSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/update/sso_settings":{"patch":{"tags":["SSO Settings"],"summary":"Update Sso Settings","description":"Update SSO configuration by saving to the dedicated SSO table.","operationId":"update_sso_settings_update_sso_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SSOConfig"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/ui_theme_settings":{"get":{"tags":["UI Theme Settings"],"summary":"Get Ui Theme Settings","description":"Get UI theme configuration from the litellm_settings.\nReturns current logo settings for UI customization.\n\nNote: This endpoint is public (no authentication required) so all users can see custom branding.\nOnly the /update/ui_theme_settings endpoint requires authentication for admins to change settings.","operationId":"get_ui_theme_settings_get_ui_theme_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UIThemeSettingsResponse"}}}}}}},"/update/ui_theme_settings":{"patch":{"tags":["UI Theme Settings"],"summary":"Update Ui Theme Settings","description":"Update UI theme configuration.\nUpdates logo settings for the admin UI.","operationId":"update_ui_theme_settings_update_ui_theme_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UIThemeConfig"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/mcp_semantic_filter_settings":{"get":{"tags":["Settings"],"summary":"Get Mcp Semantic Filter Settings","description":"Get MCP semantic filter configuration.\nReturns current settings for semantic tool filtering.","operationId":"get_mcp_semantic_filter_settings_get_mcp_semantic_filter_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPSemanticFilterSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/update/mcp_semantic_filter_settings":{"patch":{"tags":["Settings"],"summary":"Update Mcp Semantic Filter Settings","description":"Update MCP semantic filter settings in database.\nSettings will be picked up by all pods within approximately 10 seconds via background polling.","operationId":"update_mcp_semantic_filter_settings_update_mcp_semantic_filter_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPSemanticFilterSettings"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/ui_settings":{"get":{"tags":["UI Settings"],"summary":"Get Ui Settings","description":"Get UI-specific configuration flags.\nAll authenticated users can fetch these settings for client-side behavior.","operationId":"get_ui_settings_get_ui_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UISettingsResponse"}}}}}}},"/update/ui_settings":{"patch":{"tags":["UI Settings"],"summary":"Update Ui Settings","description":"Update UI-specific configuration flags.\nOnly proxy admins are allowed to modify these settings.","operationId":"update_ui_settings_update_ui_settings_patch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Settings Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/upload/logo":{"post":{"tags":["UI Theme Settings"],"summary":"Upload Logo","description":"Upload a custom logo for the admin UI.\nAccepts image files (PNG, JPG, JPEG, SVG) and stores them for use in the UI.","operationId":"upload_logo_upload_logo_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_logo_upload_logo_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/get/user_banner":{"get":{"tags":["UI Settings"],"summary":"Get User Banner","description":"Get the admin-published dashboard banner.\nReadable by any authenticated user; rendered on every dashboard page.","operationId":"get_user_banner_get_user_banner_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBanner"}}}}},"security":[{"APIKeyHeader":[]}]}},"/update/user_banner":{"patch":{"tags":["UI Settings"],"summary":"Update User Banner","description":"Publish, edit, or unpublish the dashboard banner.\nOnly proxy admins are allowed to modify it.","operationId":"update_user_banner_update_user_banner_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBannerUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserBannerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/team/{team_id}/callback":{"post":{"tags":["team management"],"summary":"Add Team Callbacks","description":"Add a success/failure callback to a team\n\nUse this if if you want different teams to have different success/failure callbacks\n\nParameters:\n- callback_name (Literal[\"langfuse\", \"langsmith\", \"gcs\"], required): The name of the callback to add\n- callback_type (Literal[\"success\", \"failure\", \"success_and_failure\"], required): The type of callback to add. One of:\n    - \"success\": Callback for successful LLM calls\n    - \"failure\": Callback for failed LLM calls\n    - \"success_and_failure\": Callback for both successful and failed LLM calls\n- callback_vars (StandardCallbackDynamicParams, required): A dictionary of variables to pass to the callback\n    - langfuse_public_key: The public key for the Langfuse callback\n    - langfuse_secret_key: The secret key for the Langfuse callback\n    - langfuse_secret: The secret for the Langfuse callback\n    - langfuse_host: The host for the Langfuse callback\n    - gcs_bucket_name: The name of the GCS bucket\n    - gcs_path_service_account: The path to the GCS service account\n    - langsmith_api_key: The API key for the Langsmith callback\n    - langsmith_project: The project for the Langsmith callback\n    - langsmith_base_url: The base URL for the Langsmith callback\n\nExample curl:\n```\ncurl -X POST 'http:/localhost:4000/team/dbe2f686-a686-4896-864a-4c3924458709/callback'         -H 'Content-Type: application/json'         -H 'Authorization: Bearer sk-1234'         -d '{\n    \"callback_name\": \"langfuse\",\n    \"callback_type\": \"success\",\n    \"callback_vars\": {\"langfuse_public_key\": \"pk-lf-xxxx1\", \"langfuse_secret_key\": \"sk-xxxxx\"}\n    \n}'\n```\n\nThis means for the team where team_id = dbe2f686-a686-4896-864a-4c3924458709, all LLM calls will be logged to langfuse using the public key pk-lf-xxxx1 and the secret key sk-xxxxx","operationId":"add_team_callbacks_team__team_id__callback_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTeamCallback"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["team management"],"summary":"Get Team Callbacks","description":"Get the success/failure callbacks and variables for a team\n\nParameters:\n- team_id (str, required): The unique identifier for the team\n\nExample curl:\n```\ncurl -X GET 'http://localhost:4000/team/dbe2f686-a686-4896-864a-4c3924458709/callback'         -H 'Authorization: Bearer sk-1234'\n```\n\nThis will return the callback settings for the team with id dbe2f686-a686-4896-864a-4c3924458709\n\nCovers callbacks registered through POST /team/{team_id}/callback and the Admin UI as well as\nteams still on the deprecated callback_settings shape, resolved from the team's stored metadata\nwith the same precedence used at request time. A key-level logging config overrides the team's\nat request time and is not reflected here. Credential-bearing callback_vars are returned masked\nas `***REDACTED***`\n\nReturns {\n        \"status\": \"success\",\n        \"data\": {\n            \"team_id\": team_id,\n            \"success_callbacks\": team_callback_settings_obj.success_callback,\n            \"failure_callbacks\": team_callback_settings_obj.failure_callback,\n            \"callback_vars\": team_callback_settings_obj.callback_vars,\n        },\n    }","operationId":"get_team_callbacks_team__team_id__callback_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/{team_id}/callback/{callback_name}":{"delete":{"tags":["team management"],"summary":"Delete Team Callback","description":"Remove a single callback from a team\n\nThe team's other callbacks stay registered and keep firing. Use this instead of\nPOST /team/{team_id}/disable_logging, which clears every callback on the team at once.\n\nEvery entry registered under this callback_name is removed, across callback types, so a\ncallback registered for both \"success\" and \"failure\" is deregistered by one call.\n\nParameters:\n- team_id (str, required): The unique identifier for the team\n- callback_name (str, required): The name of the callback to remove, matched exactly as it was\n  registered with POST /team/{team_id}/callback (e.g. \"langfuse\", \"langsmith\", \"gcs\")\n\nExample curl:\n```\ncurl -X DELETE 'http://localhost:4000/team/dbe2f686-a686-4896-864a-4c3924458709/callback/langsmith'         -H 'Authorization: Bearer sk-1234'\n```\n\nCovers callbacks registered through POST /team/{team_id}/callback and the Admin UI. Teams still\non the deprecated callback_settings metadata shape hold no such entries, so this returns 404 for\nthem; POST /team/{team_id}/disable_logging remains the way to clear those.\n\nReturns 404 if the team does not exist, or if callback_name is not registered for the team.","operationId":"delete_team_callback_team__team_id__callback__callback_name__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}},{"name":"callback_name","in":"path","required":true,"schema":{"type":"string","title":"Callback Name"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCallbackDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/{team_id}/disable_logging":{"post":{"tags":["team management"],"summary":"Disable Team Logging","description":"Disable all logging callbacks for a team\n\nCallbacks registered through POST /team/{team_id}/callback and the Admin UI are cleared, so\nre-enabling logging means registering them again with their callback_vars\n\nParameters:\n- team_id (str, required): The unique identifier for the team\n\nExample curl:\n```\ncurl -X POST 'http://localhost:4000/team/dbe2f686-a686-4896-864a-4c3924458709/disable_logging'         -H 'Authorization: Bearer sk-1234'\n```","operationId":"disable_team_logging_team__team_id__disable_logging_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","title":"Team Id"}},{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/budget/new":{"post":{"tags":["budget management"],"summary":"New Budget","description":"Create a new budget object. Can apply this to teams, orgs, end-users, keys.\n\nParameters:\n- budget_duration: Optional[str] - Budget reset period (\"30d\", \"1h\", etc.)\n- budget_id: Optional[str] - The id of the budget. If not provided, a new id will be generated.\n- max_budget: Optional[float] - The max budget for the budget.\n- soft_budget: Optional[float] - The soft budget for the budget.\n- max_parallel_requests: Optional[int] - The max number of parallel requests for the budget.\n- tpm_limit: Optional[int] - The tokens per minute limit for the budget.\n- rpm_limit: Optional[int] - The requests per minute limit for the budget.\n- model_max_budget: Optional[dict] - Specify max budget for a given model. Example: {\"openai/gpt-4o-mini\": {\"max_budget\": 100.0, \"budget_duration\": \"1d\", \"tpm_limit\": 100000, \"rpm_limit\": 100000}}\n- budget_reset_at: Optional[datetime] - Datetime when the initial budget is reset. Default is now.","operationId":"new_budget_budget_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetNewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/budget/update":{"post":{"tags":["budget management"],"summary":"Update Budget","description":"Update an existing budget object.\n\nParameters:\n- budget_duration: Optional[str] - Budget reset period (\"30d\", \"1h\", etc.)\n- budget_id: Optional[str] - The id of the budget. If not provided, a new id will be generated.\n- max_budget: Optional[float] - The max budget for the budget.\n- soft_budget: Optional[float] - The soft budget for the budget.\n- max_parallel_requests: Optional[int] - The max number of parallel requests for the budget.\n- tpm_limit: Optional[int] - The tokens per minute limit for the budget.\n- rpm_limit: Optional[int] - The requests per minute limit for the budget.\n- model_max_budget: Optional[dict] - Specify max budget for a given model. Example: {\"openai/gpt-4o-mini\": {\"max_budget\": 100.0, \"budget_duration\": \"1d\", \"tpm_limit\": 100000, \"rpm_limit\": 100000}}\n- budget_reset_at: Optional[datetime] - Update the Datetime when the budget was last reset.","operationId":"update_budget_budget_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetNewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/budget/info":{"post":{"tags":["budget management"],"summary":"Info Budget","description":"Get the budget id specific information\n\nParameters:\n- budgets: List[str] - The list of budget ids to get information for","operationId":"info_budget_budget_info_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/budget/settings":{"get":{"tags":["budget management"],"summary":"Budget Settings","description":"Get list of configurable params + current value for a budget item + description of each field\n\nUsed on Admin UI.\n\nQuery Parameters:\n- budget_id: str - The budget id to get information for","operationId":"budget_settings_budget_settings_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"budget_id","in":"query","required":true,"schema":{"type":"string","title":"Budget Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/budget/list":{"get":{"tags":["budget management"],"summary":"List Budget","description":"List all the created budgets in proxy db. Used on Admin UI.","operationId":"list_budget_budget_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/budget/delete":{"post":{"tags":["budget management"],"summary":"Delete Budget","description":"Delete budget\n\nParameters:\n- id: str - The budget id to delete","operationId":"delete_budget_budget_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/model/{model_id}/update":{"patch":{"tags":["model management"],"summary":"Patch Model","description":"PATCH Endpoint for partial model updates.\n\nOnly updates the fields specified in the request while preserving other existing values.\nFollows proper PATCH semantics by only modifying provided fields.\n\nArgs:\n    model_id: The ID of the model to update\n    patch_data: The fields to update and their new values\n    user_api_key_dict: User authentication information\n    request: The incoming HTTP request, when called through FastAPI\n\nReturns:\n    Updated model information\n\nRaises:\n    ProxyException: For various error conditions including authentication and database errors","operationId":"patch_model_model__model_id__update_patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/updateDeployment"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/block":{"post":{"tags":["model management"],"summary":"Block Model","description":"Block a DB-stored model deployment from serving requests.\n\nParameters:\n- model_id: str - The model deployment id to block.","operationId":"block_model_model_block_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockModelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ProxyModelTable"},{"type":"null"}],"title":"Response Block Model Model Block Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/unblock":{"post":{"tags":["model management"],"summary":"Unblock Model","description":"Unblock a DB-stored model deployment so it can serve requests again.\n\nParameters:\n- model_id: str - The model deployment id to unblock.","operationId":"unblock_model_model_unblock_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockModelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ProxyModelTable"},{"type":"null"}],"title":"Response Unblock Model Model Unblock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/model/delete":{"post":{"tags":["model management"],"summary":"Delete Model","description":"Allows deleting models in the model list in the config.yaml","operationId":"delete_model_model_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelInfoDelete"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/model/new":{"post":{"tags":["model management"],"summary":"Add New Model","description":"Allows adding new models to the model list in the config.yaml","operationId":"add_new_model_model_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/model/update":{"post":{"tags":["model management"],"summary":"Update Model","description":"Edit existing model params","operationId":"update_model_model_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/updateDeployment"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/model_group/make_public":{"post":{"tags":["model management"],"summary":"Update Public Model Groups","description":"Update which model groups are public","operationId":"update_public_model_groups_model_group_make_public_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePublicModelGroupsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/model_hub/update_useful_links":{"post":{"tags":["model management"],"summary":"Update Useful Links","description":"Update useful links","operationId":"update_useful_links_model_hub_update_useful_links_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsefulLinksRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/auto_router/classifier/default_prompt":{"get":{"tags":["model management"],"summary":"Get Auto Router Classifier Default Prompt","description":"Get the built-in system prompt used by an auto-router's LLM classifier","operationId":"get_auto_router_classifier_default_prompt_auto_router_classifier_default_prompt_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"context_window_size","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Context Window Size"}},{"name":"tier_labels","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier Labels"}},{"name":"classification_rubric","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ClassificationRubric"},{"type":"null"}],"title":"Classification Rubric"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRouterClassifierDefaultPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/access_group/new":{"post":{"tags":["model management"],"summary":"Create Model Group","description":"Create a new access group containing multiple model names.\n\nAn access group is a named collection of model groups that can be referenced\nby teams/keys for simplified access control.\n\nExample:\n```bash\ncurl -X POST 'http://localhost:4000/access_group/new' \\\n  -H 'Authorization: Bearer sk-1234' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"access_group\": \"production-models\",\n    \"model_names\": [\"gpt-4\", \"claude-3-opus\", \"gemini-pro\"]\n  }'\n```\n\nParameters:\n- access_group: str - The access group name (e.g., \"production-models\")\n- model_names: List[str] - List of existing model groups to include\n\nReturns:\n- NewModelGroupResponse with the created access group details\n\nRaises:\n- HTTPException 400: If any model names don't exist\n- HTTPException 500: If database operations fail","operationId":"create_model_group_access_group_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewModelGroupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewModelGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/access_group/list":{"get":{"tags":["model management"],"summary":"List Access Groups","description":"List all access groups.\n\nReturns a list of all access groups with their model names and deployment counts.\n\nExample:\n```bash\ncurl -X GET 'http://localhost:4000/access_group/list' \\\n  -H 'Authorization: Bearer sk-1234'\n```\n\nReturns:\n- ListAccessGroupsResponse with all access groups","operationId":"list_access_groups_access_group_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccessGroupsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/access_group/{access_group}/info":{"get":{"tags":["model management"],"summary":"Get Access Group Info","description":"Get information about a specific access group.\n\nExample:\n```bash\ncurl -X GET 'http://localhost:4000/access_group/production-models/info' \\\n  -H 'Authorization: Bearer sk-1234'\n```\n\nParameters:\n- access_group: str - The access group name (URL path parameter)\n\nReturns:\n- AccessGroupInfo with the access group details\n\nRaises:\n- HTTPException 404: If access group not found","operationId":"get_access_group_info_access_group__access_group__info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"access_group","in":"path","required":true,"schema":{"type":"string","title":"Access Group"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/access_group/{access_group}/update":{"put":{"tags":["model management"],"summary":"Update Access Group","description":"Update an access group's model names.\n\nThis will:\n1. Remove the access group from all current deployments\n2. Add the access group to all deployments for the new model_names list\n\nExample:\n```bash\ncurl -X PUT 'http://localhost:4000/access_group/production-models/update' \\\n  -H 'Authorization: Bearer sk-1234' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"model_names\": [\"gpt-4\", \"claude-3-sonnet\"]\n  }'\n```\n\nParameters:\n- access_group: str - The access group name (URL path parameter)\n- model_names: List[str] - New list of model groups to include\n\nReturns:\n- NewModelGroupResponse with the updated access group details\n\nRaises:\n- HTTPException 400: If any model names don't exist\n- HTTPException 404: If access group not found","operationId":"update_access_group_access_group__access_group__update_put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"access_group","in":"path","required":true,"schema":{"type":"string","title":"Access Group"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateModelGroupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewModelGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/access_group/{access_group}/delete":{"delete":{"tags":["model management"],"summary":"Delete Access Group","description":"Delete an access group.\n\nRemoves the access group from all deployments that have it.\n\nExample:\n```bash\ncurl -X DELETE 'http://localhost:4000/access_group/production-models/delete' \\\n  -H 'Authorization: Bearer sk-1234'\n```\n\nParameters:\n- access_group: str - The access group name (URL path parameter)\n\nReturns:\n- DeleteModelGroupResponse with deletion details\n\nRaises:\n- HTTPException 404: If access group not found","operationId":"delete_access_group_access_group__access_group__delete_delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"access_group","in":"path","required":true,"schema":{"type":"string","title":"Access Group"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteModelGroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auto_router/validate_complexity_router_config":{"post":{"tags":["model management"],"summary":"Validate Complexity Router Config","description":"Validate a complexity-router config without saving it.\n\nRuns the same check every write path runs (the router's own pydantic model), so a form can\nshow the backend's exact verdict while the operator is still editing rather than after a\nrejected save. Gated exactly like the save it rehearses: a proxy admin, or a team admin\nnaming their own team. Nothing is created, routed, or billed.","operationId":"validate_complexity_router_config_auto_router_validate_complexity_router_config_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplexityRouterConfigValidationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplexityRouterConfigValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/auto_router/test_routing":{"post":{"tags":["model management"],"summary":"Preview Auto Router Routing","description":"Route a single prompt through a complexity-router config and report where it landed.\n\nAnswers \"which model would this prompt get?\" for a config that only exists in a form,\nso an auto router can be checked before it is created. The prompt is classified by the\nsame pre-routing hook a live request runs, then dropped: nothing is sent to the model it\nrouted to, and no auto router is created. A heuristic config therefore spends nothing, while\nan `llm` classifier or semantic keyword matching bills its classifier/embedding call to the\ncalling key, like Test Connection does.\n\n**Example Request:**\n```json\n{\n    \"prompt\": \"think step by step about how to shard this table\",\n    \"complexity_router_config\": {\n        \"tiers\": {\"SIMPLE\": [\"gpt-4o-mini\"], \"REASONING\": [\"o3\"]},\n        \"classifier_type\": \"heuristic\"\n    }\n}\n```","operationId":"preview_auto_router_routing_auto_router_test_routing_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRouterRoutingTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRouterRoutingTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/auto_router/benchmarks":{"get":{"tags":["auto router"],"summary":"Get Auto Router Benchmarks","description":"Benchmarks for the auto-router dashboard: session shape, savings against the configured\nbaseline, and prompt-caching behaviour bucketed by what the router did.\n\nReads the LiteLLM_AutoRouterSession rollup, folded once per request at spend-write time,\nso this endpoint never scans LiteLLM_SpendLogs. A session is in the window when it\noverlaps it: its last turn is on or after start_date and its first turn is on or before\nend_date. Overall hit rate is over telemetry-bearing turns; each bucket's hit rate is\nover that bucket's turns.","operationId":"get_auto_router_benchmarks_auto_router_benchmarks_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD UTC, inclusive (defaults to 30 days before end_date)","title":"Start Date"},"description":"YYYY-MM-DD UTC, inclusive (defaults to 30 days before end_date)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD UTC, inclusive (defaults to today)","title":"End Date"},"description":"YYYY-MM-DD UTC, inclusive (defaults to today)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRouterBenchmarksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auto_router/shadow_eval/start":{"post":{"tags":["auto router"],"summary":"Start Shadow Eval","description":"Start a shadow eval: duplicate a sampled slice of one or more keys' live traffic against\na second arm, judge the two responses blind, and stratify win rates by tier, by the model\nthat served the real arm, and by key.\n\nA forward job answers whether the keys should adopt router_name: it samples the requests\nthe router did not serve and duplicates them through it. A reverse job answers whether a\nkey already on the router still gains from it: it samples the requests the router did\nserve and duplicates them against baseline_model. A key can hold one active job per\ndirection, so both questions can run at once.\n\nShadow responses are never served to users. Each key samples until its recorded eval\nspend, the shadow and judge calls' own cost, reaches max_budget dollars, the job's\nwindow ends, or the job is stopped, so one key running out of budget does not end\nsampling for the others; sampling changes propagate to pods within about 10 seconds.\nShadow and judge calls bill to the shadowed key but are excluded from request counts\nand auto-router adoption metrics.","operationId":"start_shadow_eval_auto_router_shadow_eval_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartShadowEvalRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowEvalJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/auto_router/shadow_eval":{"get":{"tags":["auto router"],"summary":"List Shadow Eval Jobs","description":"List shadow eval jobs, newest first, each key with its attempt count so status is\naccurate. Judged counts, spend, and results ride the detail endpoint only.","operationId":"list_shadow_eval_jobs_auto_router_shadow_eval_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to jobs that shadow this key, alone or alongside others","title":"Api Key Id"},"description":"Filter to jobs that shadow this key, alone or alongside others"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Newest jobs to return","default":50,"title":"Limit"},"description":"Newest jobs to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShadowEvalJobResponse"},"title":"Response List Shadow Eval Jobs Auto Router Shadow Eval Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auto_router/shadow_eval/{job_id}":{"get":{"tags":["auto router"],"summary":"Get Shadow Eval Job","description":"One job with derived counts, judge spend, latest error, and stratified results.","operationId":"get_shadow_eval_job_auto_router_shadow_eval__job_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowEvalJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auto_router/shadow_eval/{job_id}/stop":{"post":{"tags":["auto router"],"summary":"Stop Shadow Eval Job","description":"Stop an active shadow eval job, every key it scopes at once. Attempts are kept;\nsampling halts within ~10s. Keys that already stopped on their own budget keep the\nstopped_at they earned. The statement is the whole state machine: it claims the job\nonly while a leg still samples inside the window with no stop recorded, so a racing\noperator, a same-instant budget spend, and a repeat stop all read the same 400 with\nthe status the job actually holds.","operationId":"stop_shadow_eval_job_auto_router_shadow_eval__job_id__stop_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadowEvalJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/new":{"post":{"tags":["tag management"],"summary":"New Tag","description":"Create a new tag.\n\nParameters:\n- name: str - The name of the tag\n- description: Optional[str] - Description of what this tag represents\n- models: List[str] - List of either 'model_id' or 'model_name' allowed for this tag\n- budget_id: Optional[str] - The id for a budget (tpm/rpm/max budget) for the tag\n\n### IF NO BUDGET ID - CREATE ONE WITH THESE PARAMS ###\n- max_budget: Optional[float] - Max budget for tag\n- tpm_limit: Optional[int] - Max tpm limit for tag\n- rpm_limit: Optional[int] - Max rpm limit for tag\n- max_parallel_requests: Optional[int] - Max parallel requests for tag\n- soft_budget: Optional[float] - Get a slack alert when this soft budget is reached\n- model_max_budget: Optional[dict] - Max budget for a specific model\n- budget_duration: Optional[str] - Frequency of resetting tag budget","operationId":"new_tag_tag_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagNewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/update":{"post":{"tags":["tag management"],"summary":"Update Tag","description":"Update an existing tag.\n\nParameters:\n- name: str - The name of the tag to update\n- description: Optional[str] - Updated description\n- models: List[str] - Updated list of allowed LLM models\n- budget_id: Optional[str] - The id for a budget to associate with the tag\n\n### BUDGET UPDATE PARAMS ###\n- max_budget: Optional[float] - Max budget for tag\n- tpm_limit: Optional[int] - Max tpm limit for tag\n- rpm_limit: Optional[int] - Max rpm limit for tag\n- max_parallel_requests: Optional[int] - Max parallel requests for tag\n- soft_budget: Optional[float] - Get a slack alert when this soft budget is reached\n- model_max_budget: Optional[dict] - Max budget for a specific model\n- budget_duration: Optional[str] - Frequency of resetting tag budget","operationId":"update_tag_tag_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/info":{"post":{"tags":["tag management"],"summary":"Info Tag","description":"Get information about specific tags.\n\nParameters:\n- names: List[str] - List of tag names to get information for","operationId":"info_tag_tag_info_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagInfoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/list":{"get":{"tags":["tag management"],"summary":"List Tags","description":"List all available tags with their budget information.","operationId":"list_tags_tag_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional start date (YYYY-MM-DD). When provided together with end_date, dynamic tags are limited to those active in the window. Stored tags are always returned.","title":"Start Date"},"description":"Optional start date (YYYY-MM-DD). When provided together with end_date, dynamic tags are limited to those active in the window. Stored tags are always returned."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional end date (YYYY-MM-DD). Must be given with start_date.","title":"End Date"},"description":"Optional end date (YYYY-MM-DD). Must be given with start_date."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/delete":{"post":{"tags":["tag management"],"summary":"Delete Tag","description":"Delete a tag.\n\nParameters:\n- name: str - The name of the tag to delete","operationId":"delete_tag_tag_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/daily/activity":{"get":{"tags":["tag management"],"summary":"Get Tag Daily Activity","description":"Get daily activity for specific tags or all tags.\n\nArgs:\n    tags (Optional[str]): Comma-separated list of tags to filter by. If not provided, returns data for all tags.\n    start_date (Optional[str]): Start date for the activity period (YYYY-MM-DD).\n    end_date (Optional[str]): End date for the activity period (YYYY-MM-DD).\n    model (Optional[str]): Filter by model name.\n    api_key (Optional[str]): Filter by API key.\n    page (int): Page number for pagination.\n    page_size (int): Number of items per page.\n\nReturns:\n    SpendAnalyticsPaginatedResponse: Paginated response containing daily activity data.","operationId":"get_tag_daily_activity_tag_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflows/runs":{"post":{"tags":["workflow management"],"summary":"Create Workflow Run","description":"Create a new workflow run. Returns run_id and session_id.\n\nThe caller's API key token is stored as created_by so that non-admin keys\ncan only see and modify their own runs.","operationId":"create_workflow_run_v1_workflows_runs_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workflow management"],"summary":"List Workflow Runs","description":"List workflow runs. Filter by workflow_type and/or status.\n\nNon-admin callers only see runs created by their own API key.","operationId":"list_workflow_runs_v1_workflows_runs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"workflow_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflows/runs/{run_id}":{"get":{"tags":["workflow management"],"summary":"Get Workflow Run","description":"Get a workflow run with its most recent event.","operationId":"get_workflow_run_v1_workflows_runs__run_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workflow management"],"summary":"Update Workflow Run","description":"Update status, metadata, or output on a workflow run.","operationId":"update_workflow_run_v1_workflows_runs__run_id__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflows/runs/{run_id}/events":{"post":{"tags":["workflow management"],"summary":"Append Workflow Event","description":"Append an event to the run's event log. Also updates run.status if event_type maps to a status.\n\nSequence numbers use optimistic concurrency: on a unique-constraint collision\n(concurrent append), retries up to _MAX_SEQUENCE_RETRIES times with a fresh MAX+1.\nThe event+status update is atomic in a single DB transaction.","operationId":"append_workflow_event_v1_workflows_runs__run_id__events_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowEventCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workflow management"],"summary":"List Workflow Events","description":"Fetch event log for a run, ordered by sequence_number. Default limit 100, max 500.","operationId":"list_workflow_events_v1_workflows_runs__run_id__events_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflows/runs/{run_id}/messages":{"post":{"tags":["workflow management"],"summary":"Append Workflow Message","description":"Append a conversation message. Stores full content (not truncated).\n\nUses optimistic concurrency for sequence numbers.","operationId":"append_workflow_message_v1_workflows_runs__run_id__messages_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMessageCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workflow management"],"summary":"List Workflow Messages","description":"Fetch conversation history for a run, ordered by sequence_number. Default limit 100, max 500.","operationId":"list_workflow_messages_v1_workflows_runs__run_id__messages_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/memory":{"post":{"tags":["memory management"],"summary":"Create Memory","description":"Create a new memory entry for the caller (or, for admins, any scope).","operationId":"create_memory_v1_memory_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_MemoryRow"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["memory management"],"summary":"List Memory","description":"List memory entries visible to the caller.","operationId":"list_memory_v1_memory_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by exact key match.","title":"Key"},"description":"Filter by exact key match."},{"name":"key_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by key prefix (Redis-style namespace scan). Mutually exclusive with `key`; if both are provided, `key_prefix` wins.","title":"Key Prefix"},"description":"Filter by key prefix (Redis-style namespace scan). Mutually exclusive with `key`; if both are provided, `key_prefix` wins."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/memory/{key}":{"get":{"tags":["memory management"],"summary":"Get Memory","description":"Get a single memory entry by key, scoped to the caller.","operationId":"get_memory_v1_memory__key__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_MemoryRow"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["memory management"],"summary":"Upsert Memory","description":"Upsert a memory entry by key within the caller's scope.\n\nIf no row exists for (key, caller.user_id, caller.team_id), create one.\nIf one exists, update the value/metadata fields that were provided.","operationId":"upsert_memory_v1_memory__key__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_MemoryRow"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["memory management"],"summary":"Delete Memory","description":"Delete a memory entry by key, scoped to the caller.","operationId":"delete_memory_v1_memory__key__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugins":{"get":{"tags":["plugins"],"summary":"List Plugins","description":"Return registered plugins for authenticated UI callers.\n\nplugin_key is never returned — the browser never needs it (the proxy injects\nit server-side from the registry), and exposing it here would leak the\ncredential into React state and DevTools.  Admin key management goes through\nthe redacted /config/field/info path instead.","operationId":"list_plugins_api_plugins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Response List Plugins Api Plugins Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/plugins/auth-token":{"get":{"tags":["plugins"],"summary":"Plugin Auth Token","description":"Issue a short-lived, audience-scoped plugin session claim.\n\nThe claim contains {user_id, user_role, plugin, exp}.  It does NOT\ncontain the caller's litellm bearer token — a compromised plugin can\nonly learn the caller's identity, not impersonate them against the proxy.\n\nEncrypted with a key derived from HMAC(LITELLM_SALT_KEY, plugin_name),\nso each plugin holds only its own key and cannot forge claims for others.\n\nRequires LITELLM_SALT_KEY to be set; returns 503 otherwise.","operationId":"plugin_auth_token_api_plugins_auth_token_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"plugin_name","in":"query","required":false,"schema":{"type":"string","default":"litellm-platform-plugin","title":"Plugin Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Plugin Auth Token Api Plugins Auth Token Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/cost_discount_config":{"get":{"tags":["Cost Tracking"],"summary":"Get Cost Discount Config","description":"Get current cost discount configuration.\n\nReturns the cost_discount_config from litellm_settings.","operationId":"get_cost_discount_config_config_cost_discount_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"patch":{"tags":["Cost Tracking"],"summary":"Update Cost Discount Config","description":"Update cost discount configuration.\n\nUpdates the cost_discount_config in litellm_settings.\nDiscounts should be between 0 and 1 (e.g., 0.05 = 5% discount).\n\nExample:\n```json\n{\n    \"vertex_ai\": 0.05,\n    \"gemini\": 0.05,\n    \"openai\": 0.01\n}\n```","operationId":"update_cost_discount_config_config_cost_discount_config_patch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"number"},"type":"object","title":"Cost Discount Config"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/config/cost_margin_config":{"get":{"tags":["Cost Tracking"],"summary":"Get Cost Margin Config","description":"Get current cost margin configuration.\n\nReturns the cost_margin_config from litellm_settings.","operationId":"get_cost_margin_config_config_cost_margin_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"patch":{"tags":["Cost Tracking"],"summary":"Update Cost Margin Config","description":"Update cost margin configuration.\n\nUpdates the cost_margin_config in litellm_settings.\nMargins can be:\n- Percentage: {\"openai\": 0.10} = 10% margin\n- Fixed amount: {\"openai\": {\"fixed_amount\": 0.001}} = $0.001 per request\n- Combined: {\"vertex_ai\": {\"percentage\": 0.08, \"fixed_amount\": 0.0005}}\n- Global: {\"global\": 0.05} = 5% global margin on all providers\n\nExample:\n```json\n{\n    \"global\": 0.05,\n    \"openai\": 0.10,\n    \"anthropic\": {\"fixed_amount\": 0.001},\n    \"vertex_ai\": {\"percentage\": 0.08, \"fixed_amount\": 0.0005}\n}\n```","operationId":"update_cost_margin_config_config_cost_margin_config_patch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"anyOf":[{"type":"number"},{"additionalProperties":{"type":"number"},"type":"object"}]},"type":"object","title":"Cost Margin Config"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/config/block_requests_for_models_without_pricing":{"get":{"tags":["Cost Tracking"],"summary":"Get Block Requests For Models Without Pricing","operationId":"get_block_requests_for_models_without_pricing_config_block_requests_for_models_without_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUnpricedModelsResponse"}}}}},"security":[{"APIKeyHeader":[]}]},"patch":{"tags":["Cost Tracking"],"summary":"Update Block Requests For Models Without Pricing","operationId":"update_block_requests_for_models_without_pricing_config_block_requests_for_models_without_pricing_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUnpricedModelsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUnpricedModelsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/cost/estimate":{"post":{"tags":["Cost Tracking"],"summary":"Estimate Cost","description":"Estimate cost for a given model and token counts.\n\nThis endpoint uses the same cost calculation logic as actual requests,\nincluding any configured margins and discounts.\n\nParameters:\n- model: Model name (e.g., \"gpt-4\", \"claude-3-opus\")\n- input_tokens: Expected input tokens per request\n- output_tokens: Expected output tokens per request\n- num_requests_per_day: Number of requests per day (optional)\n- num_requests_per_month: Number of requests per month (optional)\n\nReturns cost breakdown including:\n- Per-request costs (input, output, margin)\n- Daily costs (if num_requests_per_day provided)\n- Monthly costs (if num_requests_per_month provided)\n\nExample:\n```json\n{\n    \"model\": \"gpt-4\",\n    \"input_tokens\": 1000,\n    \"output_tokens\": 500,\n    \"num_requests_per_day\": 100,\n    \"num_requests_per_month\": 3000\n}\n```","operationId":"estimate_cost_cost_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostEstimateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostEstimateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/router/settings":{"get":{"tags":["Router Settings"],"summary":"Get Router Settings","description":"Get router configuration and available settings.\n\nReturns:\n- fields: List of all configurable router settings with their metadata (type, description, default, options)\n          The routing_strategy field includes available options extracted from the Router class\n- current_values: Current values of router settings from config","operationId":"get_router_settings_router_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/router/fields":{"get":{"tags":["Router Settings"],"summary":"Get Router Fields","description":"Get router settings field definitions without values.\n\nReturns only the field metadata (type, description, default, options) without\npopulating field_value. This is useful for UI components that need to know\nwhat fields to render, but will get the actual values from a different endpoint.\n\nReturns:\n- fields: List of all configurable router settings with their metadata (type, description, default, options)\n          The routing_strategy field includes available options extracted from the Router class\n          Note: field_value will be None for all fields\n- routing_strategy_descriptions: Descriptions for each routing strategy option","operationId":"get_router_fields_router_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterFieldsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fallback":{"post":{"tags":["Fallback Management"],"summary":"Create Fallback","description":"Create or update fallbacks for a specific model.\n\nThis endpoint allows you to configure fallback models separately from the general config.\nFallbacks are triggered when a model call fails after retries.\n\n**Example Request:**\n```json\n{\n    \"model\": \"gpt-3.5-turbo\",\n    \"fallback_models\": [\"gpt-4\", \"claude-3-haiku\"],\n    \"fallback_type\": \"general\"\n}\n```\n\n**Fallback Types:**\n- `general`: Standard fallbacks for any error (default)\n- `context_window`: Fallbacks specifically for context window exceeded errors\n- `content_policy`: Fallbacks specifically for content policy violations","operationId":"create_fallback_fallback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FallbackCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FallbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fallback/{model}":{"get":{"tags":["Fallback Management"],"summary":"Get Fallback","description":"Get fallback configuration for a specific model.\n\n**Parameters:**\n- `model`: The model name to get fallbacks for\n- `fallback_type`: Type of fallback to retrieve (query parameter)\n\n**Example:**\n```\nGET /fallback/gpt-3.5-turbo?fallback_type=general\n```","operationId":"get_fallback_fallback__model__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"type":"string","title":"Model"}},{"name":"fallback_type","in":"query","required":false,"schema":{"enum":["general","context_window","content_policy"],"type":"string","default":"general","title":"Fallback Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FallbackGetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Fallback Management"],"summary":"Delete Fallback","description":"Delete fallback configuration for a specific model.\n\n**Parameters:**\n- `model`: The model name to delete fallbacks for\n- `fallback_type`: Type of fallback to delete (query parameter)\n\n**Example:**\n```\nDELETE /fallback/gpt-3.5-turbo?fallback_type=general\n```","operationId":"delete_fallback_fallback__model__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"type":"string","title":"Model"}},{"name":"fallback_type","in":"query","required":false,"schema":{"enum":["general","context_window","content_policy"],"type":"string","default":"general","title":"Fallback Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FallbackDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cache/settings":{"get":{"tags":["Cache Settings"],"summary":"Get Cache Settings","description":"Get cache configuration and available settings.\n\nReturns:\n- fields: List of all configurable cache settings with their metadata (type, description, default, options)\n- current_values: Current values of cache settings from database","operationId":"get_cache_settings_cache_settings_get","security":[{"APIKeyHeader":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CacheSettingsResponse"}}}}}},"post":{"tags":["Cache Settings"],"summary":"Update Cache Settings","description":"Save cache settings to database and initialize cache.\n\nThis endpoint:\n1. Encrypts sensitive fields (passwords, etc.)\n2. Saves to LiteLLM_CacheConfig table\n3. Reinitializes cache with new settings","operationId":"update_cache_settings_cache_settings_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CacheSettingsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cache/settings/test":{"post":{"tags":["Cache Settings"],"summary":"Test Cache Connection","description":"Test cache connection with provided credentials.\n\nCreates a temporary cache instance and uses its test_connection method\nto verify the credentials work without affecting global state.","operationId":"test_cache_connection_cache_settings_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CacheTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CacheTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/coordination_redis/settings":{"get":{"tags":["Coordination Redis Settings"],"summary":"Get Coordination Redis Settings","description":"Get the coordination Redis configuration and available settings.\n\nReturns:\n- values: current coordination Redis settings, with password/sentinel_password/url redacted\n- fields: all configurable settings with their metadata (type, description, default, section)\n- source: \"coordination_redis\" | \"cache_backend\" | \"environment\" | null","operationId":"get_coordination_redis_settings_coordination_redis_settings_get","security":[{"APIKeyHeader":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoordinationRedisSettingsResponse"}}}}}},"post":{"tags":["Coordination Redis Settings"],"summary":"Update Coordination Redis Settings","description":"Save coordination Redis settings under `general_settings.coordination_redis`.\n\nParameters:\n- settings: dict - Redis connection params (host, port, username, password, url, ssl, startup_nodes, sentinel_nodes, sentinel_password, service_name). Values may be `os.environ/VAR` references, which are stored as written and resolved at startup\n\nThe settings are written to the `general_settings` row of LiteLLM_Config,\nwhich startup merges over the yaml config; the proxy picks them up on its\nnext restart.","operationId":"update_coordination_redis_settings_coordination_redis_settings_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"litellm-changed-by","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability","title":"Litellm-Changed-By"},"description":"The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoordinationRedisSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Coordination Redis Settings Coordination Redis Settings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coordination_redis/settings/test":{"post":{"tags":["Coordination Redis Settings"],"summary":"Check Coordination Redis Connection","description":"Test a coordination Redis connection with the provided credentials.\n\nParameters:\n- settings: dict - Redis connection params to test. Credential fields sent back as `***REDACTED***` fall back to the saved value\n\nBuilds a throwaway client (never touching global state) and pings it.","operationId":"check_coordination_redis_connection_coordination_redis_settings_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoordinationRedisSettingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoordinationRedisTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/distinct":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Distinct User Agent Tags","description":"Get all distinct user agent tags up to a maximum of {MAX_TAGS} tags.\n\nThis endpoint returns all unique user agent tags found in the database,\nsorted by frequency of usage.\n\nReturns:\n    DistinctTagsResponse: List of distinct user agent tags","operationId":"get_distinct_user_agent_tags_tag_distinct_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistinctTagsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/tag/dau":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Daily Active Users","description":"Get Daily Active Users (DAU) by tags for the last {MAX_DAYS} days ending on UTC today + 1 day.\n\nThis endpoint efficiently calculates unique users per tag for each of the last {MAX_DAYS} days\nusing a single optimized SQL query, perfect for dashboard time series visualization.\n\nArgs:\n    tag_filter: Optional filter to specific tag (legacy)\n    tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter)\n\nReturns:\n    ActiveUsersAnalyticsResponse: DAU data by tag for each of the last {MAX_DAYS} days","operationId":"get_daily_active_users_tag_dau_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tag_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific tag (optional)","title":"Tag Filter"},"description":"Filter by specific tag (optional)"},{"name":"tag_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)","title":"Tag Filters"},"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveUsersAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/wau":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Weekly Active Users","description":"Get Weekly Active Users (WAU) by tags for the last {MAX_WEEKS} weeks ending on UTC today + 1 day.\n\nShows week-by-week breakdown:\n- Week 1 (Jan 1): Earliest week (7 weeks ago)\n- Week 2 (Jan 8): Next week (6 weeks ago)\n- Week 3 (Jan 15): Next week (5 weeks ago)\n- ... and so on for {MAX_WEEKS} weeks total\n- Week 7: Most recent week ending on UTC today + 1 day\n\nArgs:\n    tag_filter: Optional filter to specific tag (legacy)\n    tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter)\n\nReturns:\n    ActiveUsersAnalyticsResponse: WAU data by tag for each of the last {MAX_WEEKS} weeks with descriptive week labels (e.g., \"Week 1 (Jan 1)\")","operationId":"get_weekly_active_users_tag_wau_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tag_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific tag (optional)","title":"Tag Filter"},"description":"Filter by specific tag (optional)"},{"name":"tag_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)","title":"Tag Filters"},"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveUsersAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/mau":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Monthly Active Users","description":"Get Monthly Active Users (MAU) by tags for the last {MAX_MONTHS} months ending on UTC today + 1 day.\n\nShows month-by-month breakdown:\n- Month 1 (Nov): Earliest month (7 months ago, 30-day period)\n- Month 2 (Dec): Next month (6 months ago)\n- Month 3 (Jan): Next month (5 months ago)\n- ... and so on for {MAX_MONTHS} months total\n- Month 7: Most recent month ending on UTC today + 1 day\n\nArgs:\n    tag_filter: Optional filter to specific tag (legacy)\n    tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter)\n\nReturns:\n    ActiveUsersAnalyticsResponse: MAU data by tag for each of the last {MAX_MONTHS} months with descriptive month labels (e.g., \"Month 1 (Nov)\")","operationId":"get_monthly_active_users_tag_mau_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tag_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific tag (optional)","title":"Tag Filter"},"description":"Filter by specific tag (optional)"},{"name":"tag_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)","title":"Tag Filters"},"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveUsersAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/summary":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Tag Summary","description":"Get summary analytics for tags including unique users, requests, tokens, and spend.\n\nArgs:\n    start_date: Start date for the analytics period (YYYY-MM-DD)\n    end_date: End date for the analytics period (YYYY-MM-DD)\n    tag_filter: Optional filter to specific tag (legacy)\n    tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter)\n\nReturns:\n    TagSummaryResponse: Summary analytics data by tag","operationId":"get_tag_summary_tag_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","description":"Start date in YYYY-MM-DD format","title":"Start Date"},"description":"Start date in YYYY-MM-DD format"},{"name":"end_date","in":"query","required":true,"schema":{"type":"string","description":"End date in YYYY-MM-DD format","title":"End Date"},"description":"End date in YYYY-MM-DD format"},{"name":"tag_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific tag (optional)","title":"Tag Filter"},"description":"Filter by specific tag (optional)"},{"name":"tag_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)","title":"Tag Filters"},"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tag/user-agent/per-user-analytics":{"get":{"tags":["tag management","user agent analytics"],"summary":"Get Per User Analytics","description":"Get per-user analytics including successful requests, tokens, and spend by individual users.\n\nThis endpoint provides usage metrics broken down by individual users based on their\ntag activity during the last 30 days ending on UTC today + 1 day.\n\nArgs:\n    tag_filter: Optional filter to specific tag (legacy)\n    tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter)\n    page: Page number for pagination\n    page_size: Number of items per page\n\nReturns:\n    PerUserAnalyticsResponse: Analytics data broken down by individual users for the last 30 days","operationId":"get_per_user_analytics_tag_user_agent_per_user_analytics_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tag_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific tag (optional)","title":"Tag Filter"},"description":"Filter by specific tag (optional)"},{"name":"tag_filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)","title":"Tag Filters"},"description":"Filter by multiple specific tags (optional, takes precedence over tag_filter)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number for pagination","default":1,"title":"Page"},"description":"Page number for pagination"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerUserAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gateway/daily/activity":{"get":{"tags":["Budget & Spend Tracking"],"summary":"Get Gateway Daily Activity","description":"Successful and failed gateway requests, counted at the ASGI edge.\n\nDeployment-wide: the underlying table has no per-key or per-user dimension,\nso this is admin-only.","operationId":"get_gateway_daily_activity_gateway_daily_activity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date in YYYY-MM-DD format","title":"Start Date"},"description":"Start date in YYYY-MM-DD format"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date in YYYY-MM-DD format","title":"End Date"},"description":"End date in YYYY-MM-DD format"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayRequestActivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/email/event_settings":{"get":{"tags":["email management"],"summary":"Get Email Event Settings","description":"Get all email event settings","operationId":"get_email_event_settings_email_event_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailEventSettingsResponse"}}}}},"security":[{"APIKeyHeader":[]}]},"patch":{"tags":["email management"],"summary":"Update Event Settings","description":"Update the settings for email events","operationId":"update_event_settings_email_event_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailEventSettingsUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/email/event_settings/reset":{"post":{"tags":["email management"],"summary":"Reset Event Settings","description":"Reset all email event settings to default (new user invitations on, virtual key creation off)","operationId":"reset_event_settings_email_event_settings_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/audit":{"get":{"tags":["Audit Logging"],"summary":"Get Audit Logs","description":"Get all audit logs with filtering and pagination.\n\nReturns a paginated response of audit logs matching the specified filters.\n\nNote: object_team_id and object_key_hash use Prisma JSON path filtering,\nwhich requires PostgreSQL.","operationId":"get_audit_logs_audit_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Page Size"}},{"name":"changed_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by user or system that performed the action","title":"Changed By"},"description":"Filter by user or system that performed the action"},{"name":"changed_by_api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by API key hash that performed the action","title":"Changed By Api Key"},"description":"Filter by API key hash that performed the action"},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action type (create, update, delete)","title":"Action"},"description":"Filter by action type (create, update, delete)"},{"name":"table_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by table name that was modified","title":"Table Name"},"description":"Filter by table name that was modified"},{"name":"object_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ID of the object that was modified","title":"Object Id"},"description":"Filter by ID of the object that was modified"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs after this date","title":"Start Date"},"description":"Filter logs after this date"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter logs before this date","title":"End Date"},"description":"Filter logs before this date"},{"name":"object_team_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by team_id present in before_value or updated_values JSON (PostgreSQL only)","title":"Object Team Id"},"description":"Filter by team_id present in before_value or updated_values JSON (PostgreSQL only)"},{"name":"object_key_hash","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by token (key hash) present in before_value or updated_values JSON (PostgreSQL only)","title":"Object Key Hash"},"description":"Filter by token (key hash) present in before_value or updated_values JSON (PostgreSQL only)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (e.g. 'updated_at', 'action', 'table_name')","title":"Sort By"},"description":"Column to sort by (e.g. 'updated_at', 'action', 'table_name')"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Sort order ('asc' or 'desc')","default":"desc","title":"Sort Order"},"description":"Sort order ('asc' or 'desc')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedAuditLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/{id}":{"get":{"tags":["Audit Logging"],"summary":"Get Audit Log By Id","description":"Get detailed information about a specific audit log entry by its ID.\n\nArgs:\n    id (str): The unique identifier of the audit log entry\n\nReturns:\n    AuditLogResponse: Detailed information about the audit log entry\n\nRaises:\n    HTTPException: If the audit log is not found or if there's a database connection error","operationId":"get_audit_log_by_id_audit__id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogResponse"}}}},"404":{"description":"Audit log not found"},"500":{"description":"Database connection error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/available_users":{"get":{"tags":["Internal User management"],"summary":"Available Enterprise Users","description":"For keys with `max_users` set, return the list of users that are allowed to use the key.","operationId":"available_enterprise_users_user_available_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/project/new":{"post":{"tags":["project management"],"summary":"New Project","description":"Create a new project. Projects sit between teams and keys in the hierarchy.\n\nOnly admins or team admins can create projects.\n\n# Parameters\n\n- project_alias: *Optional[str]* - The name of the project.\n- description: *Optional[str]* - Description of the project's purpose and use case.\n- team_id: *str* - The team id that this project belongs to. Required.\n- models: *List* - The models the project has access to.\n- budget_id: *Optional[str]* - The id for a budget (tpm/rpm/max budget) for the project.\n### IF NO BUDGET ID - CREATE ONE WITH THESE PARAMS ###\n- max_budget: *Optional[float]* - Max budget for project\n- tpm_limit: *Optional[int]* - Max tpm limit for project\n- rpm_limit: *Optional[int]* - Max rpm limit for project\n- max_parallel_requests: *Optional[int]* - Max parallel requests for project\n- soft_budget: *Optional[float]* - Get a slack alert when this soft budget is reached. Don't block requests.\n- model_max_budget: *Optional[dict]* - Max budget for a specific model. Example: {\"gpt-4\": 100.0, \"gpt-3.5-turbo\": 50.0}\n- model_rpm_limit: *Optional[dict]* - RPM limits per model. Example: {\"gpt-4\": 1000, \"gpt-3.5-turbo\": 5000}\n- model_tpm_limit: *Optional[dict]* - TPM limits per model. Example: {\"gpt-4\": 50000, \"gpt-3.5-turbo\": 100000}\n- budget_duration: *Optional[str]* - Frequency of reseting project budget\n- metadata: *Optional[dict]* - Metadata for project, store information for project. Example metadata - {\"use_case_id\": \"SNOW-12345\", \"responsible_ai_id\": \"RAI-67890\"}\n- tags: *Optional[list]* - Tags for the project. Example: [\"production\", \"api\"]\n- blocked: *bool* - Flag indicating if the project is blocked or not - will stop all calls from keys with this project_id.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - project-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"]}. IF null or {} then no object permission.\n\nExample 1: Create new project **without** a budget_id, with model-specific limits\n\n```bash\ncurl --location 'http://0.0.0.0:4000/project/new' \\\n--header 'Authorization: Bearer sk-1234' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"project_alias\": \"flight-search-assistant\",\n    \"description\": \"AI-powered flight search and booking assistant\",\n    \"team_id\": \"team-123\",\n    \"models\": [\"gpt-4\", \"gpt-3.5-turbo\"],\n    \"max_budget\": 100,\n    \"model_rpm_limit\": {\n        \"gpt-4\": 1000,\n        \"gpt-3.5-turbo\": 5000\n    },\n    \"model_tpm_limit\": {\n        \"gpt-4\": 50000,\n        \"gpt-3.5-turbo\": 100000\n    },\n    \"metadata\": {\n        \"use_case_id\": \"SNOW-12345\",\n        \"responsible_ai_id\": \"RAI-67890\"\n    }\n}'\n```\n\nExample 2: Create new project **with** a budget_id\n\n```bash\ncurl --location 'http://0.0.0.0:4000/project/new' \\\n--header 'Authorization: Bearer sk-1234' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"project_alias\": \"hotel-recommendations\",\n    \"description\": \"Personalized hotel recommendation engine\",\n    \"team_id\": \"team-123\",\n    \"models\": [\"claude-3-sonnet\"],\n    \"budget_id\": \"428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689\",\n    \"metadata\": {\n        \"use_case_id\": \"SNOW-54321\"\n    }\n}'\n```","operationId":"new_project_project_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewProjectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/project/update":{"post":{"tags":["project management"],"summary":"Update Project","description":"Update a project\n\nParameters:\n- project_id: *str* - The project id to update. Required.\n- project_alias: *Optional[str]* - Updated name for the project\n- description: *Optional[str]* - Updated description for the project\n- team_id: *Optional[str]* - Updated team_id for the project\n- metadata: *Optional[dict]* - Updated metadata for project\n- models: *Optional[list]* - Updated list of models for the project\n- blocked: *Optional[bool]* - Updated blocked status\n- max_budget: *Optional[float]* - Updated max budget\n- tpm_limit: *Optional[int]* - Updated tpm limit\n- rpm_limit: *Optional[int]* - Updated rpm limit\n- model_rpm_limit: *Optional[dict]* - Updated RPM limits per model\n- model_tpm_limit: *Optional[dict]* - Updated TPM limits per model\n- budget_duration: *Optional[str]* - Updated budget duration\n- tags: *Optional[list]* - Updated list of tags for the project\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - Updated object permission\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/project/update' \\\n--header 'Authorization: Bearer sk-1234' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"project_id\": \"project-123\",\n    \"description\": \"Updated flight search system with enhanced capabilities\",\n    \"max_budget\": 200,\n    \"model_rpm_limit\": {\n        \"gpt-4\": 2000,\n        \"gpt-3.5-turbo\": 10000\n    },\n    \"metadata\": {\n        \"use_case_id\": \"SNOW-12345\",\n        \"status\": \"active\"\n    }\n}'\n```","operationId":"update_project_project_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ProjectTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/project/delete":{"delete":{"tags":["project management"],"summary":"Delete Project","description":"Delete projects\n\nParameters:\n- project_ids: *List[str]* - List of project ids to delete\n\nExample:\n```bash\ncurl --location --request DELETE 'http://0.0.0.0:4000/project/delete' \\\n--header 'Authorization: Bearer sk-1234' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"project_ids\": [\"project-123\", \"project-456\"]\n}'\n```","operationId":"delete_project_project_delete_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LiteLLM_ProjectTable"},"type":"array","title":"Response Delete Project Project Delete Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/project/info":{"get":{"tags":["project management"],"summary":"Project Info","description":"Get information about a specific project\n\nParameters:\n- project_id: *str* - The project id to fetch info for\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/project/info?project_id=project-123' \\\n--header 'Authorization: Bearer sk-1234'\n```","operationId":"project_info_project_info_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ProjectTable"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project/list":{"get":{"tags":["project management"],"summary":"List Projects","description":"List all projects that the user has access to\n\nExample:\n```bash\ncurl --location 'http://0.0.0.0:4000/project/list' \\\n--header 'Authorization: Bearer sk-1234'\n```","operationId":"list_projects_project_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LiteLLM_ProjectTable"},"type":"array","title":"Response List Projects Project List Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/robots.txt":{"get":{"summary":"Get Robots","description":"Block all web crawlers from indexing the proxy server endpoints\nThis is useful for ensuring that the API endpoints aren't indexed by search engines","operationId":"get_robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/litellm/.well-known/litellm-ui-config":{"get":{"summary":"Get Ui Config","operationId":"get_ui_config_litellm__well_known_litellm_ui_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UiDiscoveryEndpoints"}}}}}}},"/.well-known/litellm-ui-config":{"get":{"summary":"Get Ui Config","operationId":"get_ui_config__well_known_litellm_ui_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UiDiscoveryEndpoints"}}}}}}},"/models/{model_name}:generateContent":{"post":{"tags":["google genai endpoints"],"summary":"Google Generate Content","operationId":"google_generate_content_models__model_name__generateContent_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/models/{model_name}:generateContent":{"post":{"tags":["google genai endpoints"],"summary":"Google Generate Content","operationId":"google_generate_content_v1beta_models__model_name__generateContent_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/models/{model_name}:streamGenerateContent":{"post":{"tags":["google genai endpoints"],"summary":"Google Stream Generate Content","operationId":"google_stream_generate_content_models__model_name__streamGenerateContent_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/models/{model_name}:streamGenerateContent":{"post":{"tags":["google genai endpoints"],"summary":"Google Stream Generate Content","operationId":"google_stream_generate_content_v1beta_models__model_name__streamGenerateContent_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/models/{model_name}:countTokens":{"post":{"tags":["google genai endpoints"],"summary":"Google Count Tokens","description":"```json\nreturn {\n    \"totalTokens\": 31,\n    \"totalBillableCharacters\": 96,\n    \"promptTokensDetails\": [\n        {\n        \"modality\": \"TEXT\",\n        \"tokenCount\": 31\n        }\n    ]\n}\n```","operationId":"google_count_tokens_models__model_name__countTokens_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCountDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/models/{model_name}:countTokens":{"post":{"tags":["google genai endpoints"],"summary":"Google Count Tokens","description":"```json\nreturn {\n    \"totalTokens\": 31,\n    \"totalBillableCharacters\": 96,\n    \"promptTokensDetails\": [\n        {\n        \"modality\": \"TEXT\",\n        \"tokenCount\": 31\n        }\n    ]\n}\n```","operationId":"google_count_tokens_v1beta_models__model_name__countTokens_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"model_name","in":"path","required":true,"schema":{"type":"string","title":"Model Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCountDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/interactions":{"post":{"tags":["google genai endpoints","interactions"],"summary":"Create Interaction","description":"Create a new interaction using Google's Interactions API.\n\nPer OpenAPI spec: POST /{api_version}/interactions\n\nSupports both model interactions and agent interactions:\n- Model: Provide `model` parameter (e.g., \"gemini-2.5-flash\")\n- Agent: Provide `agent` parameter (e.g., \"deep-research-pro-preview-12-2025\")\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1beta/interactions\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"gemini/gemini-2.5-flash\",\n        \"input\": \"Hello, how are you?\"\n    }'\n```","operationId":"create_interaction_interactions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1beta/interactions":{"post":{"tags":["google genai endpoints","interactions"],"summary":"Create Interaction","description":"Create a new interaction using Google's Interactions API.\n\nPer OpenAPI spec: POST /{api_version}/interactions\n\nSupports both model interactions and agent interactions:\n- Model: Provide `model` parameter (e.g., \"gemini-2.5-flash\")\n- Agent: Provide `agent` parameter (e.g., \"deep-research-pro-preview-12-2025\")\n\nExample:\n```bash\ncurl -X POST \"http://localhost:4000/v1beta/interactions\"         -H \"Authorization: Bearer sk-1234\"         -H \"Content-Type: application/json\"         -d '{\n        \"model\": \"gemini/gemini-2.5-flash\",\n        \"input\": \"Hello, how are you?\"\n    }'\n```","operationId":"create_interaction_v1beta_interactions_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/interactions/{interaction_id}":{"get":{"tags":["google genai endpoints","interactions"],"summary":"Get Interaction","description":"Get an interaction by ID.\n\nPer OpenAPI spec: GET /{api_version}/interactions/{interaction_id}","operationId":"get_interaction_interactions__interaction_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["google genai endpoints","interactions"],"summary":"Delete Interaction","description":"Delete an interaction by ID.\n\nPer OpenAPI spec: DELETE /{api_version}/interactions/{interaction_id}","operationId":"delete_interaction_interactions__interaction_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/interactions/{interaction_id}":{"get":{"tags":["google genai endpoints","interactions"],"summary":"Get Interaction","description":"Get an interaction by ID.\n\nPer OpenAPI spec: GET /{api_version}/interactions/{interaction_id}","operationId":"get_interaction_v1beta_interactions__interaction_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["google genai endpoints","interactions"],"summary":"Delete Interaction","description":"Delete an interaction by ID.\n\nPer OpenAPI spec: DELETE /{api_version}/interactions/{interaction_id}","operationId":"delete_interaction_v1beta_interactions__interaction_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/interactions/{interaction_id}/cancel":{"post":{"tags":["google genai endpoints","interactions"],"summary":"Cancel Interaction","description":"Cancel an interaction by ID.\n\nPer OpenAPI spec: POST /{api_version}/interactions/{interaction_id}:cancel","operationId":"cancel_interaction_interactions__interaction_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/interactions/{interaction_id}/cancel":{"post":{"tags":["google genai endpoints","interactions"],"summary":"Cancel Interaction","description":"Cancel an interaction by ID.\n\nPer OpenAPI spec: POST /{api_version}/interactions/{interaction_id}:cancel","operationId":"cancel_interaction_v1beta_interactions__interaction_id__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"interaction_id","in":"path","required":true,"schema":{"type":"string","title":"Interaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_put","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"options":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_options","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"patch":{"summary":"Aggregate Mcp Route","description":"Serve the aggregate MCP endpoint on the bare ``/mcp`` spelling: the\n``/mcp`` mount cannot match its bare prefix, and the resulting 307 breaks\nMCP clients behind TLS-terminating proxies.","operationId":"aggregate_mcp_route_mcp_patch","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/toolset/{toolset_name}/mcp":{"head":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_head","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_delete","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_put","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_get","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_post","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_patch","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"summary":"Toolset Mcp Route","description":"Namespace a toolset as its own MCP endpoint.\n\nConnecting to /toolset/<name>/mcp exposes exactly the tools defined in\nthe toolset. Access is enforced: non-admin API keys must have the toolset\nlisted in their object_permission.mcp_toolsets grant list, or the request\nwill be rejected with a 403.","operationId":"toolset_mcp_route_toolset__toolset_name__mcp_options","parameters":[{"name":"toolset_name","in":"path","required":true,"schema":{"type":"string","title":"Toolset Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{mcp_server_name}/mcp":{"head":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_head","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_delete","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_put","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_get","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_post","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_patch","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"summary":"Dynamic Mcp Route","description":"Handle /{name}/mcp for MCP server aliases, toolsets, MCP access group tags, and comma-separated lists.\n\nResolution order:\n1. Registered MCP server alias / name\n2. Comma-separated list (short-circuits before any DB call)\n3. Toolset name (DB lookup, cached)\n4. MCP access group tag (DB lookup, cached)","operationId":"dynamic_mcp_route__mcp_server_name__mcp_options","parameters":[{"name":"mcp_server_name","in":"path","required":true,"schema":{"type":"string","title":"Mcp Server Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/messages":{"post":{"tags":["[beta] Anthropic `/v1/messages`"],"summary":"Anthropic Response","description":"Use `{PROXY_BASE_URL}/anthropic/v1/messages` instead - [Docs](https://docs.litellm.ai/docs/pass_through/anthropic_completion).\n\nThis was a BETA endpoint that calls 100+ LLMs in the anthropic format.","operationId":"anthropic_response_v1_messages_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/messages/count_tokens":{"post":{"tags":["[beta] Anthropic Messages Token Counting"],"summary":"Count Tokens","description":"Count tokens for Anthropic Messages API format.\n\nThis endpoint follows the Anthropic Messages API token counting specification.\nIt accepts the same parameters as the /v1/messages endpoint but returns\ntoken counts instead of generating a response.\n\nExample usage:\n```\ncurl -X POST \"http://localhost:4000/v1/messages/count_tokens?beta=true\"       -H \"Content-Type: application/json\"       -H \"Authorization: Bearer your-key\"       -d '{\n    \"model\": \"claude-3-sonnet-20240229\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello Claude!\"}]\n  }'\n```\n\nReturns: {\"input_tokens\": <number>}","operationId":"count_tokens_v1_messages_count_tokens_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/event_logging/batch":{"post":{"tags":["[beta] Anthropic Event Logging"],"summary":"Event Logging Batch","description":"Stubbed endpoint for Anthropic event logging batch requests.\n\nThis endpoint accepts event logging requests but does nothing with them.\nIt exists to prevent 404 errors from Claude Code clients that send telemetry.","operationId":"event_logging_batch_api_event_logging_batch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/vertex_ai/live":{"get":{"summary":"WebSocket: vertex_ai_live_passthrough_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_vertex_ai_live_passthrough_endpoint","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/realtime":{"get":{"summary":"WebSocket: realtime_websocket_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_realtime_websocket_endpoint_get","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/v1/realtime":{"get":{"summary":"WebSocket: realtime_websocket_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_realtime_websocket_endpoint_get_2","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/openai/v1/realtime":{"get":{"summary":"WebSocket: realtime_websocket_endpoint","description":"WebSocket connection endpoint","operationId":"websocket_realtime_websocket_endpoint_get_3","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/openai/":{"get":{"summary":"WebSocket: openai_websocket_proxy_route","description":"WebSocket connection endpoint","operationId":"websocket_openai_websocket_proxy_route_get","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/openai_passthrough/":{"get":{"summary":"WebSocket: openai_websocket_proxy_route","description":"WebSocket connection endpoint","operationId":"websocket_openai_websocket_proxy_route_get_2","parameters":[],"responses":{"101":{"description":"WebSocket Protocol Switched"}},"tags":["WebSocket"]}},"/apply_guardrail":{"post":{"description":"Apply a guardrail to text input and return the processed result.\n\nThis endpoint allows testing guardrails by applying them to custom text inputs.","operationId":"apply_guardrail_apply_guardrail_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyGuardrailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Apply Guardrail","tags":["guardrails"]}},"/guardrails":{"post":{"description":"Create a new guardrail\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/guardrails\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"guardrail\": {\n            \"guardrail_name\": \"my-bedrock-guard\",\n            \"litellm_params\": {\n                \"guardrail\": \"bedrock\",\n                \"mode\": \"pre_call\",\n                \"guardrailIdentifier\": \"ff6ujrregl1q\",\n                \"guardrailVersion\": \"DRAFT\",\n                \"default_on\": true\n            },\n            \"guardrail_info\": {\n                \"description\": \"Bedrock content moderation guardrail\"\n            }\n        }\n    }'\n```\n\nExample Response:\n```json\n{\n    \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"guardrail_name\": \"my-bedrock-guard\",\n    \"litellm_params\": {\n        \"guardrail\": \"bedrock\",\n        \"mode\": \"pre_call\",\n        \"guardrailIdentifier\": \"ff6ujrregl1q\",\n        \"guardrailVersion\": \"DRAFT\",\n        \"default_on\": true\n    },\n    \"guardrail_info\": {\n        \"description\": \"Bedrock content moderation guardrail\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n}\n```","operationId":"create_guardrail_guardrails_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Guardrail","tags":["guardrails"]}},"/guardrails/apply_guardrail":{"post":{"description":"Apply a guardrail to text input and return the processed result.\n\nThis endpoint allows testing guardrails by applying them to custom text inputs.","operationId":"apply_guardrail_guardrails_apply_guardrail_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyGuardrailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Apply Guardrail","tags":["guardrails"]}},"/guardrails/list":{"get":{"description":"List the guardrails that are available on the proxy server\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/guardrails/list\" -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"guardrails\": [\n        {\n        \"guardrail_name\": \"bedrock-pre-guard\",\n        \"guardrail_info\": {\n            \"params\": [\n            {\n                \"name\": \"toxicity_score\",\n                \"type\": \"float\",\n                \"description\": \"Score between 0-1 indicating content toxicity level\"\n            },\n            {\n                \"name\": \"pii_detection\",\n                \"type\": \"boolean\"\n            }\n            ]\n        }\n        }\n    ]\n}\n```","operationId":"list_guardrails_guardrails_list_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListGuardrailsResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Guardrails","tags":["guardrails"]}},"/guardrails/register":{"post":{"description":"Register a guardrail for onboarding (team submission).\n\nAccepts a guardrail config in the\n[Generic Guardrail API](https://docs.litellm.ai/docs/adding_provider/generic_guardrail_api) format.\nThe submission is stored with status `pending_review` until an admin approves it.","operationId":"register_guardrail_guardrails_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterGuardrailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Register Guardrail","tags":["guardrails"]}},"/guardrails/submissions":{"get":{"description":"List team guardrail submissions. Returns only guardrails with a team_id.\n\nAdmins see all submissions. Non-admin users see submissions for teams they are\na member of.\n\nStatus values: pending_review (team-registered, awaiting approval), active (approved), rejected.\n\nOptional filters:\n- status: pending_review | active | rejected\n- team_id: filter by specific team (non-admins must be a member of that team)\n- search: name/description","operationId":"list_guardrail_submissions_guardrails_submissions_get","parameters":[{"in":"query","name":"status","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"in":"query","name":"team_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},{"in":"query","name":"search","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListGuardrailSubmissionsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Guardrail Submissions","tags":["guardrails"]}},"/guardrails/submissions/{guardrail_id}":{"get":{"description":"Get a single guardrail submission by id. Non-admins may only access submissions for teams they belong to.","operationId":"get_guardrail_submission_guardrails_submissions__guardrail_id__get","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardrailSubmissionItem"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Guardrail Submission","tags":["guardrails"]}},"/guardrails/submissions/{guardrail_id}/approve":{"post":{"description":"Approve a pending guardrail submission: set status to active and initialize in memory (admin only).","operationId":"approve_guardrail_submission_guardrails_submissions__guardrail_id__approve_post","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Approve Guardrail Submission","tags":["guardrails"]}},"/guardrails/submissions/{guardrail_id}/reject":{"post":{"description":"Reject a guardrail submission (admin only).","operationId":"reject_guardrail_submission_guardrails_submissions__guardrail_id__reject_post","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Reject Guardrail Submission","tags":["guardrails"]}},"/guardrails/test_custom_code":{"post":{"description":"Test custom code guardrail logic without creating a guardrail.\n\nThis endpoint allows admins to experiment with custom code guardrails by:\n1. Compiling the provided code in a sandbox\n2. Executing the apply_guardrail function with test input\n3. Returning the result (allow/block/modify)\n\n👉 [Custom Code Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/custom_code_guardrail)\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/guardrails/test_custom_code\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"custom_code\": \"def apply_guardrail(inputs, request_data, input_type):\\n    for text in inputs[\\\"texts\\\"]:\\n        if regex_match(text, r\\\"\\\\d{3}-\\\\d{2}-\\\\d{4}\\\"):\\n            return block(\\\"SSN detected\\\")\\n    return allow()\",\n        \"test_input\": {\n            \"texts\": [\"My SSN is 123-45-6789\"]\n        },\n        \"input_type\": \"request\"\n    }'\n```\n\nExample Success Response (blocked):\n```json\n{\n    \"success\": true,\n    \"result\": {\n        \"action\": \"block\",\n        \"reason\": \"SSN detected\"\n    },\n    \"error\": null,\n    \"error_type\": null\n}\n```\n\nExample Success Response (allowed):\n```json\n{\n    \"success\": true,\n    \"result\": {\n        \"action\": \"allow\"\n    },\n    \"error\": null,\n    \"error_type\": null\n}\n```\n\nExample Success Response (modified):\n```json\n{\n    \"success\": true,\n    \"result\": {\n        \"action\": \"modify\",\n        \"texts\": [\"My SSN is [REDACTED]\"]\n    },\n    \"error\": null,\n    \"error_type\": null\n}\n```\n\nExample Error Response (compilation error):\n```json\n{\n    \"success\": false,\n    \"result\": null,\n    \"error\": \"Syntax error in custom code: invalid syntax (<guardrail>, line 1)\",\n    \"error_type\": \"compilation\"\n}\n```","operationId":"test_custom_code_guardrail_guardrails_test_custom_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestCustomCodeGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestCustomCodeGuardrailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Custom Code Guardrail","tags":["guardrails"]}},"/guardrails/ui/add_guardrail_settings":{"get":{"description":"Get the UI settings for the guardrails\n\nReturns:\n- Supported entities for guardrails\n- Supported modes for guardrails\n- PII entity categories for UI organization\n- Content filter settings (patterns and categories)","operationId":"get_guardrail_ui_settings_guardrails_ui_add_guardrail_settings_get","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Guardrail Ui Settings","tags":["guardrails"]}},"/guardrails/ui/category_yaml/{category_name}":{"get":{"description":"Get the YAML or JSON content for a specific content filter category.\n\nArgs:\n    category_name: The name of the category (e.g., \"bias_gender\", \"harmful_self_harm\")\n\nReturns:\n    The raw YAML or JSON content of the category file with file type indicator","operationId":"get_category_yaml_guardrails_ui_category_yaml__category_name__get","parameters":[{"in":"path","name":"category_name","required":true,"schema":{"title":"Category Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Category Yaml","tags":["guardrails"]}},"/guardrails/ui/major_airlines":{"get":{"description":"Get the major airlines list from IATA (competitor intent, airline type).\nReturns airline id, match variants (pipe-separated), and tags.","operationId":"get_major_airlines_guardrails_ui_major_airlines_get","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Major Airlines","tags":["guardrails"]}},"/guardrails/ui/provider_specific_params":{"get":{"description":"Get provider-specific parameters for different guardrail types.\n\nReturns a dictionary mapping guardrail providers to their specific parameters,\nincluding parameter names, descriptions, and whether they are required.\n\nExample Response:\n```json\n{\n    \"bedrock\": {\n        \"guardrailIdentifier\": {\n            \"description\": \"The ID of your guardrail on Bedrock\",\n            \"required\": true,\n            \"type\": null\n        },\n        \"guardrailVersion\": {\n            \"description\": \"The version of your Bedrock guardrail (e.g., DRAFT or version number)\",\n            \"required\": true,\n            \"type\": null\n        }\n    },\n    \"azure_content_safety_text_moderation\": {\n        \"api_key\": {\n            \"description\": \"API key for the Azure Content Safety Text Moderation guardrail\",\n            \"required\": false,\n            \"type\": null\n        },\n        \"optional_params\": {\n            \"description\": \"Optional parameters for the Azure Content Safety Text Moderation guardrail\",\n            \"required\": true,\n            \"type\": \"nested\",\n            \"fields\": {\n                \"severity_threshold\": {\n                    \"description\": \"Severity threshold for the Azure Content Safety Text Moderation guardrail across all categories\",\n                    \"required\": false,\n                    \"type\": null\n                },\n                \"categories\": {\n                    \"description\": \"Categories to scan for the Azure Content Safety Text Moderation guardrail\",\n                    \"required\": false,\n                    \"type\": \"multiselect\",\n                    \"options\": [\"Hate\", \"SelfHarm\", \"Sexual\", \"Violence\"],\n                    \"default_value\": None\n                }\n            }\n        }\n    }\n}\n```","operationId":"get_provider_specific_params_guardrails_ui_provider_specific_params_get","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Provider Specific Params","tags":["guardrails"]}},"/guardrails/usage/detail/{guardrail_id}":{"get":{"description":"Return single guardrail usage metrics and time series.","operationId":"guardrails_usage_detail_guardrails_usage_detail__guardrail_id__get","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}},{"in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageDetailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Guardrails Usage Detail","tags":["guardrails"]}},"/guardrails/usage/logs":{"get":{"description":"Return paginated run logs for a guardrail (or policy) from SpendLogs via index.","operationId":"guardrails_usage_logs_guardrails_usage_logs_get","parameters":[{"in":"query","name":"guardrail_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Id"}},{"in":"query","name":"policy_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Id"}},{"in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":50,"maximum":100,"minimum":1,"title":"Page Size","type":"integer"}},{"in":"query","name":"action","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageLogsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Guardrails Usage Logs","tags":["guardrails"]}},"/guardrails/usage/overview":{"get":{"description":"Return guardrail performance overview for the dashboard.","operationId":"guardrails_usage_overview_guardrails_usage_overview_get","parameters":[{"description":"YYYY-MM-DD","in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Start Date"}},{"description":"YYYY-MM-DD","in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOverviewResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Guardrails Usage Overview","tags":["guardrails"]}},"/guardrails/validate_blocked_words_file":{"post":{"description":"Validate a blocked_words YAML file content.\n\nArgs:\n    request: Dictionary with 'file_content' key containing the YAML string\n\nReturns:\n    Dictionary with 'valid' boolean and either 'message'/'errors' depending on result\n\nExample Request:\n```json\n{\n    \"file_content\": \"blocked_words:\\n  - keyword: \\\"test\\\"\\n    action: \\\"BLOCK\\\"\"\n}\n```\n\nExample Success Response:\n```json\n{\n    \"valid\": true,\n    \"message\": \"Valid YAML file with 2 blocked words\"\n}\n```\n\nExample Error Response:\n```json\n{\n    \"valid\": false,\n    \"errors\": [\"Entry 0: missing 'action' field\"]\n}\n```","operationId":"validate_blocked_words_file_guardrails_validate_blocked_words_file_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"title":"Request","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Validate Blocked Words File","tags":["guardrails"]}},"/guardrails/{guardrail_id}":{"delete":{"description":"Delete a guardrail\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/guardrails/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Guardrail 123e4567-e89b-12d3-a456-426614174000 deleted successfully\"\n}\n```","operationId":"delete_guardrail_guardrails__guardrail_id__delete","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Guardrail","tags":["guardrails"]},"get":{"description":"Get detailed information about a specific guardrail by ID\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/guardrails/123e4567-e89b-12d3-a456-426614174000/info\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"guardrail_name\": \"my-bedrock-guard\",\n    \"litellm_params\": {\n        \"guardrail\": \"bedrock\",\n        \"mode\": \"pre_call\",\n        \"guardrailIdentifier\": \"ff6ujrregl1q\",\n        \"guardrailVersion\": \"DRAFT\",\n        \"default_on\": true\n    },\n    \"guardrail_info\": {\n        \"description\": \"Bedrock content moderation guardrail\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n}\n```","operationId":"get_guardrail_info_guardrails__guardrail_id__get","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Guardrail Info","tags":["guardrails"]},"patch":{"description":"Partially update an existing guardrail\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nThis endpoint allows updating specific fields of a guardrail without sending the entire object.\nOnly the following fields can be updated:\n- guardrail_name: The name of the guardrail\n- default_on: Whether the guardrail is enabled by default\n- guardrail_info: Additional information about the guardrail\n\nExample Request:\n```bash\ncurl -X PATCH \"http://localhost:4000/guardrails/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"guardrail_name\": \"updated-name\",\n        \"default_on\": true,\n        \"guardrail_info\": {\n            \"description\": \"Updated description\"\n        }\n    }'\n```\n\nExample Response:\n```json\n{\n    \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"guardrail_name\": \"updated-name\",\n    \"litellm_params\": {\n        \"guardrail\": \"bedrock\",\n        \"mode\": \"pre_call\",\n        \"guardrailIdentifier\": \"ff6ujrregl1q\",\n        \"guardrailVersion\": \"DRAFT\",\n        \"default_on\": true\n    },\n    \"guardrail_info\": {\n        \"description\": \"Updated description\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T14:22:33.456Z\"\n}\n```","operationId":"patch_guardrail_guardrails__guardrail_id__patch","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Patch Guardrail","tags":["guardrails"]},"put":{"description":"Update an existing guardrail\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/guardrails/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"guardrail\": {\n            \"guardrail_name\": \"updated-bedrock-guard\",\n            \"litellm_params\": {\n                \"guardrail\": \"bedrock\",\n                \"mode\": \"pre_call\",\n                \"guardrailIdentifier\": \"ff6ujrregl1q\",\n                \"guardrailVersion\": \"1.0\",\n                \"default_on\": true\n            },\n            \"guardrail_info\": {\n                \"description\": \"Updated Bedrock content moderation guardrail\"\n            }\n        }\n    }'\n```\n\nExample Response:\n```json\n{\n    \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"guardrail_name\": \"updated-bedrock-guard\",\n    \"litellm_params\": {\n        \"guardrail\": \"bedrock\",\n        \"mode\": \"pre_call\",\n        \"guardrailIdentifier\": \"ff6ujrregl1q\",\n        \"guardrailVersion\": \"1.0\",\n        \"default_on\": true\n    },\n    \"guardrail_info\": {\n        \"description\": \"Updated Bedrock content moderation guardrail\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T13:45:12.345Z\"\n}\n```","operationId":"update_guardrail_guardrails__guardrail_id__put","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGuardrailRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Guardrail","tags":["guardrails"]}},"/guardrails/{guardrail_id}/info":{"get":{"description":"Get detailed information about a specific guardrail by ID\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/guardrails/123e4567-e89b-12d3-a456-426614174000/info\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"guardrail_name\": \"my-bedrock-guard\",\n    \"litellm_params\": {\n        \"guardrail\": \"bedrock\",\n        \"mode\": \"pre_call\",\n        \"guardrailIdentifier\": \"ff6ujrregl1q\",\n        \"guardrailVersion\": \"DRAFT\",\n        \"default_on\": true\n    },\n    \"guardrail_info\": {\n        \"description\": \"Bedrock content moderation guardrail\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n}\n```","operationId":"get_guardrail_info_guardrails__guardrail_id__info_get","parameters":[{"in":"path","name":"guardrail_id","required":true,"schema":{"title":"Guardrail Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Guardrail Info","tags":["guardrails"]}},"/policies/usage/overview":{"get":{"description":"Return policy performance overview for the dashboard.","operationId":"policies_usage_overview_policies_usage_overview_get","parameters":[{"description":"YYYY-MM-DD","in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Start Date"}},{"description":"YYYY-MM-DD","in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOverviewResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Policies Usage Overview","tags":["guardrails"]}},"/v2/guardrails/list":{"get":{"description":"List the guardrails that are available in the database using GuardrailRegistry\n\n👉 [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/v2/guardrails/list\" -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"guardrails\": [\n        {\n            \"guardrail_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n            \"guardrail_name\": \"my-bedrock-guard\",\n            \"litellm_params\": {\n                \"guardrail\": \"bedrock\",\n                \"mode\": \"pre_call\",\n                \"guardrailIdentifier\": \"ff6ujrregl1q\",\n                \"guardrailVersion\": \"DRAFT\",\n                \"default_on\": true\n            },\n            \"guardrail_info\": {\n                \"description\": \"Bedrock content moderation guardrail\"\n            }\n        }\n    ]\n}\n```","operationId":"list_guardrails_v2_v2_guardrails_list_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListGuardrailsResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Guardrails V2","tags":["guardrails"]}},"/policy/info/{policy_name}":{"get":{"description":"Get detailed information about a specific policy.\n\nReturns:\n- Policy configuration\n- Resolved guardrails (after inheritance)\n- Inheritance chain","operationId":"get_policy_info_policy_info__policy_name__get","parameters":[{"in":"path","name":"policy_name","required":true,"schema":{"title":"Policy Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyInfoResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Policy Info","tags":["policies"]}},"/policy/list":{"get":{"description":"List all loaded policies with their resolved guardrails.\n\nReturns information about each policy including:\n- Inheritance configuration\n- Scope (teams, keys, models)\n- Guardrails to add/remove\n- Resolved guardrails (after inheritance)\n- Inheritance chain","operationId":"list_policies_policy_list_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyListResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Policies","tags":["policies"]}},"/policy/templates":{"get":{"description":"Get policy templates for the UI (pre-configured guardrail combinations).\n\nFetches from GitHub with automatic fallback to local backup on failure.\nSet LITELLM_LOCAL_POLICY_TEMPLATES=true to skip GitHub and use local backup only.","operationId":"get_policy_templates_policy_templates_get","responses":{"200":{"content":{"application/json":{"schema":{"items":{},"title":"Response Get Policy Templates Policy Templates Get","type":"array"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Policy Templates","tags":["policies"]}},"/policy/templates/enrich":{"post":{"description":"Enrich a policy template with LLM-discovered data (e.g. competitor names).\n\nCalls an onboarded LLM to discover competitors for the given brand name,\nthen returns enriched guardrailDefinitions with the discovered data populated.","operationId":"enrich_policy_template_policy_templates_enrich_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichTemplateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"title":"Response Enrich Policy Template Policy Templates Enrich Post","type":"object"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Enrich Policy Template","tags":["policies"]}},"/policy/templates/enrich/stream":{"post":{"description":"Stream competitor names as SSE events as the LLM generates them.\n\nEvents:\n- data: {\"type\": \"competitor\", \"name\": \"...\"}  — each competitor as discovered\n- data: {\"type\": \"done\", \"competitors\": [...], \"competitor_variations\": {...}, \"guardrailDefinitions\": [...]}","operationId":"enrich_policy_template_stream_policy_templates_enrich_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichTemplateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Enrich Policy Template Stream","tags":["policies"]}},"/policy/templates/suggest":{"post":{"description":"Use AI to suggest policy templates based on attack examples and descriptions.\n\nCalls an LLM with tool calling to match user requirements to available templates.","operationId":"suggest_policy_templates_policy_templates_suggest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestTemplatesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"title":"Response Suggest Policy Templates Policy Templates Suggest Post","type":"object"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Suggest Policy Templates","tags":["policies"]}},"/policy/templates/test":{"post":{"description":"Test a policy template's guardrails against a text input without creating them.\n\nInstantiates temporary guardrails from the template definitions, runs them\nagainst the provided text, and returns per-guardrail results so users can\nverify the template solves their problem before creating it.","operationId":"test_policy_template_policy_templates_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPolicyTemplateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPolicyTemplateResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Policy Template","tags":["policies"]}},"/policy/test":{"post":{"description":"Test which policies would match a given request context.\n\nThis is useful for debugging and understanding policy behavior.\n\nRequest body:\n```json\n{\n    \"team_alias\": \"healthcare-team\",\n    \"key_alias\": \"my-api-key\",\n    \"model\": \"gpt-4\"\n}\n```\n\nReturns:\n- matching_policies: List of policy names that match\n- resolved_guardrails: Final list of guardrails that would be applied","operationId":"test_policy_matching_policy_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyMatchContext"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyTestResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Policy Matching","tags":["policies"]}},"/policy/validate":{"post":{"description":"Validate a policy configuration before applying it.\n\nChecks:\n- All referenced guardrails exist in the guardrail registry\n- All non-wildcard team aliases exist in the database\n- All non-wildcard key aliases exist in the database\n- Inheritance chains are valid (no cycles, parents exist)\n- Scope patterns are syntactically valid\n\nReturns:\n- valid: True if the policy configuration is valid (no blocking errors)\n- errors: List of blocking validation errors\n- warnings: List of non-blocking validation warnings\n\nExample request:\n```json\n{\n    \"policies\": {\n        \"global-baseline\": {\n            \"guardrails\": {\n                \"add\": [\"pii_blocker\", \"phi_blocker\"]\n            },\n            \"scope\": {\n                \"teams\": [\"*\"],\n                \"keys\": [\"*\"],\n                \"models\": [\"*\"]\n            }\n        },\n        \"healthcare-compliance\": {\n            \"inherit\": \"global-baseline\",\n            \"guardrails\": {\n                \"add\": [\"hipaa_audit\"]\n            },\n            \"scope\": {\n                \"teams\": [\"healthcare-team\"]\n            }\n        }\n    }\n}\n```","operationId":"validate_policy_policy_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyValidateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyValidationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Validate Policy","tags":["policies"]}},"/utils/test_policies_and_guardrails":{"post":{"description":"Apply policies and/or guardrails to inputs (for compliance UI testing).\n\nUse inputs_list for batch testing: each input is processed as a separate call so\nper-input block/allow and errors are returned.\n\nUse inputs for a single call (legacy).","operationId":"test_policies_and_guardrails_utils_test_policies_and_guardrails_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPoliciesAndGuardrailsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Policies And Guardrails","tags":["policies"]}},"/policies":{"post":{"description":"Create a new policy.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/policies\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"policy_name\": \"global-baseline\",\n        \"description\": \"Base guardrails for all requests\",\n        \"guardrails_add\": [\"pii_masking\", \"prompt_injection\"],\n        \"guardrails_remove\": []\n    }'\n```\n\nExample Response:\n```json\n{\n    \"policy_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"policy_name\": \"global-baseline\",\n    \"inherit\": null,\n    \"description\": \"Base guardrails for all requests\",\n    \"guardrails_add\": [\"pii_masking\", \"prompt_injection\"],\n    \"guardrails_remove\": [],\n    \"condition\": null,\n    \"created_at\": \"2024-01-01T00:00:00Z\",\n    \"updated_at\": \"2024-01-01T00:00:00Z\"\n}\n```","operationId":"create_policy_policies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Policy","tags":["policy_engine"]}},"/policies/attachments":{"post":{"description":"Create a new policy attachment.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/policies/attachments\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"policy_name\": \"global-baseline\",\n        \"scope\": \"*\"\n    }'\n```\n\nExample with team-specific attachment:\n```bash\ncurl -X POST \"http://localhost:4000/policies/attachments\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"policy_name\": \"healthcare-compliance\",\n        \"teams\": [\"healthcare-team\", \"medical-research\"]\n    }'\n```\n\nExample Response:\n```json\n{\n    \"attachment_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"policy_name\": \"global-baseline\",\n    \"scope\": \"*\",\n    \"teams\": [],\n    \"keys\": [],\n    \"models\": [],\n    \"created_at\": \"2024-01-01T00:00:00Z\",\n    \"updated_at\": \"2024-01-01T00:00:00Z\"\n}\n```","operationId":"create_policy_attachment_policies_attachments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyAttachmentCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyAttachmentDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Policy Attachment","tags":["policy_engine"]}},"/policies/attachments/estimate-impact":{"post":{"description":"Estimate how many keys and teams would be affected by a policy attachment.\n\nUse this before creating an attachment to preview the blast radius.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/policies/attachments/estimate-impact\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"policy_name\": \"hipaa-compliance\",\n        \"tags\": [\"healthcare\", \"health-*\"]\n    }'\n```","operationId":"estimate_attachment_impact_policies_attachments_estimate_impact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyAttachmentCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentImpactResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Estimate Attachment Impact","tags":["policy_engine"]}},"/policies/attachments/list":{"get":{"description":"List all policy attachments from the database and config.yaml.\n\nConfig-defined attachments are returned with definition_location \"config\" and a\nsynthetic attachment_id (\"config-<index>\").\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/policies/attachments/list\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"attachments\": [\n        {\n            \"attachment_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n            \"policy_name\": \"global-baseline\",\n            \"scope\": \"*\",\n            \"teams\": [],\n            \"keys\": [],\n            \"models\": [],\n            \"created_at\": \"2024-01-01T00:00:00Z\",\n            \"updated_at\": \"2024-01-01T00:00:00Z\"\n        }\n    ],\n    \"total_count\": 1\n}\n```","operationId":"list_policy_attachments_policies_attachments_list_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyAttachmentListResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Policy Attachments","tags":["policy_engine"]}},"/policies/attachments/{attachment_id}":{"delete":{"description":"Delete a policy attachment.\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/policies/attachments/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Attachment 123e4567-e89b-12d3-a456-426614174000 deleted successfully\"\n}\n```","operationId":"delete_policy_attachment_policies_attachments__attachment_id__delete","parameters":[{"in":"path","name":"attachment_id","required":true,"schema":{"title":"Attachment Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Policy Attachment","tags":["policy_engine"]},"get":{"description":"Get a policy attachment by ID.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/policies/attachments/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```","operationId":"get_policy_attachment_policies_attachments__attachment_id__get","parameters":[{"in":"path","name":"attachment_id","required":true,"schema":{"title":"Attachment Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyAttachmentDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Policy Attachment","tags":["policy_engine"]}},"/policies/compare":{"get":{"description":"Compare two policy versions. Query params: version_a, version_b (policy version IDs).","operationId":"compare_policy_versions_policies_compare_get","parameters":[{"in":"query","name":"version_a","required":true,"schema":{"title":"Version A","type":"string"}},{"in":"query","name":"version_b","required":true,"schema":{"title":"Version B","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionCompareResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Compare Policy Versions","tags":["policy_engine"]}},"/policies/list":{"get":{"description":"List all policies from the database and config.yaml. Optionally filter by version_status.\n\nConfig-defined policies are returned with definition_location \"config\" and are treated\nas production versions. On a name conflict with a DB policy, only the DB policy is returned.\n\nQuery params:\n- version_status: Optional. One of \"draft\", \"published\", \"production\".\n  If omitted, all versions are returned.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/policies/list\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\ncurl -X GET \"http://localhost:4000/policies/list?version_status=production\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"policies\": [\n        {\n            \"policy_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n            \"policy_name\": \"global-baseline\",\n            \"version_number\": 1,\n            \"version_status\": \"production\",\n            \"inherit\": null,\n            \"description\": \"Base guardrails for all requests\",\n            \"guardrails_add\": [\"pii_masking\"],\n            \"guardrails_remove\": [],\n            \"condition\": null,\n            \"created_at\": \"2024-01-01T00:00:00Z\",\n            \"updated_at\": \"2024-01-01T00:00:00Z\"\n        }\n    ],\n    \"total_count\": 1\n}\n```","operationId":"list_policies_policies_list_get","parameters":[{"in":"query","name":"version_status","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Status"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyListDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Policies","tags":["policy_engine"]}},"/policies/name/{policy_name}/all-versions":{"delete":{"description":"Delete all versions of a policy. Also removes from in-memory registry.","operationId":"delete_all_policy_versions_policies_name__policy_name__all_versions_delete","parameters":[{"in":"path","name":"policy_name","required":true,"schema":{"title":"Policy Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete All Policy Versions","tags":["policy_engine"]}},"/policies/name/{policy_name}/versions":{"get":{"description":"List all versions of a policy by name, ordered by version_number descending.","operationId":"list_policy_versions_policies_name__policy_name__versions_get","parameters":[{"in":"path","name":"policy_name","required":true,"schema":{"title":"Policy Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Policy Versions","tags":["policy_engine"]},"post":{"description":"Create a new draft version of a policy. Copies all fields from the source.\nSource is current production if source_policy_id is not provided.","operationId":"create_policy_version_policies_name__policy_name__versions_post","parameters":[{"in":"path","name":"policy_name","required":true,"schema":{"title":"Policy Name","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Policy Version","tags":["policy_engine"]}},"/policies/resolve":{"post":{"description":"Resolve which policies and guardrails apply for a given context.\n\nUse this endpoint to debug \"what guardrails would apply to a request\nwith this team/key/model/tags combination?\"\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/policies/resolve\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"tags\": [\"healthcare\"],\n        \"model\": \"gpt-4\"\n    }'\n```","operationId":"resolve_policies_for_context_policies_resolve_post","parameters":[{"description":"Force a DB sync before resolving. Default uses in-memory cache.","in":"query","name":"force_sync","required":false,"schema":{"default":false,"description":"Force a DB sync before resolving. Default uses in-memory cache.","title":"Force Sync","type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyResolveRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyResolveResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Resolve Policies For Context","tags":["policy_engine"]}},"/policies/test-pipeline":{"post":{"description":"Test a guardrail pipeline with sample messages.\n\nExecutes the pipeline steps against the provided test messages and returns\nstep-by-step results showing which guardrails passed/failed, actions taken,\nand timing information.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/policies/test-pipeline\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"pipeline\": {\n            \"mode\": \"pre_call\",\n            \"steps\": [\n                {\"guardrail\": \"pii-guard\", \"on_pass\": \"next\", \"on_fail\": \"block\"}\n            ]\n        },\n        \"test_messages\": [{\"role\": \"user\", \"content\": \"My SSN is 123-45-6789\"}]\n    }'\n```","operationId":"test_pipeline_policies_test_pipeline_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineTestRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Pipeline","tags":["policy_engine"]}},"/policies/{policy_id}":{"delete":{"description":"Delete a policy.\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/policies/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Policy 123e4567-e89b-12d3-a456-426614174000 deleted successfully\"\n}\n```","operationId":"delete_policy_policies__policy_id__delete","parameters":[{"in":"path","name":"policy_id","required":true,"schema":{"title":"Policy Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Policy","tags":["policy_engine"]},"get":{"description":"Get a policy by ID.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/policies/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```","operationId":"get_policy_policies__policy_id__get","parameters":[{"in":"path","name":"policy_id","required":true,"schema":{"title":"Policy Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Policy","tags":["policy_engine"]},"put":{"description":"Update an existing policy.\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/policies/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"description\": \"Updated description\",\n        \"guardrails_add\": [\"pii_masking\", \"toxicity_filter\"]\n    }'\n```","operationId":"update_policy_policies__policy_id__put","parameters":[{"in":"path","name":"policy_id","required":true,"schema":{"title":"Policy Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Policy","tags":["policy_engine"]}},"/policies/{policy_id}/resolved-guardrails":{"get":{"description":"Get the resolved guardrails for a policy (including inherited guardrails).\n\nThis endpoint resolves the full inheritance chain and returns the final\nset of guardrails that would be applied for this policy.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/policies/123e4567-e89b-12d3-a456-426614174000/resolved-guardrails\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"policy_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"policy_name\": \"healthcare-compliance\",\n    \"resolved_guardrails\": [\"pii_masking\", \"prompt_injection\", \"toxicity_filter\"]\n}\n```","operationId":"get_resolved_guardrails_policies__policy_id__resolved_guardrails_get","parameters":[{"in":"path","name":"policy_id","required":true,"schema":{"title":"Policy Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Resolved Guardrails","tags":["policy_engine"]}},"/policies/{policy_id}/status":{"put":{"description":"Update a policy version's status. Valid transitions:\n- draft -> published\n- published -> production (demotes current production to published)\n- production -> published (demotes, policy becomes inactive)","operationId":"update_policy_version_status_policies__policy_id__status_put","parameters":[{"in":"path","name":"policy_id","required":true,"schema":{"title":"Policy Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionStatusUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyDBResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Policy Version Status","tags":["policy_engine"]}},"/agent/daily/activity":{"get":{"description":"Get daily activity for specific agents or all accessible agents.","operationId":"get_agent_daily_activity_agent_daily_activity_get","parameters":[{"in":"query","name":"agent_ids","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Ids"}},{"in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"in":"query","name":"model","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"in":"query","name":"api_key","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"in":"query","name":"page","required":false,"schema":{"default":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":10,"title":"Page Size","type":"integer"}},{"in":"query","name":"exclude_agent_ids","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exclude Agent Ids"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendAnalyticsPaginatedResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Agent Daily Activity","tags":["agents"]}},"/v1/agents":{"get":{"description":"Example usage:\n```\ncurl -X GET \"http://localhost:4000/v1/agents\"       -H \"Content-Type: application/json\"       -H \"Authorization: Bearer your-key\"     ```\n\nPass `?health_check=true` to filter out agents whose URL is unreachable:\n```\ncurl -X GET \"http://localhost:4000/v1/agents?health_check=true\"       -H \"Content-Type: application/json\"       -H \"Authorization: Bearer your-key\"     ```\n\nReturns: List[AgentResponse]","operationId":"get_agents_v1_agents_get","parameters":[{"description":"When true, performs a GET request to each agent's URL. Agents with reachable URLs (HTTP status < 500) and agents without a URL are returned; unreachable agents are filtered out.","in":"query","name":"health_check","required":false,"schema":{"default":false,"description":"When true, performs a GET request to each agent's URL. Agents with reachable URLs (HTTP status < 500) and agents without a URL are returned; unreachable agents are filtered out.","title":"Health Check","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentResponse"},"title":"Response Get Agents V1 Agents Get","type":"array"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Agents","tags":["agents"]},"post":{"description":"Create a new agent\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/v1/agents\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"agent_name\": \"my-custom-agent\",\n            \"agent_card_params\": {\n                \"protocolVersion\": \"1.0\",\n                \"name\": \"Hello World Agent\",\n                \"description\": \"Just a hello world agent\",\n                \"url\": \"http://localhost:9999/\",\n                \"version\": \"1.0.0\",\n                \"defaultInputModes\": [\"text\"],\n                \"defaultOutputModes\": [\"text\"],\n                \"capabilities\": {\n                    \"streaming\": true\n                },\n                \"skills\": [\n                    {\n                        \"id\": \"hello_world\",\n                        \"name\": \"Returns hello world\",\n                        \"description\": \"just returns hello world\",\n                        \"tags\": [\"hello world\"],\n                        \"examples\": [\"hi\", \"hello world\"]\n                    }\n                ]\n            },\n            \"litellm_params\": {\n                \"make_public\": true\n       }\n    }'\n```","operationId":"create_agent_v1_agents_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfig"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Agent","tags":["agents"]}},"/v1/agents/make_public":{"post":{"description":"Make multiple agents publicly discoverable\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/v1/agents/make_public\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"agent_ids\": [\"123e4567-e89b-12d3-a456-426614174000\", \"123e4567-e89b-12d3-a456-426614174001\"]\n    }'\n```\n\nExample Response:\n```json\n{\n    \"agent_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"agent_name\": \"my-custom-agent\",\n    \"litellm_params\": {\n        \"make_public\": true\n    },\n    \"agent_card_params\": {...},\n    \"created_at\": \"2025-11-15T10:30:00Z\",\n    \"updated_at\": \"2025-11-15T10:35:00Z\",\n    \"created_by\": \"user123\",\n    \"updated_by\": \"user123\"\n}\n```","operationId":"make_agents_public_v1_agents_make_public_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MakeAgentsPublicRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMakePublicResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Make Agents Public","tags":["agents"]}},"/v1/agents/{agent_id}":{"delete":{"description":"Delete an agent\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/agents/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Agent 123e4567-e89b-12d3-a456-426614174000 deleted successfully\"\n}\n```","operationId":"delete_agent_v1_agents__agent_id__delete","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Agent","tags":["agents"]},"get":{"description":"Get a specific agent by ID\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/agents/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```","operationId":"get_agent_by_id_v1_agents__agent_id__get","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Agent By Id","tags":["agents"]},"patch":{"description":"Update an existing agent\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/agents/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"agent\": {\n            \"agent_name\": \"updated-agent\",\n            \"agent_card_params\": {\n                \"protocolVersion\": \"1.0\",\n                \"name\": \"Updated Agent\",\n                \"description\": \"Updated description\",\n                \"url\": \"http://localhost:9999/\",\n                \"version\": \"1.1.0\",\n                \"defaultInputModes\": [\"text\"],\n                \"defaultOutputModes\": [\"text\"],\n                \"capabilities\": {\n                    \"streaming\": true\n                },\n                \"skills\": []\n            },\n            \"litellm_params\": {\n                \"make_public\": false\n            }\n        }\n    }'\n```","operationId":"patch_agent_v1_agents__agent_id__patch","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchAgentRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Patch Agent","tags":["agents"]},"put":{"description":"Update an existing agent\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/agents/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"agent\": {\n            \"agent_name\": \"updated-agent\",\n            \"agent_card_params\": {\n                \"protocolVersion\": \"1.0\",\n                \"name\": \"Updated Agent\",\n                \"description\": \"Updated description\",\n                \"url\": \"http://localhost:9999/\",\n                \"version\": \"1.1.0\",\n                \"defaultInputModes\": [\"text\"],\n                \"defaultOutputModes\": [\"text\"],\n                \"capabilities\": {\n                    \"streaming\": true\n                },\n                \"skills\": []\n            },\n            \"litellm_params\": {\n                \"make_public\": false\n            }\n        }\n    }'\n```","operationId":"update_agent_v1_agents__agent_id__put","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConfig"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Agent","tags":["agents"]}},"/v1/agents/{agent_id}/make_public":{"post":{"description":"Make an agent publicly discoverable\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/v1/agents/123e4567-e89b-12d3-a456-426614174000/make_public\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\"\n```\n\nExample Response:\n```json\n{\n    \"agent_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"agent_name\": \"my-custom-agent\",\n    \"litellm_params\": {\n        \"make_public\": true\n    },\n    \"agent_card_params\": {...},\n    \"created_at\": \"2025-11-15T10:30:00Z\",\n    \"updated_at\": \"2025-11-15T10:35:00Z\",\n    \"created_by\": \"user123\",\n    \"updated_by\": \"user123\"\n}\n```","operationId":"make_agent_public_v1_agents__agent_id__make_public_post","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMakePublicResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Make Agent Public","tags":["agents"]}},"/v1beta/agents":{"get":{"tags":["gemini_agents"],"summary":"gemini_agents","responses":{"200":{"description":"OK"}}}},"/a2a/{agent_id}":{"post":{"description":"Invoke an agent using the A2A protocol (JSON-RPC 2.0).\n\nSupported methods:\n- message/send: Send a message and get a response\n- message/stream: Send a message and stream the response","operationId":"invoke_agent_a2a_a2a__agent_id__post","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Invoke Agent A2A","tags":["a2a"]}},"/a2a/{agent_id}/.well-known/agent-card.json":{"get":{"description":"Get the agent card for an agent (A2A discovery endpoint).\n\nSupports both standard paths:\n- /.well-known/agent-card.json\n- /.well-known/agent.json\n\nThe URL in the agent card is rewritten to point to the LiteLLM proxy,\nso all subsequent A2A calls go through LiteLLM for logging and cost tracking.","operationId":"get_agent_card_a2a__agent_id___well_known_agent_card_json_get","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Agent Card","tags":["a2a"]}},"/a2a/{agent_id}/.well-known/agent.json":{"get":{"description":"Get the agent card for an agent (A2A discovery endpoint).\n\nSupports both standard paths:\n- /.well-known/agent-card.json\n- /.well-known/agent.json\n\nThe URL in the agent card is rewritten to point to the LiteLLM proxy,\nso all subsequent A2A calls go through LiteLLM for logging and cost tracking.","operationId":"get_agent_card_a2a__agent_id___well_known_agent_json_get","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Agent Card","tags":["a2a"]}},"/a2a/{agent_id}/message/send":{"post":{"description":"Invoke an agent using the A2A protocol (JSON-RPC 2.0).\n\nSupported methods:\n- message/send: Send a message and get a response\n- message/stream: Send a message and stream the response","operationId":"invoke_agent_a2a_a2a__agent_id__message_send_post","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Invoke Agent A2A","tags":["a2a"]}},"/v1/a2a/{agent_id}/message/send":{"post":{"description":"Invoke an agent using the A2A protocol (JSON-RPC 2.0).\n\nSupported methods:\n- message/send: Send a message and get a response\n- message/stream: Send a message and stream the response","operationId":"invoke_agent_a2a_v1_a2a__agent_id__message_send_post","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"title":"Agent Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Invoke Agent A2A","tags":["a2a"]}},"/v1/a2a/discover":{"get":{"tags":["a2a_registration"],"summary":"a2a_registration","responses":{"200":{"description":"OK"}}}},"/v1/indexes":{"post":{"description":"Create an index. Just writes the index to the database.\n\n```bash\ncurl -L -X POST 'http://0.0.0.0:4000/indexes/create'         -H 'Content-Type: application/json'         -H 'Authorization: Bearer sk-1234'         -H 'LiteLLM-Beta: indexes_beta=v1'         -d '{ \n        \"index_name\": \"dall-e-3\",\n        \"vector_store_index\": \"real-index-name\",\n        \"vector_store_name\": \"azure-ai-search\"\n    }'\n```","operationId":"index_create_v1_indexes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Index Create","tags":["vector_stores"]}},"/v1/vector_stores":{"get":{"description":"List vector stores.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/list","operationId":"vector_store_list_v1_vector_stores_get","parameters":[{"in":"query","name":"after","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"in":"query","name":"before","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"in":"query","name":"limit","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":20,"title":"Limit"}},{"in":"query","name":"order","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"desc","title":"Order"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store List","tags":["vector_stores"]},"post":{"description":"Create a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/create\n\nSupports target_model_names parameter for creating vector stores across multiple models:\n```json\n{\n    \"name\": \"my-vector-store\",\n    \"target_model_names\": \"gpt-4,gemini-2.0\"\n}\n```","operationId":"vector_store_create_v1_vector_stores_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Create","tags":["vector_stores"]}},"/v1/vector_stores/{vector_store_id}":{"delete":{"description":"Delete a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/delete","operationId":"vector_store_delete_v1_vector_stores__vector_store_id__delete","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Delete","tags":["vector_stores"]},"get":{"description":"Retrieve a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/retrieve","operationId":"vector_store_retrieve_v1_vector_stores__vector_store_id__get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Retrieve","tags":["vector_stores"]},"post":{"description":"Update a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/modify","operationId":"vector_store_update_v1_vector_stores__vector_store_id__post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Update","tags":["vector_stores"]}},"/v1/vector_stores/{vector_store_id}/files":{"get":{"operationId":"vector_store_file_list_v1_vector_stores__vector_store_id__files_get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File List","tags":["vector_stores"]},"post":{"operationId":"vector_store_file_create_v1_vector_stores__vector_store_id__files_post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Create","tags":["vector_stores"]}},"/v1/vector_stores/{vector_store_id}/files/{file_id}":{"delete":{"operationId":"vector_store_file_delete_v1_vector_stores__vector_store_id__files__file_id__delete","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Delete","tags":["vector_stores"]},"get":{"operationId":"vector_store_file_retrieve_v1_vector_stores__vector_store_id__files__file_id__get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Retrieve","tags":["vector_stores"]},"post":{"operationId":"vector_store_file_update_v1_vector_stores__vector_store_id__files__file_id__post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Update","tags":["vector_stores"]}},"/v1/vector_stores/{vector_store_id}/files/{file_id}/content":{"get":{"operationId":"vector_store_file_content_v1_vector_stores__vector_store_id__files__file_id__content_get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Content","tags":["vector_stores"]}},"/v1/vector_stores/{vector_store_id}/search":{"post":{"description":"Search a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/search","operationId":"vector_store_search_v1_vector_stores__vector_store_id__search_post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Search","tags":["vector_stores"]}},"/vector_stores":{"get":{"description":"List vector stores.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/list","operationId":"vector_store_list_vector_stores_get","parameters":[{"in":"query","name":"after","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"in":"query","name":"before","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"in":"query","name":"limit","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":20,"title":"Limit"}},{"in":"query","name":"order","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"desc","title":"Order"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store List","tags":["vector_stores"]},"post":{"description":"Create a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/create\n\nSupports target_model_names parameter for creating vector stores across multiple models:\n```json\n{\n    \"name\": \"my-vector-store\",\n    \"target_model_names\": \"gpt-4,gemini-2.0\"\n}\n```","operationId":"vector_store_create_vector_stores_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Create","tags":["vector_stores"]}},"/vector_stores/{vector_store_id}":{"delete":{"description":"Delete a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/delete","operationId":"vector_store_delete_vector_stores__vector_store_id__delete","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Delete","tags":["vector_stores"]},"get":{"description":"Retrieve a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/retrieve","operationId":"vector_store_retrieve_vector_stores__vector_store_id__get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Retrieve","tags":["vector_stores"]},"post":{"description":"Update a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/modify","operationId":"vector_store_update_vector_stores__vector_store_id__post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Update","tags":["vector_stores"]}},"/vector_stores/{vector_store_id}/files":{"get":{"operationId":"vector_store_file_list_vector_stores__vector_store_id__files_get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File List","tags":["vector_stores"]},"post":{"operationId":"vector_store_file_create_vector_stores__vector_store_id__files_post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Create","tags":["vector_stores"]}},"/vector_stores/{vector_store_id}/files/{file_id}":{"delete":{"operationId":"vector_store_file_delete_vector_stores__vector_store_id__files__file_id__delete","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Delete","tags":["vector_stores"]},"get":{"operationId":"vector_store_file_retrieve_vector_stores__vector_store_id__files__file_id__get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Retrieve","tags":["vector_stores"]},"post":{"operationId":"vector_store_file_update_vector_stores__vector_store_id__files__file_id__post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Update","tags":["vector_stores"]}},"/vector_stores/{vector_store_id}/files/{file_id}/content":{"get":{"operationId":"vector_store_file_content_vector_stores__vector_store_id__files__file_id__content_get","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}},{"in":"path","name":"file_id","required":true,"schema":{"title":"File Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store File Content","tags":["vector_stores"]}},"/vector_stores/{vector_store_id}/search":{"post":{"description":"Search a vector store.\n\nAPI Reference:\nhttps://platform.openai.com/docs/api-reference/vector-stores/search","operationId":"vector_store_search_vector_stores__vector_store_id__search_post","parameters":[{"in":"path","name":"vector_store_id","required":true,"schema":{"title":"Vector Store Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Vector Store Search","tags":["vector_stores"]}},"/v1/vector_store/list":{"get":{"description":"List all available vector stores with optional filtering and pagination.\nCombines both in-memory vector stores and those stored in the database.\nDatabase is the source of truth - deleted stores are removed from memory, updated stores sync to memory.\n\nParameters:\n- page: int - Page number for pagination (default: 1)\n- page_size: int - Number of items per page (default: 100)","operationId":"list_vector_stores_v1_vector_store_list_get","parameters":[{"in":"query","name":"page","required":false,"schema":{"default":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":100,"title":"Page Size","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ManagedVectorStoreListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Vector Stores","tags":["vector_store_management"]}},"/vector_store/delete":{"post":{"description":"Delete a vector store from both database and in-memory registry.\n\nParameters:\n- vector_store_id: str - ID of the vector store to delete","operationId":"delete_vector_store_vector_store_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VectorStoreDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Vector Store","tags":["vector_store_management"]}},"/vector_store/info":{"post":{"description":"Return a single vector store's details","operationId":"get_vector_store_info_vector_store_info_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VectorStoreInfoRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseLiteLLM_ManagedVectorStore"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Vector Store Info","tags":["vector_store_management"]}},"/vector_store/list":{"get":{"description":"List all available vector stores with optional filtering and pagination.\nCombines both in-memory vector stores and those stored in the database.\nDatabase is the source of truth - deleted stores are removed from memory, updated stores sync to memory.\n\nParameters:\n- page: int - Page number for pagination (default: 1)\n- page_size: int - Number of items per page (default: 100)","operationId":"list_vector_stores_vector_store_list_get","parameters":[{"in":"query","name":"page","required":false,"schema":{"default":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":100,"title":"Page Size","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ManagedVectorStoreListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Vector Stores","tags":["vector_store_management"]}},"/vector_store/new":{"post":{"description":"Create a new vector store.\n\nParameters:\n- vector_store_id: str - Unique identifier for the vector store\n- custom_llm_provider: str - Provider of the vector store\n- vector_store_name: Optional[str] - Name of the vector store\n- vector_store_description: Optional[str] - Description of the vector store\n- vector_store_metadata: Optional[Dict] - Additional metadata for the vector store","operationId":"new_vector_store_vector_store_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ManagedVectorStore"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"New Vector Store","tags":["vector_store_management"]}},"/vector_store/update":{"post":{"description":"Update vector store details in both database and in-memory registry.\nThe updated data is immediately synchronized to the in-memory registry.","operationId":"update_vector_store_vector_store_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VectorStoreUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Vector Store","tags":["vector_store_management"]}},"/v1/tool/list":{"get":{"description":"List all auto-discovered tools and their policies.\n\nParameters:\n- input_policy: Optional filter — one of \"trusted\", \"untrusted\", \"blocked\"","operationId":"list_tools_v1_tool_list_get","parameters":[{"in":"query","name":"input_policy","required":false,"schema":{"anyOf":[{"enum":["trusted","untrusted","blocked"],"type":"string"},{"type":"null"}],"title":"Input Policy"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Tools","tags":["tools"]}},"/v1/tool/policy":{"post":{"description":"Set the input_policy and/or output_policy for a tool (global), or block for a specific team/key (override).\n\nParameters:\n- tool_name: str - The tool to update\n- input_policy: optional - \"trusted\" | \"untrusted\" | \"blocked\"\n- output_policy: optional - \"trusted\" | \"untrusted\"\n- team_id: optional - if set, create/update override for this team only\n- key_hash: optional - if set, create/update override for this key only","operationId":"update_tool_policy_v1_tool_policy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPolicyUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPolicyUpdateResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Tool Policy","tags":["tools"]}},"/v1/tool/policy/options":{"get":{"description":"Return the available input and output policy options with descriptions.\nStatic data — no DB call.","operationId":"get_tool_policy_options_v1_tool_policy_options_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPolicyOptionsResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Tool Policy Options","tags":["tools"]}},"/v1/tool/spend":{"get":{"description":"Spend attributed to each tool over a date range, for the Cost Optimization dashboard.\n\nReads the ``LiteLLM_DailyToolSpend`` rollup, written at request time from invoked\ntools only (MCP tool calls and response tool_calls; declaring a tool without\ninvoking it does not count). A request that invoked multiple tools counts its\nfull spend toward each of them, so per-tool numbers are attributions and do not\nsum to a deduplicated total.\n\n``by_tool`` is the top ``TOOL_SPEND_TOP_TOOLS`` tools by spend, aggregated in\nSQL, and ``daily`` covers only those tools, so the response is bounded by\ndays x TOOL_SPEND_TOP_TOOLS regardless of the requested range or how many\ndistinct tool names exist.","operationId":"get_tool_spend_v1_tool_spend_get","parameters":[{"description":"YYYY-MM-DD (defaults to 30 days ago)","in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (defaults to 30 days ago)","title":"Start Date"}},{"description":"YYYY-MM-DD (defaults to today)","in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (defaults to today)","title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolSpendResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Tool Spend","tags":["tools"]}},"/v1/tool/{tool_name}":{"get":{"description":"Get details for a single tool.","operationId":"get_tool_v1_tool__tool_name__get","parameters":[{"in":"path","name":"tool_name","required":true,"schema":{"title":"Tool Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiteLLM_ToolTableRow"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Tool","tags":["tools"]}},"/v1/tool/{tool_name}/detail":{"get":{"description":"Get a single tool with its policy overrides (for UI detail view).","operationId":"get_tool_detail_v1_tool__tool_name__detail_get","parameters":[{"in":"path","name":"tool_name","required":true,"schema":{"title":"Tool Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolDetailResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Tool Detail","tags":["tools"]}},"/v1/tool/{tool_name}/logs":{"get":{"description":"Return paginated spend logs for requests that invoked this tool (from SpendLogToolIndex).\nDeclaring a tool in a request body without the model invoking it does not create an entry.","operationId":"get_tool_usage_logs_v1_tool__tool_name__logs_get","parameters":[{"in":"path","name":"tool_name","required":true,"schema":{"title":"Tool Name","type":"string"}},{"in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":50,"maximum":100,"minimum":1,"title":"Page Size","type":"integer"}},{"description":"YYYY-MM-DD","in":"query","name":"start_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Start Date"}},{"description":"YYYY-MM-DD","in":"query","name":"end_date","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"End Date"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolUsageLogsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Tool Usage Logs","tags":["tools"]}},"/v1/tool/{tool_name}/overrides":{"delete":{"description":"Remove a policy override for a tool. Specify the override by team_id or key_hash\n(exactly one required).","operationId":"delete_tool_policy_override_v1_tool__tool_name__overrides_delete","parameters":[{"in":"path","name":"tool_name","required":true,"schema":{"title":"Tool Name","type":"string"}},{"description":"Team ID of the override to remove","in":"query","name":"team_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Team ID of the override to remove","title":"Team Id"}},{"description":"Key hash of the override to remove","in":"query","name":"key_hash","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Key hash of the override to remove","title":"Key Hash"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Tool Policy Override","tags":["tools"]}},"/search_tools":{"post":{"description":"Create a new search tool.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/search_tools\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"search_tool\": {\n            \"search_tool_name\": \"litellm-search\",\n            \"litellm_params\": {\n                \"search_provider\": \"perplexity\",\n                \"api_key\": \"sk-...\"\n            },\n            \"search_tool_info\": {\n                \"description\": \"Perplexity search tool\"\n            }\n        }\n    }'\n```\n\nExample Response:\n```json\n{\n    \"search_tool_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"search_tool_name\": \"litellm-search\",\n    \"litellm_params\": {\n        \"search_provider\": \"perplexity\",\n        \"api_key\": \"sk-...\"\n    },\n    \"search_tool_info\": {\n        \"description\": \"Perplexity search tool\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n}\n```","operationId":"create_search_tool_search_tools_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSearchToolRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Search Tool","tags":["search_tools"]}},"/search_tools/list":{"get":{"description":"List all search tools that are available in the database and config file.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/search_tools/list\" -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"search_tools\": [\n        {\n            \"search_tool_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n            \"search_tool_name\": \"litellm-search\",\n            \"litellm_params\": {\n                \"search_provider\": \"perplexity\",\n                \"api_key\": \"sk-***\",\n                \"api_base\": \"https://api.perplexity.ai\"\n            },\n            \"search_tool_info\": {\n                \"description\": \"Perplexity search tool\"\n            },\n            \"created_at\": \"2023-11-09T12:34:56.789Z\",\n            \"updated_at\": \"2023-11-09T12:34:56.789Z\",\n            \"is_from_config\": false\n        },\n        {\n            \"search_tool_name\": \"config-search-tool\",\n            \"litellm_params\": {\n                \"search_provider\": \"tavily\",\n                \"api_key\": \"tvly-***\"\n            },\n            \"is_from_config\": true\n        }\n    ]\n}\n```","operationId":"list_search_tools_search_tools_list_get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSearchToolsResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Search Tools","tags":["search_tools"]}},"/search_tools/test_connection":{"post":{"description":"Test connection to a search provider with the given configuration.\n\nMakes a simple test search query to verify the API key and configuration are valid.\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/search_tools/test_connection\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"litellm_params\": {\n            \"search_provider\": \"perplexity\",\n            \"api_key\": \"sk-...\"\n        }\n    }'\n```\n\nExample Response (Success):\n```json\n{\n    \"status\": \"success\",\n    \"message\": \"Successfully connected to perplexity search provider\",\n    \"test_query\": \"test\",\n    \"results_count\": 5\n}\n```\n\nExample Response (Failure):\n```json\n{\n    \"status\": \"error\",\n    \"message\": \"Authentication failed: Invalid API key\",\n    \"error_type\": \"AuthenticationError\"\n}\n```","operationId":"test_search_tool_connection_search_tools_test_connection_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestSearchToolConnectionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Search Tool Connection","tags":["search_tools"]}},"/search_tools/ui/available_providers":{"get":{"description":"Get the list of available search providers with their configuration fields.\n\nAuto-discovers search providers and their UI-friendly names from transformation configs.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/search_tools/ui/available_providers\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"providers\": [\n        {\n            \"provider_name\": \"perplexity\",\n            \"ui_friendly_name\": \"Perplexity\"\n        },\n        {\n            \"provider_name\": \"tavily\",\n            \"ui_friendly_name\": \"Tavily\"\n        }\n    ]\n}\n```","operationId":"get_available_search_providers_search_tools_ui_available_providers_get","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Available Search Providers","tags":["search_tools"]}},"/search_tools/{search_tool_id}":{"delete":{"description":"Delete a search tool.\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/search_tools/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Search tool 123e4567-e89b-12d3-a456-426614174000 deleted successfully\",\n    \"search_tool_name\": \"litellm-search\"\n}\n```","operationId":"delete_search_tool_search_tools__search_tool_id__delete","parameters":[{"in":"path","name":"search_tool_id","required":true,"schema":{"title":"Search Tool Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Search Tool","tags":["search_tools"]},"get":{"description":"Get detailed information about a specific search tool by ID.\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/search_tools/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"search_tool_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"search_tool_name\": \"litellm-search\",\n    \"litellm_params\": {\n        \"search_provider\": \"perplexity\",\n        \"api_key\": \"sk-***\"\n    },\n    \"search_tool_info\": {\n        \"description\": \"Perplexity search tool\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n}\n```","operationId":"get_search_tool_info_search_tools__search_tool_id__get","parameters":[{"in":"path","name":"search_tool_id","required":true,"schema":{"title":"Search Tool Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Search Tool Info","tags":["search_tools"]},"put":{"description":"Update an existing search tool.\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/search_tools/123e4567-e89b-12d3-a456-426614174000\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"search_tool\": {\n            \"search_tool_name\": \"updated-search\",\n            \"litellm_params\": {\n                \"search_provider\": \"perplexity\",\n                \"api_key\": \"sk-new-key\"\n            },\n            \"search_tool_info\": {\n                \"description\": \"Updated search tool\"\n            }\n        }\n    }'\n```\n\nExample Response:\n```json\n{\n    \"search_tool_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n    \"search_tool_name\": \"updated-search\",\n    \"litellm_params\": {\n        \"search_provider\": \"perplexity\",\n        \"api_key\": \"sk-new-key\"\n    },\n    \"search_tool_info\": {\n        \"description\": \"Updated search tool\"\n    },\n    \"created_at\": \"2023-11-09T12:34:56.789Z\",\n    \"updated_at\": \"2023-11-09T13:45:12.345Z\"\n}\n```","operationId":"update_search_tool_search_tools__search_tool_id__put","parameters":[{"in":"path","name":"search_tool_id","required":true,"schema":{"title":"Search Tool Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSearchToolRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Search Tool","tags":["search_tools"]}},"/mcp-rest/test/connection":{"post":{"description":"Test if we can connect to the provided MCP server before adding it","operationId":"test_connection_mcp_rest_test_connection_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewMCPServerRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Connection","tags":["mcp_rest"]}},"/mcp-rest/test/tools/list":{"post":{"description":"Preview tools available from MCP server before adding it","operationId":"test_tools_list_mcp_rest_test_tools_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewMCPServerRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Tools List","tags":["mcp_rest"]}},"/mcp-rest/tools/call":{"post":{"description":"REST API to call a specific MCP tool with the provided arguments","operationId":"call_tool_rest_api_mcp_rest_tools_call_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Call Tool Rest Api","tags":["mcp_rest"]}},"/mcp-rest/tools/list":{"get":{"description":"List all available tools with information about the server they belong to.\n\nExample response:\n{\n    \"tools\": [\n        {\n            \"name\": \"create_zap\",\n            \"description\": \"Create a new zap\",\n            \"inputSchema\": \"tool_input_schema\",\n            \"mcp_info\": {\n                \"server_name\": \"zapier\",\n                \"logo_url\": \"https://www.zapier.com/logo.png\",\n            }\n        }\n    ],\n    \"error\": null,\n    \"message\": \"Successfully retrieved tools\"\n}","operationId":"list_tool_rest_api_mcp_rest_tools_list_get","parameters":[{"description":"The server id to list tools for","in":"query","name":"server_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The server id to list tools for","title":"Server Id"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"title":"Response List Tool Rest Api Mcp Rest Tools List Get","type":"object"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Tool Rest Api","tags":["mcp_rest"]}},"/openai/v1/realtime/calls":{"post":{"operationId":"proxy_realtime_calls_openai_v1_realtime_calls_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"summary":"Proxy Realtime Calls","tags":["realtime"]}},"/openai/v1/realtime/client_secrets":{"post":{"operationId":"create_realtime_client_secret_openai_v1_realtime_client_secrets_post","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeClientSecretResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Realtime Client Secret","tags":["realtime"]}},"/realtime/calls":{"post":{"operationId":"proxy_realtime_calls_realtime_calls_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"summary":"Proxy Realtime Calls","tags":["realtime"]}},"/realtime/client_secrets":{"post":{"operationId":"create_realtime_client_secret_realtime_client_secrets_post","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeClientSecretResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Realtime Client Secret","tags":["realtime"]}},"/v1/realtime/calls":{"post":{"operationId":"proxy_realtime_calls_v1_realtime_calls_post","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"summary":"Proxy Realtime Calls","tags":["realtime"]}},"/v1/realtime/client_secrets":{"post":{"operationId":"create_realtime_client_secret_v1_realtime_client_secrets_post","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeClientSecretResponse"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Realtime Client Secret","tags":["realtime"]}},"/v1/skills":{"get":{"description":"List skills on Anthropic.\n\nRequires `?beta=true` query parameter.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: claude-account-1`\n- Pass model via query: `?model=claude-account-1`\n- Pass model via body: `{\"model\": \"claude-account-1\"}`\n\nExample usage:\n```bash\n# Basic usage\ncurl \"http://localhost:4000/v1/skills?beta=true&limit=10\"       -H \"Authorization: Bearer your-key\"\n\n# With model-based routing\ncurl \"http://localhost:4000/v1/skills?beta=true&limit=10\"       -H \"Authorization: Bearer your-key\"       -H \"x-litellm-model: claude-account-1\"\n```\n\nReturns: ListSkillsResponse with list of skills","operationId":"list_skills_v1_skills_get","parameters":[{"in":"query","name":"limit","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":10,"title":"Limit"}},{"in":"query","name":"after_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After Id"}},{"in":"query","name":"before_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before Id"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"anthropic","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSkillsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Skills","tags":["anthropic_skills"]},"post":{"description":"Create a new skill on Anthropic.\n\nRequires `?beta=true` query parameter.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: claude-account-1`\n- Pass model via query: `?model=claude-account-1`\n- Pass model via form field: `model=claude-account-1`\n\nExample usage:\n```bash\n# Basic usage\ncurl -X POST \"http://localhost:4000/v1/skills?beta=true\"       -H \"Content-Type: multipart/form-data\"       -H \"Authorization: Bearer your-key\"       -F \"display_title=My Skill\"       -F \"files[]=@skill.zip\"\n\n# With model-based routing\ncurl -X POST \"http://localhost:4000/v1/skills?beta=true\"       -H \"Content-Type: multipart/form-data\"       -H \"Authorization: Bearer your-key\"       -H \"x-litellm-model: claude-account-1\"       -F \"display_title=My Skill\"       -F \"files[]=@skill.zip\"\n```\n\nReturns: Skill object with id, display_title, etc.","operationId":"create_skill_v1_skills_post","parameters":[{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"anthropic","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Skill","tags":["anthropic_skills"]}},"/v1/skills/{skill_id}":{"delete":{"description":"Delete a skill by ID from Anthropic.\n\nRequires `?beta=true` query parameter.\n\nNote: Anthropic does not allow deleting skills with existing versions.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: claude-account-1`\n- Pass model via query: `?model=claude-account-1`\n- Pass model via body: `{\"model\": \"claude-account-1\"}`\n\nExample usage:\n```bash\n# Basic usage\ncurl -X DELETE \"http://localhost:4000/v1/skills/skill_123?beta=true\"       -H \"Authorization: Bearer your-key\"\n\n# With model-based routing\ncurl -X DELETE \"http://localhost:4000/v1/skills/skill_123?beta=true\"       -H \"Authorization: Bearer your-key\"       -H \"x-litellm-model: claude-account-1\"\n```\n\nReturns: DeleteSkillResponse with type=\"skill_deleted\"","operationId":"delete_skill_v1_skills__skill_id__delete","parameters":[{"in":"path","name":"skill_id","required":true,"schema":{"title":"Skill Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"anthropic","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSkillResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Skill","tags":["anthropic_skills"]},"get":{"description":"Get a specific skill by ID from Anthropic.\n\nRequires `?beta=true` query parameter.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: claude-account-1`\n- Pass model via query: `?model=claude-account-1`\n- Pass model via body: `{\"model\": \"claude-account-1\"}`\n\nExample usage:\n```bash\n# Basic usage\ncurl \"http://localhost:4000/v1/skills/skill_123?beta=true\"       -H \"Authorization: Bearer your-key\"\n\n# With model-based routing\ncurl \"http://localhost:4000/v1/skills/skill_123?beta=true\"       -H \"Authorization: Bearer your-key\"       -H \"x-litellm-model: claude-account-1\"\n```\n\nReturns: Skill object","operationId":"get_skill_v1_skills__skill_id__get","parameters":[{"in":"path","name":"skill_id","required":true,"schema":{"title":"Skill Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"anthropic","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Skill","tags":["anthropic_skills"]}},"/langfuse/{endpoint}":{"delete":{"description":"Call Langfuse via LiteLLM proxy. Works with Langfuse SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/langfuse)","operationId":"langfuse_proxy_route_langfuse__endpoint__delete","parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"title":"Endpoint","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"summary":"Langfuse Proxy Route","tags":["langfuse_passthrough"]},"get":{"description":"Call Langfuse via LiteLLM proxy. Works with Langfuse SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/langfuse)","operationId":"langfuse_proxy_route_langfuse__endpoint__get","parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"title":"Endpoint","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"summary":"Langfuse Proxy Route","tags":["langfuse_passthrough"]},"patch":{"description":"Call Langfuse via LiteLLM proxy. Works with Langfuse SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/langfuse)","operationId":"langfuse_proxy_route_langfuse__endpoint__patch","parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"title":"Endpoint","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"summary":"Langfuse Proxy Route","tags":["langfuse_passthrough"]},"post":{"description":"Call Langfuse via LiteLLM proxy. Works with Langfuse SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/langfuse)","operationId":"langfuse_proxy_route_langfuse__endpoint__post","parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"title":"Endpoint","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"summary":"Langfuse Proxy Route","tags":["langfuse_passthrough"]},"put":{"description":"Call Langfuse via LiteLLM proxy. Works with Langfuse SDK.\n\n[Docs](https://docs.litellm.ai/docs/pass_through/langfuse)","operationId":"langfuse_proxy_route_langfuse__endpoint__put","parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"title":"Endpoint","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"summary":"Langfuse Proxy Route","tags":["langfuse_passthrough"]}},"/v1/evals":{"get":{"description":"List evaluations with pagination.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl \"http://localhost:4000/v1/evals?limit=10\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: ListEvalsResponse with list of evaluations","operationId":"list_evals_v1_evals_get","parameters":[{"in":"query","name":"limit","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":20,"title":"Limit"}},{"in":"query","name":"after","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"in":"query","name":"before","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"in":"query","name":"order","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"in":"query","name":"order_by","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEvalsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Evals","tags":["evals"]},"post":{"description":"Create a new evaluation.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl -X POST \"http://localhost:4000/v1/evals\"       -H \"Authorization: Bearer your-key\"       -H \"Content-Type: application/json\"       -d '{\n    \"name\": \"Test Eval\",\n    \"data_source_config\": {\"type\": \"file\", \"file_id\": \"file-abc123\"},\n    \"testing_criteria\": {\"graders\": [{\"type\": \"llm_as_judge\"}]}\n  }'\n```\n\nReturns: Eval object with id, status, timestamps, etc.","operationId":"create_eval_v1_evals_post","parameters":[{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eval"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Eval","tags":["evals"]}},"/v1/evals/{eval_id}":{"delete":{"description":"Delete an evaluation.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/evals/eval_123\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: DeleteEvalResponse with deletion confirmation","operationId":"delete_eval_v1_evals__eval_id__delete","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteEvalResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Eval","tags":["evals"]},"get":{"description":"Get a specific evaluation by ID.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl \"http://localhost:4000/v1/evals/eval_123\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: Eval object","operationId":"get_eval_v1_evals__eval_id__get","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eval"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Eval","tags":["evals"]},"post":{"description":"Update an evaluation.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl -X POST \"http://localhost:4000/v1/evals/eval_123\"       -H \"Authorization: Bearer your-key\"       -H \"Content-Type: application/json\"       -d '{\"name\": \"Updated Name\"}'\n```\n\nReturns: Updated Eval object","operationId":"update_eval_v1_evals__eval_id__post","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Eval"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Eval","tags":["evals"]}},"/v1/evals/{eval_id}/cancel":{"post":{"description":"Cancel a running evaluation.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n\nExample usage:\n```bash\ncurl -X POST \"http://localhost:4000/v1/evals/eval_123/cancel\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: CancelEvalResponse with cancellation confirmation","operationId":"cancel_eval_v1_evals__eval_id__cancel_post","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelEvalResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Cancel Eval","tags":["evals"]}},"/v1/evals/{eval_id}/runs":{"get":{"description":"List all runs for an evaluation with pagination.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n\nExample usage:\n```bash\ncurl \"http://localhost:4000/v1/evals/eval_123/runs?limit=10\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: ListRunsResponse with list of runs","operationId":"list_runs_v1_evals__eval_id__runs_get","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":20,"title":"Limit"}},{"in":"query","name":"after","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"in":"query","name":"before","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"in":"query","name":"order","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRunsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Runs","tags":["evals"]},"post":{"description":"Create a new run for an evaluation.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n- Pass model via body: `{\"model\": \"gpt-4-account-1\"}`\n- Pass model via completion.model: `{\"completion\": {\"model\": \"gpt-4-account-1\"}}`\n\nExample usage:\n```bash\ncurl -X POST \"http://localhost:4000/v1/evals/eval_123/runs\"       -H \"Authorization: Bearer your-key\"       -H \"Content-Type: application/json\"       -d '{\n    \"data_source\": {\"type\": \"dataset\", \"dataset_id\": \"dataset_123\"},\n    \"completion\": {\"model\": \"gpt-4\", \"temperature\": 0.7}\n  }'\n```\n\nReturns: Run object with id, status, timestamps, etc.","operationId":"create_run_v1_evals__eval_id__runs_post","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Run","tags":["evals"]}},"/v1/evals/{eval_id}/runs/{run_id}":{"delete":{"description":"Delete a run.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n\nExample usage:\n```bash\ncurl -X DELETE \"http://localhost:4000/v1/evals/eval_123/runs/run_456\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: RunDeleteResponse with deletion confirmation","operationId":"delete_run_v1_evals__eval_id__runs__run_id__delete","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"path","name":"run_id","required":true,"schema":{"title":"Run Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunDeleteResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Run","tags":["evals"]},"get":{"description":"Get a specific run by ID.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n\nExample usage:\n```bash\ncurl \"http://localhost:4000/v1/evals/eval_123/runs/run_456\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: Run object with full details","operationId":"get_run_v1_evals__eval_id__runs__run_id__get","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"path","name":"run_id","required":true,"schema":{"title":"Run Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Run","tags":["evals"]},"post":{"description":"Cancel a running run.\n\nModel-based routing (for multi-account support):\n- Pass model via header: `x-litellm-model: gpt-4-account-1`\n- Pass model via query: `?model=gpt-4-account-1`\n\nExample usage:\n```bash\ncurl -X POST \"http://localhost:4000/v1/evals/eval_123/runs/run_456/cancel\"       -H \"Authorization: Bearer your-key\"\n```\n\nReturns: CancelRunResponse with cancellation confirmation","operationId":"cancel_run_v1_evals__eval_id__runs__run_id__post","parameters":[{"in":"path","name":"eval_id","required":true,"schema":{"title":"Eval Id","type":"string"}},{"in":"path","name":"run_id","required":true,"schema":{"title":"Run Id","type":"string"}},{"in":"query","name":"custom_llm_provider","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"openai","title":"Custom Llm Provider"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelRunResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Cancel Run","tags":["evals"]}},"/claude-code/marketplace.json":{"get":{"description":"Serve marketplace.json for Claude Code plugin discovery.\n\nThis endpoint is accessed by Claude Code CLI when users run:\n- claude plugin marketplace add <url>\n- claude plugin install <name>@<marketplace>\n\nReturns:\n    Marketplace catalog with list of available plugins and their git sources.\n\nExample:\n    ```bash\n    claude plugin marketplace add http://localhost:4000/claude-code/marketplace.json\n    claude plugin install my-plugin@litellm\n    ```","operationId":"get_marketplace_claude_code_marketplace_json_get","responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"summary":"Get Marketplace","tags":["claude_code_marketplace"]}},"/claude-code/plugins":{"get":{"description":"List all plugins in the marketplace.\n\nParameters:\n    - enabled_only: If true, only return enabled plugins\n\nReturns:\n    List of plugins with their metadata.","operationId":"list_plugins_claude_code_plugins_get","parameters":[{"in":"query","name":"enabled_only","required":false,"schema":{"default":false,"title":"Enabled Only","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPluginsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Plugins","tags":["claude_code_marketplace"]},"post":{"description":"Register a new plugin in the LiteLLM marketplace.\n\nLiteLLM acts as a registry/discovery layer. Plugins are hosted on\nGitHub/GitLab/Bitbucket. Claude Code will clone from the git source\nwhen users install.\n\nThis endpoint is create-only and never overwrites. If a plugin with\nthe same name already exists it returns 409 Conflict; use\nPUT /claude-code/plugins/{plugin_name} to update an existing plugin.\n\nParameters:\n    - name: Plugin name (kebab-case)\n    - source: Git source reference (github, url, or git-subdir format)\n    - version: Semantic version (optional)\n    - description: Plugin description (optional)\n    - author: Author information (optional)\n    - homepage: Plugin homepage URL (optional)\n    - keywords: Search keywords (optional)\n    - category: Plugin category (optional)\n\nReturns:\n    Registration status (action is always \"created\") and plugin information.\n\nExample:\n    ```bash\n    curl -X POST http://localhost:4000/claude-code/plugins \\\n      -H \"Authorization: Bearer sk-...\" \\\n      -H \"Content-Type: application/json\" \\\n      -d '{\n        \"name\": \"my-plugin\",\n        \"source\": {\"source\": \"github\", \"repo\": \"org/my-plugin\"},\n        \"version\": \"1.0.0\",\n        \"description\": \"My awesome plugin\"\n      }'\n    ```","operationId":"register_plugin_claude_code_plugins_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPluginRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPluginResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Register Plugin","tags":["claude_code_marketplace"]}},"/claude-code/plugins/{plugin_name}":{"delete":{"description":"Delete a plugin from the marketplace.\n\nParameters:\n    - plugin_name: The name of the plugin to delete","operationId":"delete_plugin_claude_code_plugins__plugin_name__delete","parameters":[{"in":"path","name":"plugin_name","required":true,"schema":{"title":"Plugin Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Plugin","tags":["claude_code_marketplace"]},"get":{"description":"Get details of a specific plugin.\n\nParameters:\n    - plugin_name: The name of the plugin\n\nReturns:\n    Plugin details including source and metadata.","operationId":"get_plugin_claude_code_plugins__plugin_name__get","parameters":[{"in":"path","name":"plugin_name","required":true,"schema":{"title":"Plugin Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Plugin","tags":["claude_code_marketplace"]},"put":{"description":"Update an existing plugin in the LiteLLM marketplace.\n\nThe plugin is identified by its name in the path, which is the resource\nidentity and cannot be changed here. This is a full replace, not a merge:\nthe manifest is rebuilt from the request body, so any optional field left\nout is reset to its default (e.g. an omitted version is cleared, not kept).\nSend the full desired state.\n\nReturns 404 if no plugin with the given name exists; use\nPOST /claude-code/plugins to create a new plugin.\n\nParameters:\n    - plugin_name: Name of the plugin to update (path parameter)\n    - source: Git source reference (github, url, or git-subdir format)\n    - version: Semantic version (optional)\n    - description: Plugin description (optional)\n    - author: Author information (optional)\n    - homepage: Plugin homepage URL (optional)\n    - keywords: Search keywords (optional)\n    - category: Plugin category (optional)\n\nReturns:\n    Update status (action is always \"updated\") and plugin information.\n\nExample:\n    ```bash\n    curl -X PUT http://localhost:4000/claude-code/plugins/my-plugin \\\n      -H \"Authorization: Bearer sk-...\" \\\n      -H \"Content-Type: application/json\" \\\n      -d '{\n        \"source\": {\"source\": \"github\", \"repo\": \"org/my-plugin\"},\n        \"version\": \"2.0.0\",\n        \"description\": \"My awesome plugin\"\n      }'\n    ```","operationId":"update_plugin_claude_code_plugins__plugin_name__put","parameters":[{"in":"path","name":"plugin_name","required":true,"schema":{"title":"Plugin Name","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePluginRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPluginResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Plugin","tags":["claude_code_marketplace"]}},"/claude-code/plugins/{plugin_name}/disable":{"post":{"description":"Disable a plugin without deleting it.\n\nParameters:\n    - plugin_name: The name of the plugin to disable","operationId":"disable_plugin_claude_code_plugins__plugin_name__disable_post","parameters":[{"in":"path","name":"plugin_name","required":true,"schema":{"title":"Plugin Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Disable Plugin","tags":["claude_code_marketplace"]}},"/claude-code/plugins/{plugin_name}/enable":{"post":{"description":"Enable a disabled plugin.\n\nParameters:\n    - plugin_name: The name of the plugin to enable","operationId":"enable_plugin_claude_code_plugins__plugin_name__enable_post","parameters":[{"in":"path","name":"plugin_name","required":true,"schema":{"title":"Plugin Name","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Enable Plugin","tags":["claude_code_marketplace"]}},"/scim/v2":{"get":{"description":"Base SCIM v2 endpoint for resource discovery per RFC 7644 Section 4.\n\nReturns a ListResponse of ResourceTypes supported by this SCIM service provider.\nIdentity providers (Okta, Azure AD, etc.) use this endpoint for resource discovery.","operationId":"get_scim_base_scim_v2_get","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Scim Base","tags":["scim"]}},"/scim/v2/Groups":{"get":{"description":"Get a list of groups according to SCIM v2 protocol","operationId":"get_groups_scim_v2_Groups_get","parameters":[{"in":"query","name":"startIndex","required":false,"schema":{"default":1,"minimum":1,"title":"Startindex","type":"integer"}},{"in":"query","name":"count","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"title":"Count","type":"integer"}},{"in":"query","name":"filter","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Groups","tags":["scim"]},"post":{"description":"Create a group according to SCIM v2 protocol","operationId":"create_group_scim_v2_Groups_post","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Group","tags":["scim"]}},"/scim/v2/Groups/{group_id}":{"delete":{"description":"Delete a group according to SCIM v2 protocol","operationId":"delete_group_scim_v2_Groups__group_id__delete","parameters":[{"in":"path","name":"group_id","required":true,"schema":{"title":"Group ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Group","tags":["scim"]},"get":{"description":"Get a single group by ID according to SCIM v2 protocol","operationId":"get_group_scim_v2_Groups__group_id__get","parameters":[{"in":"path","name":"group_id","required":true,"schema":{"title":"Group ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Group","tags":["scim"]},"patch":{"description":"Patch a group according to SCIM v2 protocol","operationId":"patch_group_scim_v2_Groups__group_id__patch","parameters":[{"in":"path","name":"group_id","required":true,"schema":{"title":"Group ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMPatchOp"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Patch Group","tags":["scim"]},"put":{"description":"Update a group according to SCIM v2 protocol","operationId":"update_group_scim_v2_Groups__group_id__put","parameters":[{"in":"path","name":"group_id","required":true,"schema":{"title":"Group ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMGroup"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Group","tags":["scim"]}},"/scim/v2/ResourceTypes":{"get":{"description":"SCIM ResourceTypes endpoint per RFC 7644 Section 4.\n\nReturns a ListResponse of all resource types supported by this service provider.","operationId":"get_resource_types_scim_v2_ResourceTypes_get","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Resource Types","tags":["scim"]}},"/scim/v2/ResourceTypes/{resource_type_id}":{"get":{"description":"Get a single ResourceType by ID per RFC 7644.","operationId":"get_resource_type_scim_v2_ResourceTypes__resource_type_id__get","parameters":[{"in":"path","name":"resource_type_id","required":true,"schema":{"title":"ResourceType ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Resource Type","tags":["scim"]}},"/scim/v2/Schemas":{"get":{"description":"SCIM Schemas endpoint per RFC 7643 Section 7.\n\nReturns a ListResponse of all schemas supported by this service provider.","operationId":"get_schemas_scim_v2_Schemas_get","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Schemas","tags":["scim"]}},"/scim/v2/Schemas/{schema_id}":{"get":{"description":"Get a single Schema by its URI per RFC 7643 Section 7.","operationId":"get_schema_scim_v2_Schemas__schema_id__get","parameters":[{"in":"path","name":"schema_id","required":true,"schema":{"title":"Schema URI","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Schema","tags":["scim"]}},"/scim/v2/ServiceProviderConfig":{"get":{"description":"Return SCIM Service Provider Configuration.","operationId":"get_service_provider_config_scim_v2_ServiceProviderConfig_get","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMServiceProviderConfig"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Service Provider Config","tags":["scim"]}},"/scim/v2/Users":{"get":{"description":"Get a list of users according to SCIM v2 protocol","operationId":"get_users_scim_v2_Users_get","parameters":[{"in":"query","name":"startIndex","required":false,"schema":{"default":1,"minimum":1,"title":"Startindex","type":"integer"}},{"in":"query","name":"count","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"title":"Count","type":"integer"}},{"in":"query","name":"filter","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Users","tags":["scim"]},"post":{"description":"Create a user according to SCIM v2 protocol","operationId":"create_user_scim_v2_Users_post","parameters":[{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create User","tags":["scim"]}},"/scim/v2/Users/{user_id}":{"delete":{"description":"Delete a user according to SCIM v2 protocol","operationId":"delete_user_scim_v2_Users__user_id__delete","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"title":"User ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete User","tags":["scim"]},"get":{"description":"Get a single user by ID according to SCIM v2 protocol","operationId":"get_user_scim_v2_Users__user_id__get","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"title":"User ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get User","tags":["scim"]},"patch":{"description":"Patch a user according to SCIM v2 protocol","operationId":"patch_user_scim_v2_Users__user_id__patch","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"title":"User ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMPatchOp"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Patch User","tags":["scim"]},"put":{"description":"Update a user according to SCIM v2 protocol (full replacement)","operationId":"update_user_scim_v2_Users__user_id__put","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"title":"User ID","type":"string"}},{"in":"query","name":"feature","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SCIMUser"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update User","tags":["scim"]}},"/usage/ai/chat":{"post":{"description":"AI chat about usage data. Streams SSE events with the AI response.\nThe AI agent has access to tools that query aggregated daily activity data.","operationId":"usage_ai_chat_usage_ai_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageAIChatRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Usage Ai Chat","tags":["usage_ai"]}},"/prompts":{"post":{"description":"Create a new prompt\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/prompts\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"prompt_id\": \"my_prompt\",\n        \"litellm_params\": {\n            \"prompt_id\": \"json_prompt\",\n            \"prompt_integration\": \"dotprompt\",\n            ### EITHER prompt_directory OR prompt_data MUST BE PROVIDED\n            \"prompt_directory\": \"/path/to/dotprompt/folder\",\n            \"prompt_data\": {\"json_prompt\": {\"content\": \"This is a prompt\", \"metadata\": {\"model\": \"gpt-4\"}}}\n        },\n        \"prompt_info\": {\n            \"prompt_type\": \"config\"\n        }\n    }'\n```","operationId":"create_prompt_prompts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Prompt","tags":["prompts"]}},"/prompts/list":{"get":{"description":"List the prompts that are available on the proxy server\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/prompts/list\" -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"prompts\": [\n        {\n            \"prompt_id\": \"my_prompt_id\",\n            \"litellm_params\": {\n                \"prompt_id\": \"my_prompt_id\",\n                \"prompt_integration\": \"dotprompt\",\n                \"prompt_directory\": \"/path/to/prompts\"\n            },\n            \"prompt_info\": {\n                \"prompt_type\": \"config\"\n            },\n            \"created_at\": \"2023-11-09T12:34:56.789Z\",\n            \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n        }\n    ]\n}\n```","operationId":"list_prompts_prompts_list_get","parameters":[{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Prompts","tags":["prompts"]}},"/prompts/test":{"post":{"description":"Test a prompt by rendering it with variables and executing an LLM call.\n\nThis endpoint allows testing prompts before saving them to the database.\nThe response is always streamed.\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X POST \"http://localhost:4000/prompts/test\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"dotprompt_content\": \"---\\nmodel: gpt-4o\\ntemperature: 0.7\\n---\\n\\nUser: Hello {{name}}\",\n        \"prompt_variables\": {\n            \"name\": \"World\"\n        }\n    }'\n```","operationId":"test_prompt_prompts_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPromptRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Test Prompt","tags":["prompts"]}},"/prompts/{prompt_id}":{"delete":{"description":"Delete a prompt\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X DELETE \"http://localhost:4000/prompts/my_prompt_id\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"message\": \"Prompt my_prompt_id deleted successfully\"\n}\n```","operationId":"delete_prompt_prompts__prompt_id__delete","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Prompt","tags":["prompts"]},"get":{"description":"Get detailed information about a specific prompt by ID, including prompt content\n\n    👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\n    Example Request:\n    ```bash\n    curl -X GET \"http://localhost:4000/prompts/my_prompt_id/info\" \\\n        -H \"Authorization: Bearer <your_api_key>\"\n    ```\n\n    Example Response:\n    ```json\n    {\n        \"prompt_id\": \"my_prompt_id\",\n        \"litellm_params\": {\n            \"prompt_id\": \"my_prompt_id\",\n            \"prompt_integration\": \"dotprompt\",\n            \"prompt_directory\": \"/path/to/prompts\"\n        },\n        \"prompt_info\": {\n            \"prompt_type\": \"config\"\n        },\n        \"created_at\": \"2023-11-09T12:34:56.789Z\",\n        \"updated_at\": \"2023-11-09T12:34:56.789Z\",\n        \"content\": \"System: You are a helpful assistant.\n\nUser: {{user_message}}\"\n    }\n    ```","operationId":"get_prompt_info_prompts__prompt_id__get","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInfoResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Prompt Info","tags":["prompts"]},"patch":{"description":"Partially update an existing prompt\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nThis endpoint allows updating specific fields of a prompt without sending the entire object.\nOnly the following fields can be updated:\n- litellm_params: LiteLLM parameters for the prompt\n- prompt_info: Additional information about the prompt\n\nExample Request:\n```bash\ncurl -X PATCH \"http://localhost:4000/prompts/my_prompt_id\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"prompt_info\": {\n            \"prompt_type\": \"db\"\n        }\n    }'\n```","operationId":"patch_prompt_prompts__prompt_id__patch","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchPromptRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Patch Prompt","tags":["prompts"]},"put":{"description":"Update an existing prompt\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X PUT \"http://localhost:4000/prompts/my_prompt_id\" \\\n    -H \"Authorization: Bearer <your_api_key>\" \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"prompt_id\": \"my_prompt\",\n        \"litellm_params\": {\n            \"prompt_id\": \"my_prompt\",\n                \"prompt_integration\": \"dotprompt\",\n                \"prompt_directory\": \"/path/to/prompts\"\n            },\n            \"prompt_info\": {\n                \"prompt_type\": \"config\"\n            }\n        }\n    }'\n```","operationId":"update_prompt_prompts__prompt_id__put","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Prompt","tags":["prompts"]}},"/prompts/{prompt_id}/info":{"get":{"description":"Get detailed information about a specific prompt by ID, including prompt content\n\n    👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\n    Example Request:\n    ```bash\n    curl -X GET \"http://localhost:4000/prompts/my_prompt_id/info\" \\\n        -H \"Authorization: Bearer <your_api_key>\"\n    ```\n\n    Example Response:\n    ```json\n    {\n        \"prompt_id\": \"my_prompt_id\",\n        \"litellm_params\": {\n            \"prompt_id\": \"my_prompt_id\",\n            \"prompt_integration\": \"dotprompt\",\n            \"prompt_directory\": \"/path/to/prompts\"\n        },\n        \"prompt_info\": {\n            \"prompt_type\": \"config\"\n        },\n        \"created_at\": \"2023-11-09T12:34:56.789Z\",\n        \"updated_at\": \"2023-11-09T12:34:56.789Z\",\n        \"content\": \"System: You are a helpful assistant.\n\nUser: {{user_message}}\"\n    }\n    ```","operationId":"get_prompt_info_prompts__prompt_id__info_get","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptInfoResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Prompt Info","tags":["prompts"]}},"/prompts/{prompt_id}/versions":{"get":{"description":"Get all versions of a specific prompt by base prompt ID\n\n👉 [Prompt docs](https://docs.litellm.ai/docs/proxy/prompt_management)\n\nExample Request:\n```bash\ncurl -X GET \"http://localhost:4000/prompts/jack_success/versions\" \\\n    -H \"Authorization: Bearer <your_api_key>\"\n```\n\nExample Response:\n```json\n{\n    \"prompts\": [\n        {\n            \"prompt_id\": \"jack_success.v1\",\n            \"litellm_params\": {...},\n            \"prompt_info\": {\"prompt_type\": \"db\"},\n            \"created_at\": \"2023-11-09T12:34:56.789Z\",\n            \"updated_at\": \"2023-11-09T12:34:56.789Z\"\n        },\n        {\n            \"prompt_id\": \"jack_success.v2\",\n            \"litellm_params\": {...},\n            \"prompt_info\": {\"prompt_type\": \"db\"},\n            \"created_at\": \"2023-11-09T13:45:12.345Z\",\n            \"updated_at\": \"2023-11-09T13:45:12.345Z\"\n        }\n    ]\n}\n```","operationId":"get_prompt_versions_prompts__prompt_id__versions_get","parameters":[{"in":"path","name":"prompt_id","required":true,"schema":{"title":"Prompt Id","type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Prompt Versions","tags":["prompts"]}},"/utils/dotprompt_json_converter":{"post":{"description":"Convert a .prompt file to JSON format.\n\nThis endpoint accepts a .prompt file upload and returns the equivalent JSON representation\nthat can be stored in a database or used programmatically.\n\nReturns the JSON structure with 'content' and 'metadata' fields.","operationId":"convert_prompt_file_to_json_utils_dotprompt_json_converter_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_convert_prompt_file_to_json_utils_dotprompt_json_converter_post"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"title":"Response Convert Prompt File To Json Utils Dotprompt Json Converter Post","type":"object"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Convert Prompt File To Json","tags":["prompts"]}},"/jwt/key/mapping/delete":{"post":{"operationId":"delete_jwt_key_mapping_jwt_key_mapping_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteJWTKeyMappingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Jwt Key Mapping","tags":["jwt_mappings"]}},"/jwt/key/mapping/info":{"get":{"operationId":"info_jwt_key_mapping_jwt_key_mapping_info_get","parameters":[{"in":"query","name":"id","required":true,"schema":{"title":"Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JWTKeyMappingResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Info Jwt Key Mapping","tags":["jwt_mappings"]}},"/jwt/key/mapping/list":{"get":{"operationId":"list_jwt_key_mappings_jwt_key_mapping_list_get","parameters":[{"description":"Page number","in":"query","name":"page","required":false,"schema":{"default":1,"description":"Page number","minimum":1,"title":"Page","type":"integer"}},{"description":"Page size","in":"query","name":"size","required":false,"schema":{"default":50,"description":"Page size","maximum":100,"minimum":1,"title":"Size","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"List Jwt Key Mappings","tags":["jwt_mappings"]}},"/jwt/key/mapping/new":{"post":{"operationId":"create_jwt_key_mapping_jwt_key_mapping_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJWTKeyMappingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JWTKeyMappingResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Jwt Key Mapping","tags":["jwt_mappings"]}},"/jwt/key/mapping/update":{"post":{"operationId":"update_jwt_key_mapping_jwt_key_mapping_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJWTKeyMappingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JWTKeyMappingResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Jwt Key Mapping","tags":["jwt_mappings"]}},"/compliance/eu-ai-act":{"post":{"description":"Check EU AI Act compliance for a spend log entry.\n\nChecks:\n- Art. 9: Guardrails applied (any guardrail)\n- Art. 5: Content screened before LLM (pre-call guardrails)\n- Art. 12: Audit record complete (user_id, model, timestamp, guardrail_results)","operationId":"check_eu_ai_act_compliance_compliance_eu_ai_act_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceCheckRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Check Eu Ai Act Compliance","tags":["compliance"]}},"/compliance/gdpr":{"post":{"description":"Check GDPR compliance for a spend log entry.\n\nChecks:\n- Art. 32: Data protection applied (pre-call guardrails)\n- Art. 5(1)(c): Sensitive data protected (masked/blocked or no issues)\n- Art. 30: Audit record complete (user_id, model, timestamp, guardrail_results)","operationId":"check_gdpr_compliance_compliance_gdpr_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceCheckRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Check Gdpr Compliance","tags":["compliance"]}},"/v1/access_group":{"get":{"operationId":"list_access_groups_v1_access_group_get","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccessGroupResponse"},"title":"Response List Access Groups V1 Access Group Get","type":"array"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Access Groups","tags":["access_groups"]},"post":{"operationId":"create_access_group_v1_access_group_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupCreateRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Access Group","tags":["access_groups"]}},"/v1/access_group/{access_group_id}":{"delete":{"operationId":"delete_access_group_v1_access_group__access_group_id__delete","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Access Group","tags":["access_groups"]},"get":{"operationId":"get_access_group_v1_access_group__access_group_id__get","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Access Group","tags":["access_groups"]},"put":{"operationId":"update_access_group_v1_access_group__access_group_id__put","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Access Group","tags":["access_groups"]}},"/v1/unified_access_group":{"get":{"operationId":"list_access_groups_v1_unified_access_group_get","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccessGroupResponse"},"title":"Response List Access Groups V1 Unified Access Group Get","type":"array"}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"List Access Groups","tags":["access_groups"]},"post":{"operationId":"create_access_group_v1_unified_access_group_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupCreateRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Create Access Group","tags":["access_groups"]}},"/v1/unified_access_group/{access_group_id}":{"delete":{"operationId":"delete_access_group_v1_unified_access_group__access_group_id__delete","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Delete Access Group","tags":["access_groups"]},"get":{"operationId":"get_access_group_v1_unified_access_group__access_group_id__get","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Get Access Group","tags":["access_groups"]},"put":{"operationId":"update_access_group_v1_unified_access_group__access_group_id__put","parameters":[{"in":"path","name":"access_group_id","required":true,"schema":{"title":"Access Group Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessGroupResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"APIKeyHeader":[]}],"summary":"Update Access Group","tags":["access_groups"]}}},"components":{"schemas":{"APIKeySecurityScheme":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type":{"type":"string","const":"apiKey","title":"Type"},"in_":{"type":"string","enum":["query","header","cookie"],"title":"In"},"name":{"type":"string","title":"Name"}},"type":"object","required":["type","in_","name"],"title":"APIKeySecurityScheme","description":"Defines a security scheme using an API key."},"AccessControl_UI_AccessMode":{"properties":{"type":{"type":"string","const":"restricted_sso_group","title":"Type"},"restricted_sso_group":{"type":"string","title":"Restricted Sso Group"},"sso_group_jwt_field":{"type":"string","title":"Sso Group Jwt Field"}},"type":"object","required":["type","restricted_sso_group","sso_group_jwt_field"],"title":"AccessControl_UI_AccessMode","description":"Model for Controlling UI Access Mode via SSO Groups"},"AccessGroupInfo":{"properties":{"access_group":{"type":"string","title":"Access Group"},"model_names":{"items":{"type":"string"},"type":"array","title":"Model Names"},"deployment_count":{"type":"integer","title":"Deployment Count"}},"type":"object","required":["access_group","model_names","deployment_count"],"title":"AccessGroupInfo"},"ActiveUsersAnalyticsResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/TagActiveUsersResponse"},"type":"array","title":"Results"}},"type":"object","required":["results"],"title":"ActiveUsersAnalyticsResponse","description":"Response for active users analytics"},"AdaptiveRouterWeights":{"properties":{"quality":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Quality","default":0.7},"cost":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Cost","default":0.3}},"type":"object","title":"AdaptiveRouterWeights"},"AddTeamCallback":{"properties":{"callback_name":{"type":"string","title":"Callback Name"},"callback_type":{"anyOf":[{"type":"string","enum":["success","failure","success_and_failure"]},{"type":"null"}],"title":"Callback Type","default":"success_and_failure"},"callback_vars":{"additionalProperties":{"type":"string"},"type":"object","title":"Callback Vars"}},"type":"object","required":["callback_name","callback_vars"],"title":"AddTeamCallback"},"AgentCapabilities":{"properties":{"streaming":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Streaming"},"pushNotifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pushnotifications"},"stateTransitionHistory":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Statetransitionhistory"},"extensions":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgentExtension"},"type":"array"},{"type":"null"}],"title":"Extensions"}},"type":"object","title":"AgentCapabilities","description":"Defines optional capabilities supported by an agent."},"AgentCard":{"properties":{"protocolVersion":{"type":"string","title":"Protocolversion"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"url":{"type":"string","title":"Url"},"version":{"type":"string","title":"Version"},"capabilities":{"$ref":"#/components/schemas/AgentCapabilities"},"defaultInputModes":{"items":{"type":"string"},"type":"array","title":"Defaultinputmodes"},"defaultOutputModes":{"items":{"type":"string"},"type":"array","title":"Defaultoutputmodes"},"skills":{"items":{"$ref":"#/components/schemas/AgentSkill"},"type":"array","title":"Skills"},"preferredTransport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferredtransport"},"additionalInterfaces":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgentInterface"},"type":"array"},{"type":"null"}],"title":"Additionalinterfaces"},"iconUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iconurl"},"provider":{"anyOf":[{"$ref":"#/components/schemas/AgentProvider"},{"type":"null"}]},"documentationUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Documentationurl"},"securitySchemes":{"anyOf":[{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/APIKeySecurityScheme"},{"$ref":"#/components/schemas/HTTPAuthSecurityScheme"},{"$ref":"#/components/schemas/OAuth2SecurityScheme"},{"$ref":"#/components/schemas/OpenIdConnectSecurityScheme"},{"$ref":"#/components/schemas/MutualTLSSecurityScheme"}]},"type":"object"},{"type":"null"}],"title":"Securityschemes"},"security":{"anyOf":[{"items":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Security"},"supportsAuthenticatedExtendedCard":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Supportsauthenticatedextendedcard"},"signatures":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgentCardSignature"},"type":"array"},{"type":"null"}],"title":"Signatures"}},"type":"object","title":"AgentCard","description":"The AgentCard is a self-describing manifest for an agent.\nIt provides essential metadata including the agent's identity, capabilities,\nskills, supported communication methods, and security requirements."},"AgentCardSignature":{"properties":{"protected":{"type":"string","title":"Protected"},"signature":{"type":"string","title":"Signature"},"header":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Header"}},"type":"object","title":"AgentCardSignature","description":"Represents a JWS signature of an AgentCard."},"AgentCreateInfo":{"properties":{"agent_type":{"type":"string","title":"Agent Type"},"agent_type_display_name":{"type":"string","title":"Agent Type Display Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"credential_fields":{"items":{"$ref":"#/components/schemas/AgentCredentialField"},"type":"array","title":"Credential Fields"},"litellm_params_template":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Litellm Params Template"},"model_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Template"}},"type":"object","required":["agent_type","agent_type_display_name","credential_fields"],"title":"AgentCreateInfo"},"AgentCredentialField":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"placeholder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placeholder"},"tooltip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tooltip"},"required":{"type":"boolean","title":"Required","default":false},"field_type":{"type":"string","enum":["text","password","select","upload","textarea"],"title":"Field Type","default":"text"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"default_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Value"},"include_in_litellm_params":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include In Litellm Params"}},"type":"object","required":["key","label"],"title":"AgentCredentialField"},"AgentExtension":{"properties":{"uri":{"type":"string","title":"Uri"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Required"},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","title":"AgentExtension","description":"A declaration of a protocol extension supported by an Agent."},"AgentInterface":{"properties":{"url":{"type":"string","title":"Url"},"transport":{"type":"string","title":"Transport"}},"type":"object","title":"AgentInterface","description":"Declares a combination of a target URL and a transport protocol."},"AgentProvider":{"properties":{"organization":{"type":"string","title":"Organization"},"url":{"type":"string","title":"Url"}},"type":"object","title":"AgentProvider","description":"Represents the service provider of an agent."},"AgentSkill":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"examples":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Examples"},"inputModes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Inputmodes"},"outputModes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputmodes"},"security":{"anyOf":[{"items":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Security"}},"type":"object","title":"AgentSkill","description":"Represents a distinct capability or function that an agent can perform."},"AllowedVectorStoreIndexItem":{"properties":{"index_name":{"type":"string","title":"Index Name"},"index_permissions":{"items":{"type":"string","enum":["read","write"]},"type":"array","title":"Index Permissions"}},"type":"object","required":["index_name","index_permissions"],"title":"AllowedVectorStoreIndexItem"},"AuditLogResponse":{"properties":{"id":{"type":"string","title":"Id"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"changed_by":{"type":"string","title":"Changed By"},"changed_by_api_key":{"type":"string","title":"Changed By Api Key"},"action":{"type":"string","title":"Action"},"table_name":{"type":"string","title":"Table Name"},"object_id":{"type":"string","title":"Object Id"},"before_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Before Value"},"updated_values":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Updated Values"}},"type":"object","required":["id","updated_at","changed_by","changed_by_api_key","action","table_name","object_id"],"title":"AuditLogResponse","description":"Response model for a single audit log entry"},"AutoRouterBenchmarkGroup":{"properties":{"sessions":{"type":"integer","title":"Sessions"},"turns":{"type":"integer","title":"Turns"},"avg_turns_per_session":{"type":"number","title":"Avg Turns Per Session"},"avg_session_seconds":{"type":"number","title":"Avg Session Seconds"},"avg_tokens_per_session":{"type":"number","title":"Avg Tokens Per Session"},"spend":{"type":"number","title":"Spend","description":"What the routed traffic actually cost"},"saved_spend":{"type":"number","title":"Saved Spend","description":"Signed dollars saved versus each router's savings baseline (derived from its hardest tier, or the configured override), from the same per-request savings record the usage tab reads"},"baseline_spend":{"type":"number","title":"Baseline Spend","description":"spend plus saved_spend: the estimated single-model cost"},"saved_pct":{"type":"number","title":"Saved Pct","description":"saved_spend over baseline_spend, as a percentage"},"saved_per_session":{"type":"number","title":"Saved Per Session"},"cache":{"$ref":"#/components/schemas/AutoRouterCacheStats"},"router_name":{"type":"string","title":"Router Name","description":"The auto-router alias requests were sent to"},"router_type":{"type":"string","title":"Router Type","description":"complexity, adaptive or quality"},"tier_turns":{"additionalProperties":{"type":"integer"},"type":"object","title":"Tier Turns","description":"Turns per tier, keyed by the tier name the routing decision recorded at request time (never re-derived at read time, since the tier-to-model mapping is mutable config). Tier names are scoped to this group's router_type and are not comparable across types: a complexity router reports 'SIMPLE'/'MEDIUM'/'COMPLEX'/'REASONING', a quality router reports its numeric quality tier, and an adaptive router records no tier at all. Turns no tier served (the classifier fell back to default_model) are absent rather than pooled under a sentinel key, so the values may sum to less than turns"}},"type":"object","required":["sessions","turns","avg_turns_per_session","avg_session_seconds","avg_tokens_per_session","spend","saved_spend","baseline_spend","saved_pct","saved_per_session","cache","router_name","router_type"],"title":"AutoRouterBenchmarkGroup","description":"One auto-router's slice of the benchmarks."},"AutoRouterBenchmarkTotals":{"properties":{"sessions":{"type":"integer","title":"Sessions"},"turns":{"type":"integer","title":"Turns"},"avg_turns_per_session":{"type":"number","title":"Avg Turns Per Session"},"avg_session_seconds":{"type":"number","title":"Avg Session Seconds"},"avg_tokens_per_session":{"type":"number","title":"Avg Tokens Per Session"},"spend":{"type":"number","title":"Spend","description":"What the routed traffic actually cost"},"saved_spend":{"type":"number","title":"Saved Spend","description":"Signed dollars saved versus each router's savings baseline (derived from its hardest tier, or the configured override), from the same per-request savings record the usage tab reads"},"baseline_spend":{"type":"number","title":"Baseline Spend","description":"spend plus saved_spend: the estimated single-model cost"},"saved_pct":{"type":"number","title":"Saved Pct","description":"saved_spend over baseline_spend, as a percentage"},"saved_per_session":{"type":"number","title":"Saved Per Session"},"cache":{"$ref":"#/components/schemas/AutoRouterCacheStats"}},"type":"object","required":["sessions","turns","avg_turns_per_session","avg_session_seconds","avg_tokens_per_session","spend","saved_spend","baseline_spend","saved_pct","saved_per_session","cache"],"title":"AutoRouterBenchmarkTotals","description":"Session-shape and savings aggregates over auto-routed traffic in the window."},"AutoRouterBenchmarksResponse":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Window start day, YYYY-MM-DD UTC, inclusive"},"end_date":{"type":"string","title":"End Date","description":"Window end day, YYYY-MM-DD UTC, inclusive"},"routers_in_scope":{"type":"integer","title":"Routers In Scope"},"totals":{"$ref":"#/components/schemas/AutoRouterBenchmarkTotals"},"groups":{"items":{"$ref":"#/components/schemas/AutoRouterBenchmarkGroup"},"type":"array","title":"Groups"}},"type":"object","required":["start_date","end_date","routers_in_scope","totals","groups"],"title":"AutoRouterBenchmarksResponse","description":"Benchmarks for the auto-router dashboard, aggregated from the per-session rollup."},"AutoRouterCacheBucket":{"properties":{"turns":{"type":"integer","title":"Turns","description":"Turns classified into this bucket"},"hits":{"type":"integer","title":"Hits","description":"Turns in this bucket whose response reported cache-read tokens"},"hit_rate_pct":{"type":"number","title":"Hit Rate Pct","description":"hits over this bucket's turns, as a percentage"}},"type":"object","required":["turns","hits","hit_rate_pct"],"title":"AutoRouterCacheBucket","description":"One prompt-caching bucket of turns, with how often those turns hit the cache."},"AutoRouterCacheStats":{"properties":{"coverage_pct":{"type":"number","title":"Coverage Pct","description":"Share of turns that carried cache telemetry"},"hit_rate_pct":{"type":"number","title":"Hit Rate Pct","description":"All cache hits over telemetry-bearing turns"},"same_model":{"$ref":"#/components/schemas/AutoRouterCacheBucket"},"first_visit":{"$ref":"#/components/schemas/AutoRouterCacheBucket"},"return_to_tier":{"$ref":"#/components/schemas/AutoRouterCacheBucket"},"unordered_turns":{"type":"integer","title":"Unordered Turns","description":"Turns that arrived out of order and were not bucketed"},"return_misses_expired":{"type":"integer","title":"Return Misses Expired","description":"Return-to-tier misses where the model's recorded cache TTL had lapsed"},"return_misses_within_ttl":{"type":"integer","title":"Return Misses Within Ttl","description":"Return-to-tier misses inside the recorded TTL: the prefix changed or the provider evicted the entry early; billing telemetry cannot distinguish the two"},"return_misses_unknown":{"type":"integer","title":"Return Misses Unknown","description":"Return-to-tier misses with no recorded TTL to attribute against"},"ttl_5m_turns":{"type":"integer","title":"Ttl 5M Turns","description":"Turns whose cache write used the five-minute TTL"},"ttl_1h_turns":{"type":"integer","title":"Ttl 1H Turns","description":"Turns whose cache write used the one-hour TTL"}},"type":"object","required":["coverage_pct","hit_rate_pct","same_model","first_visit","return_to_tier","unordered_turns","return_misses_expired","return_misses_within_ttl","return_misses_unknown","ttl_5m_turns","ttl_1h_turns"],"title":"AutoRouterCacheStats","description":"Prompt-caching behaviour of auto-routed turns, bucketed by what the router did.\n\nEvery in-order turn falls in exactly one bucket: the session stayed on the same model,\nvisited a model for the first time (cold by design), or returned to a model it had\nalready used. Out-of-order turns (cross-pod flush races) are counted but not bucketed."},"AutoRouterClassifierDefaultPromptResponse":{"properties":{"system_prompt":{"type":"string","title":"System Prompt"}},"type":"object","required":["system_prompt"],"title":"AutoRouterClassifierDefaultPromptResponse","description":"The built-in system prompt an auto-router's LLM classifier uses when none is configured.\n\nServed so the dashboard's prompt editor prefills the rubric the proxy actually sends, rather than\na copy in the frontend that drifts the moment the rubric is edited."},"AutoRouterRoutingTestRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"The prompt to route, as an end user would send it"},"complexity_router_config":{"$ref":"#/components/schemas/RequestComplexityRouterConfig","description":"The complexity router config to route against, in the shape /model/new accepts"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model","description":"Model to route to when no tier resolves, i.e. complexity_router_default_model"},"router_name":{"type":"string","title":"Router Name","description":"Name reported as the router in the routing decision. Display only","default":"auto_router_routing_test"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id","description":"Team the router is being created for. Required for a team admin, who may only test their own team's routers"}},"type":"object","required":["prompt","complexity_router_config"],"title":"AutoRouterRoutingTestRequest","description":"A single prompt to classify against a complexity-router config that need not be saved yet."},"AutoRouterRoutingTestResponse":{"properties":{"routed_model":{"type":"string","title":"Routed Model","description":"The model group the router picked"},"routed_model_configured":{"type":"boolean","title":"Routed Model Configured","description":"Whether routed_model is a model group available to the caller, scoped to team_id when given. Never confirms models the caller could not use"},"routing_decision":{"$ref":"#/components/schemas/StandardLoggingRoutingDecision","description":"The decision record this request would have written to its log row"}},"type":"object","required":["routed_model","routed_model_configured","routing_decision"],"title":"AutoRouterRoutingTestResponse","description":"Where one prompt would have been routed, and why."},"BaseModel":{"properties":{},"type":"object","title":"BaseModel"},"BlockKeyRequest":{"properties":{"key":{"type":"string","title":"Key"}},"type":"object","required":["key"],"title":"BlockKeyRequest"},"BlockModelRequest":{"properties":{"model_id":{"type":"string","title":"Model Id"}},"type":"object","required":["model_id"],"title":"BlockModelRequest"},"BlockTeamRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"}},"type":"object","required":["team_id"],"title":"BlockTeamRequest"},"BlockUnpricedModelsRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"BlockUnpricedModelsRequest"},"BlockUnpricedModelsResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"BlockUnpricedModelsResponse"},"BlockUsers":{"properties":{"user_ids":{"items":{"type":"string"},"type":"array","title":"User Ids"}},"type":"object","required":["user_ids"],"title":"BlockUsers"},"BlockUsersResponse":{"properties":{"blocked_users":{"items":{"$ref":"#/components/schemas/LiteLLM_EndUserTable"},"type":"array","title":"Blocked Users"}},"type":"object","required":["blocked_users"],"title":"BlockUsersResponse"},"BlogPost":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"date":{"type":"string","title":"Date"},"url":{"type":"string","title":"Url"}},"type":"object","required":["title","description","date","url"],"title":"BlogPost"},"BlogPostsResponse":{"properties":{"posts":{"items":{"$ref":"#/components/schemas/BlogPost"},"type":"array","title":"Posts"}},"type":"object","required":["posts"],"title":"BlogPostsResponse"},"Body_audio_transcriptions_audio_transcriptions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_audio_transcriptions_audio_transcriptions_post"},"Body_audio_transcriptions_v1_audio_transcriptions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_audio_transcriptions_v1_audio_transcriptions_post"},"Body_create_file__provider__v1_files_post":{"properties":{"purpose":{"type":"string","title":"Purpose"},"target_model_names":{"type":"string","title":"Target Model Names","default":""},"target_storage":{"type":"string","title":"Target Storage","default":"default"},"custom_llm_provider":{"type":"string","title":"Custom Llm Provider","default":"openai"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"litellm_metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Metadata"}},"type":"object","required":["purpose","file"],"title":"Body_create_file__provider__v1_files_post"},"Body_create_file_files_post":{"properties":{"purpose":{"type":"string","title":"Purpose"},"target_model_names":{"type":"string","title":"Target Model Names","default":""},"target_storage":{"type":"string","title":"Target Storage","default":"default"},"custom_llm_provider":{"type":"string","title":"Custom Llm Provider","default":"openai"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"litellm_metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Metadata"}},"type":"object","required":["purpose","file"],"title":"Body_create_file_files_post"},"Body_create_file_v1_files_post":{"properties":{"purpose":{"type":"string","title":"Purpose"},"target_model_names":{"type":"string","title":"Target Model Names","default":""},"target_storage":{"type":"string","title":"Target Storage","default":"default"},"custom_llm_provider":{"type":"string","title":"Custom Llm Provider","default":"openai"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"litellm_metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Metadata"}},"type":"object","required":["purpose","file"],"title":"Body_create_file_v1_files_post"},"Body_image_edit_api_images_edits_post":{"properties":{"image":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image"},"image[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image[]"},"mask":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask"},"mask[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask[]"}},"type":"object","title":"Body_image_edit_api_images_edits_post"},"Body_image_edit_api_openai_deployments__model__images_edits_post":{"properties":{"image":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image"},"image[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image[]"},"mask":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask"},"mask[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask[]"}},"type":"object","title":"Body_image_edit_api_openai_deployments__model__images_edits_post"},"Body_image_edit_api_v1_images_edits_post":{"properties":{"image":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image"},"image[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Image[]"},"mask":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask"},"mask[]":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Mask[]"}},"type":"object","title":"Body_image_edit_api_v1_images_edits_post"},"Body_test_model_connection_health_test_connection_post":{"properties":{"mode":{"anyOf":[{"type":"string","enum":["chat","completion","embedding","audio_speech","audio_transcription","image_generation","video_generation","batch","rerank","realtime","responses","ocr"]},{"type":"null"}],"title":"Mode","description":"The mode to test the model with. If not provided, auto-detected from model capabilities."},"litellm_params":{"additionalProperties":true,"type":"object","title":"Litellm Params","description":"Parameters for litellm.completion, litellm.embedding for the health check"},"model_info":{"additionalProperties":true,"type":"object","title":"Model Info","description":"Model info for the health check"}},"type":"object","title":"Body_test_model_connection_health_test_connection_post"},"Body_upload_logo_upload_logo_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_logo_upload_logo_post"},"Body_video_create_character_v1_videos_characters_post":{"properties":{"video":{"type":"string","contentMediaType":"application/octet-stream","title":"Video"},"name":{"type":"string","title":"Name"}},"type":"object","required":["video","name"],"title":"Body_video_create_character_v1_videos_characters_post"},"Body_video_create_character_videos_characters_post":{"properties":{"video":{"type":"string","contentMediaType":"application/octet-stream","title":"Video"},"name":{"type":"string","title":"Name"}},"type":"object","required":["video","name"],"title":"Body_video_create_character_videos_characters_post"},"Body_video_generation_v1_videos_post":{"properties":{"input_reference":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Input Reference"}},"type":"object","title":"Body_video_generation_v1_videos_post"},"Body_video_generation_videos_post":{"properties":{"input_reference":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Input Reference"}},"type":"object","title":"Body_video_generation_videos_post"},"BreakdownMetrics":{"properties":{"mcp_servers":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Mcp Servers"},"models":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Models"},"model_groups":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Model Groups"},"providers":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Providers"},"endpoints":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Endpoints"},"api_keys":{"additionalProperties":{"$ref":"#/components/schemas/KeyMetricWithMetadata"},"type":"object","title":"Api Keys"},"entities":{"additionalProperties":{"$ref":"#/components/schemas/MetricWithMetadata"},"type":"object","title":"Entities"}},"type":"object","title":"BreakdownMetrics","description":"Breakdown of spend by different dimensions"},"BudgetConfig":{"properties":{"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"}},"type":"object","title":"BudgetConfig"},"BudgetDeleteRequest":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"BudgetDeleteRequest"},"BudgetLimitEntry":{"properties":{"budget_duration":{"type":"string","title":"Budget Duration"},"max_budget":{"type":"number","title":"Max Budget"},"reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reset At"}},"type":"object","required":["budget_duration","max_budget"],"title":"BudgetLimitEntry","description":"A single budget window with its own limit and independent reset schedule."},"BudgetListItem":{"properties":{"budget_id":{"type":"string","title":"Budget Id"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["budget_id","created_at","updated_at"],"title":"BudgetListItem","description":"One budget as the Budgets page reads it, and as it comes back off the table.\n\nValidating the raw row through here is what makes `tpm_limit` / `rpm_limit`\nnumbers: they are `BigInt?` in the schema, which the query engine hands back as\ndecimal strings, and a quoted \"60000\" breaks arithmetic in the dashboard."},"BudgetNewRequest":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id","description":"The unique budget id."},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"Requests will fail if this budget (in USD) is exceeded."},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget","description":"Requests will NOT fail if this is exceeded. Will fire alerting though."},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests","description":"Max concurrent requests allowed for this budget id."},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit","description":"Max tokens per minute, allowed for this budget id."},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit","description":"Max requests per minute, allowed for this budget id."},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Max duration budget should be set for (e.g. '1hr', '1d', '28d')"},"model_max_budget":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BudgetConfig"},"type":"object"},{"type":"null"}],"title":"Model Max Budget","description":"Max budget for each model (e.g. {'gpt-4o': {'max_budget': '0.0000001', 'budget_duration': '1d', 'tpm_limit': 1000, 'rpm_limit': 1000}})"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At","description":"Datetime when the budget is reset"}},"type":"object","title":"BudgetNewRequest"},"BudgetRequest":{"properties":{"budgets":{"items":{"type":"string"},"type":"array","title":"Budgets"}},"type":"object","required":["budgets"],"title":"BudgetRequest"},"BulkTeamMemberAddRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"members":{"anyOf":[{"items":{"$ref":"#/components/schemas/Member"},"type":"array"},{"type":"null"}],"title":"Members"},"all_users":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"All Users","default":false},"max_budget_in_team":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Team"}},"type":"object","required":["team_id"],"title":"BulkTeamMemberAddRequest","description":"Request for bulk team member addition"},"BulkTeamMemberAddResponse":{"properties":{"team_id":{"type":"string","title":"Team Id"},"results":{"items":{"$ref":"#/components/schemas/TeamMemberAddResult"},"type":"array","title":"Results"},"total_requested":{"type":"integer","title":"Total Requested"},"successful_additions":{"type":"integer","title":"Successful Additions"},"failed_additions":{"type":"integer","title":"Failed Additions"},"updated_team":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Updated Team"}},"type":"object","required":["team_id","results","total_requested","successful_additions","failed_additions"],"title":"BulkTeamMemberAddResponse","description":"Response for bulk team member add operations"},"BulkUpdateKeyRequest":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/BulkUpdateKeyRequestItem"},"type":"array","title":"Keys"}},"type":"object","required":["keys"],"title":"BulkUpdateKeyRequest","description":"Request for bulk key updates"},"BulkUpdateKeyRequestItem":{"properties":{"key":{"type":"string","title":"Key"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","required":["key"],"title":"BulkUpdateKeyRequestItem","description":"Individual key update request item"},"BulkUpdateKeyResponse":{"properties":{"total_requested":{"type":"integer","title":"Total Requested"},"successful_updates":{"items":{"$ref":"#/components/schemas/SuccessfulKeyUpdate"},"type":"array","title":"Successful Updates"},"failed_updates":{"items":{"$ref":"#/components/schemas/FailedKeyUpdate"},"type":"array","title":"Failed Updates"}},"type":"object","required":["total_requested","successful_updates","failed_updates"],"title":"BulkUpdateKeyResponse","description":"Response for bulk key update operations"},"BulkUpdateTeamKeysRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"key_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Key Ids"},"all_keys_in_team":{"type":"boolean","title":"All Keys In Team","default":false},"update_fields":{"$ref":"#/components/schemas/KeyUpdateFields"}},"type":"object","required":["team_id","update_fields"],"title":"BulkUpdateTeamKeysRequest","description":"Apply one update payload to many keys inside a team; provide either `key_ids` or `all_keys_in_team=True`."},"BulkUpdateTeamMemberPermissionsRequest":{"properties":{"permissions":{"items":{"$ref":"#/components/schemas/KeyManagementRoutes"},"type":"array","title":"Permissions"},"team_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Ids"},"apply_to_all_teams":{"type":"boolean","title":"Apply To All Teams","default":false}},"type":"object","required":["permissions"],"title":"BulkUpdateTeamMemberPermissionsRequest","description":"Request to bulk-update team member permissions across teams."},"BulkUpdateTeamMemberPermissionsResponse":{"properties":{"message":{"type":"string","title":"Message"},"teams_updated":{"type":"integer","title":"Teams Updated"},"permissions_appended":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permissions Appended"}},"type":"object","required":["message","teams_updated"],"title":"BulkUpdateTeamMemberPermissionsResponse","description":"Response for bulk team member permissions update."},"BulkUpdateUserRequest":{"properties":{"users":{"anyOf":[{"items":{"$ref":"#/components/schemas/UpdateUserRequest"},"type":"array"},{"type":"null"}],"title":"Users"},"all_users":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"All Users","default":false},"user_updates":{"anyOf":[{"$ref":"#/components/schemas/UpdateUserRequestNoUserIDorEmail"},{"type":"null"}]}},"type":"object","title":"BulkUpdateUserRequest","description":"Request for bulk user updates"},"BulkUpdateUserResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/UserUpdateResult"},"type":"array","title":"Results"},"total_requested":{"type":"integer","title":"Total Requested"},"successful_updates":{"type":"integer","title":"Successful Updates"},"failed_updates":{"type":"integer","title":"Failed Updates"}},"type":"object","required":["results","total_requested","successful_updates","failed_updates"],"title":"BulkUpdateUserResponse","description":"Response for bulk user update operations"},"CachePingResponse":{"properties":{"status":{"type":"string","title":"Status"},"cache_type":{"type":"string","title":"Cache Type"},"ping_response":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ping Response"},"set_cache_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Set Cache Response"},"litellm_cache_params":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Cache Params"},"health_check_cache_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Health Check Cache Params"}},"type":"object","required":["status","cache_type"],"title":"CachePingResponse"},"CacheSettingsField":{"properties":{"field_name":{"type":"string","title":"Field Name"},"field_type":{"type":"string","title":"Field Type"},"field_value":{"title":"Field Value"},"field_description":{"type":"string","title":"Field Description"},"field_default":{"title":"Field Default"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"ui_field_name":{"type":"string","title":"Ui Field Name"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"redis_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redis Type"}},"type":"object","required":["field_name","field_type","field_value","field_description","ui_field_name"],"title":"CacheSettingsField"},"CacheSettingsResponse":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/CacheSettingsField"},"type":"array","title":"Fields","description":"List of all configurable cache settings with metadata"},"current_values":{"additionalProperties":true,"type":"object","title":"Current Values","description":"Current values of cache settings"},"redis_type_descriptions":{"additionalProperties":{"type":"string"},"type":"object","title":"Redis Type Descriptions","description":"Descriptions for each Redis type option"}},"type":"object","required":["fields","current_values","redis_type_descriptions"],"title":"CacheSettingsResponse"},"CacheSettingsUpdateRequest":{"properties":{"cache_settings":{"additionalProperties":true,"type":"object","title":"Cache Settings","description":"Cache settings to save"}},"type":"object","required":["cache_settings"],"title":"CacheSettingsUpdateRequest"},"CacheTestRequest":{"properties":{"cache_settings":{"additionalProperties":true,"type":"object","title":"Cache Settings","description":"Cache settings to test connection with"}},"type":"object","required":["cache_settings"],"title":"CacheTestRequest"},"CacheTestResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Connection status: 'success' or 'failed'"},"message":{"type":"string","title":"Message","description":"Connection result message"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error message if connection failed"}},"type":"object","required":["status","message"],"title":"CacheTestResponse"},"CallTypes":{"type":"string","enum":["embedding","aembedding","completion","acompletion","atext_completion","text_completion","image_generation","aimage_generation","image_edit","aimage_edit","moderation","amoderation","atranscription","transcription","aspeech","speech","rerank","arerank","search","asearch","_arealtime","_aresponses_websocket","create_batch","acreate_batch","aretrieve_batch","retrieve_batch","acancel_batch","cancel_batch","pass_through_endpoint","anthropic_messages","aanthropic_messages","get_assistants","aget_assistants","create_assistants","acreate_assistants","delete_assistant","adelete_assistant","acreate_thread","create_thread","aget_thread","get_thread","a_add_message","add_message","aget_messages","get_messages","arun_thread","run_thread","arun_thread_stream","run_thread_stream","afile_retrieve","file_retrieve","afile_delete","file_delete","afile_list","file_list","acreate_file","create_file","afile_content","file_content","create_fine_tuning_job","acreate_fine_tuning_job","create_video","acreate_video","avideo_retrieve","video_retrieve","avideo_content","video_content","video_remix","avideo_remix","video_list","avideo_list","video_retrieve_job","avideo_retrieve_job","video_delete","avideo_delete","video_create_character","avideo_create_character","video_get_character","avideo_get_character","video_edit","avideo_edit","video_extension","avideo_extension","vector_store_file_create","avector_store_file_create","vector_store_file_list","avector_store_file_list","vector_store_file_retrieve","avector_store_file_retrieve","vector_store_file_content","avector_store_file_content","vector_store_file_update","avector_store_file_update","vector_store_file_delete","avector_store_file_delete","vector_store_create","avector_store_create","vector_store_search","avector_store_search","ingest","aingest","query","aquery","create_container","acreate_container","list_containers","alist_containers","retrieve_container","aretrieve_container","delete_container","adelete_container","list_container_files","alist_container_files","upload_container_file","aupload_container_file","create_sandbox","acreate_sandbox","delete_sandbox","adelete_sandbox","run_code","arun_code","code_interpreter_tool","acode_interpreter_tool","acancel_fine_tuning_job","cancel_fine_tuning_job","alist_fine_tuning_jobs","list_fine_tuning_jobs","aretrieve_fine_tuning_job","retrieve_fine_tuning_job","responses","aresponses","alist_input_items","llm_passthrough_route","allm_passthrough_route","generate_content","agenerate_content","generate_content_stream","agenerate_content_stream","ocr","aocr","call_mcp_tool","list_mcp_tools","asend_message","send_message","acreate_skill"],"title":"CallTypes"},"CallbackLogFailure":{"properties":{"index":{"type":"integer","title":"Index"},"error":{"type":"string","title":"Error"}},"type":"object","required":["index","error"],"title":"CallbackLogFailure","description":"A record that failed to replay, identified by its index in the batch."},"CallbackLogRecord":{"properties":{"status":{"type":"string","enum":["success","failure"],"title":"Status"},"standard_logging_payload":{"additionalProperties":true,"type":"object","title":"Standard Logging Payload"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status","standard_logging_payload"],"title":"CallbackLogRecord","description":"A single finished logging event to replay through the callbacks."},"CallbackLogsRequest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/CallbackLogRecord"},"type":"array","maxItems":1000,"title":"Records"}},"type":"object","required":["records"],"title":"CallbackLogsRequest","description":"A batch of logging events posted by an external producer."},"CallbackLogsResponse":{"properties":{"processed":{"type":"integer","title":"Processed"},"failed":{"type":"integer","title":"Failed"},"failures":{"items":{"$ref":"#/components/schemas/CallbackLogFailure"},"type":"array","title":"Failures"}},"type":"object","required":["processed","failed"],"title":"CallbackLogsResponse","description":"Per-batch result: counts plus per-record failure detail so the caller can\ndistinguish a transient callback error from a structurally bad payload."},"CallbacksByType":{"properties":{"success":{"items":{"type":"string"},"type":"array","title":"Success"},"failure":{"items":{"type":"string"},"type":"array","title":"Failure"},"success_and_failure":{"items":{"type":"string"},"type":"array","title":"Success And Failure"}},"type":"object","required":["success","failure","success_and_failure"],"title":"CallbacksByType"},"ChatCompletionAnnotation":{"properties":{"type":{"type":"string","const":"url_citation","title":"Type"},"url_citation":{"$ref":"#/components/schemas/ChatCompletionAnnotationURLCitation"}},"additionalProperties":true,"type":"object","title":"ChatCompletionAnnotation"},"ChatCompletionAnnotationURLCitation":{"properties":{"end_index":{"type":"integer","title":"End Index"},"start_index":{"type":"integer","title":"Start Index"},"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"}},"additionalProperties":true,"type":"object","title":"ChatCompletionAnnotationURLCitation"},"ChatCompletionAudioResponse":{"properties":{"id":{"type":"string","title":"Id"},"data":{"type":"string","title":"Data"},"expires_at":{"type":"integer","title":"Expires At"},"transcript":{"type":"string","title":"Transcript"}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"ChatCompletionAudioResponse"},"ChatCompletionCachedContent":{"properties":{"type":{"const":"ephemeral","title":"Type","type":"string"},"ttl":{"enum":["5m","1h"],"title":"Ttl","type":"string"}},"required":["type"],"title":"ChatCompletionCachedContent","type":"object"},"ChatCompletionCustomToolCallPayload":{"properties":{"name":{"type":"string","title":"Name"},"input":{"type":"string","title":"Input"}},"additionalProperties":true,"type":"object","required":["name","input"],"title":"ChatCompletionCustomToolCallPayload"},"ChatCompletionMessageCustomToolCall":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"custom","title":"Type","default":"custom"},"custom":{"$ref":"#/components/schemas/ChatCompletionCustomToolCallPayload"}},"additionalProperties":true,"type":"object","required":["id","custom"],"title":"ChatCompletionMessageCustomToolCall"},"ChatCompletionMessageToolCall":{"properties":{},"additionalProperties":true,"type":"object","title":"ChatCompletionMessageToolCall"},"ChatCompletionReasoningItem":{"description":"Represents an OpenAI Responses API reasoning item for round-tripping in conversation history.","properties":{"type":{"const":"reasoning","title":"Type","type":"string"},"id":{"title":"Id","type":"string"},"encrypted_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Encrypted Content"},"summary":{"items":{"$ref":"#/components/schemas/ChatCompletionReasoningSummaryTextBlock"},"title":"Summary","type":"array"}},"required":["type"],"title":"ChatCompletionReasoningItem","type":"object"},"ChatCompletionReasoningSummaryTextBlock":{"properties":{"type":{"const":"summary_text","title":"Type","type":"string"},"text":{"title":"Text","type":"string"}},"required":["type"],"title":"ChatCompletionReasoningSummaryTextBlock","type":"object"},"ChatCompletionRedactedThinkingBlock":{"properties":{"type":{"const":"redacted_thinking","title":"Type","type":"string"},"data":{"title":"Data","type":"string"},"cache_control":{"anyOf":[{"additionalProperties":true,"type":"object"},{"$ref":"#/components/schemas/ChatCompletionCachedContent"},{"type":"null"}],"title":"Cache Control"}},"required":["type"],"title":"ChatCompletionRedactedThinkingBlock","type":"object"},"ChatCompletionThinkingBlock":{"properties":{"type":{"const":"thinking","title":"Type","type":"string"},"thinking":{"title":"Thinking","type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature"},"cache_control":{"anyOf":[{"additionalProperties":true,"type":"object"},{"$ref":"#/components/schemas/ChatCompletionCachedContent"},{"type":"null"}],"title":"Cache Control"}},"required":["type"],"title":"ChatCompletionThinkingBlock","type":"object"},"ChatCompletionTokenLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"},"top_logprobs":{"items":{"$ref":"#/components/schemas/TopLogprob"},"type":"array","title":"Top Logprobs"}},"additionalProperties":true,"type":"object","required":["token","logprob","top_logprobs"],"title":"ChatCompletionTokenLogprob"},"ChoiceLogprobs":{"properties":{"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionTokenLogprob"},"type":"array"},{"type":"null"}],"title":"Content"}},"additionalProperties":true,"type":"object","title":"ChoiceLogprobs"},"Choices":{"properties":{"finish_reason":{"type":"string","enum":["stop","content_filter","function_call","tool_calls","length","guardrail_intervened","eos","finish_reason_unspecified","malformed_function_call","repetition","repetition_detected"],"title":"Finish Reason"},"index":{"type":"integer","title":"Index"},"message":{"$ref":"#/components/schemas/Message"},"logprobs":{"anyOf":[{"$ref":"#/components/schemas/ChoiceLogprobs"},{},{"type":"null"}],"title":"Logprobs"},"provider_specific_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider Specific Fields"}},"additionalProperties":true,"type":"object","required":["finish_reason","index","message"],"title":"Choices"},"ClassificationRubric":{"type":"string","enum":["legacy","agentic","chat","business"],"title":"ClassificationRubric","description":"Which calibration examples, and for BUSINESS which tier criteria, the built-in classifier rubric carries."},"ClassifierLLMConfig":{"properties":{"model":{"type":"string","title":"Model","description":"Model name (from the router's model_list) to call for classification"},"timeout_ms":{"type":"integer","title":"Timeout Ms","description":"Timeout budget for the classification call, in milliseconds","default":3000},"classification_rubric":{"anyOf":[{"$ref":"#/components/schemas/ClassificationRubric"},{"type":"null"}],"description":"Which calibration examples the built-in rubric carries. 'agentic' anchors routine installs, builds, multi-file edits, and standard debugging at MEDIUM, so ordinary engineering does not route to the most expensive tier; it suits agent, terminal, and coding-assistant traffic as well as mixed traffic. 'chat' omits those engineering anchors, for a deployment serving only conversational traffic. 'business' carries business/sales anchors and business-flavored tier criteria that keep routine drafting and summarizing off the expensive tiers and reserve the top tier for committing to decisions under tradeoffs; it suits sales, support, and go-to-market traffic. Every preset keeps the same four tiers, so this moves where the boundary sits without changing the taxonomy. Leave unset for 'legacy', the rubric as it shipped before calibration examples existed, so an existing router's tier decisions and spend do not move on upgrade. Mutually exclusive with system_prompt, which replaces the rubric this would select. Only applies when classifier_type is 'llm'."},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"Replaces the built-in complexity rubric as the classifier's entire system role. When set, neither the default rubric nor the context-window closing line is appended, so the prompt owns the whole taxonomy and the tier names SIMPLE/MEDIUM/COMPLEX/REASONING become whatever buckets it defines: a prompt that classifies data sensitivity routes on that instead of on difficulty. Two consequences of full replacement. The default rubric's closing paragraph is the classifier's prompt-injection defense, telling it that the caller's quoted system prompt and prior turns are material to judge and never instructions; a replacement that omits it lets a caller ask for a tier and get it. And the heuristic fallback still scores complexity, so a router on some other taxonomy wants classifier_fallback='default_model'. Leave unset for the built-in rubric. Only applies when classifier_type is 'llm'."}},"type":"object","required":["model"],"title":"ClassifierLLMConfig","description":"Configuration for the LLM-based complexity classifier."},"ComplexityRouterConfigValidationRequest":{"properties":{"complexity_router_config":{"additionalProperties":true,"type":"object","title":"Complexity Router Config"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id","description":"Team the router is being created for. Required for a team admin, who may only validate their own team's routers"}},"type":"object","required":["complexity_router_config"],"title":"ComplexityRouterConfigValidationRequest","description":"A complexity-router config to validate without saving, so a form can surface the\nbackend's own verdict inline instead of a raw 400 at write time."},"ComplexityRouterConfigValidationResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["valid"],"title":"ComplexityRouterConfigValidationResponse"},"ComplexityScorerDefaults":{"properties":{"tier_boundaries":{"additionalProperties":{"type":"number"},"type":"object","title":"Tier Boundaries"},"token_thresholds":{"additionalProperties":{"type":"integer"},"type":"object","title":"Token Thresholds"},"dimension_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Dimension Weights"}},"type":"object","required":["tier_boundaries","token_thresholds","dimension_weights"],"title":"ComplexityScorerDefaults","description":"The complexity router's shipped heuristic scorer defaults.\n\nThe dashboard prefills its Advanced scoring controls from these rather than keeping its own copy, so\na recalibration of the defaults cannot leave the form reporting numbers the router no longer uses."},"ComplexityTier":{"type":"string","enum":["SIMPLE","MEDIUM","COMPLEX","REASONING"],"title":"ComplexityTier","description":"Complexity tiers for routing decisions."},"ComplexityTierModel":{"properties":{"model_name":{"type":"string","title":"Model Name"},"litellm_params":{"additionalProperties":true,"type":"object","title":"Litellm Params"}},"type":"object","required":["model_name"],"title":"ComplexityTierModel"},"ConfigurableClientsideParamsCustomAuth-Input":{"properties":{"api_base":{"type":"string","title":"Api Base"}},"additionalProperties":true,"type":"object","required":["api_base"],"title":"ConfigurableClientsideParamsCustomAuth"},"ConfigurableClientsideParamsCustomAuth-Output":{"properties":{"api_base":{"type":"string","title":"Api Base"}},"type":"object","required":["api_base"],"title":"ConfigurableClientsideParamsCustomAuth"},"CoordinationRedisSettingsField":{"properties":{"field_name":{"type":"string","title":"Field Name"},"field_type":{"type":"string","title":"Field Type"},"field_value":{"anyOf":[{},{"type":"null"}],"title":"Field Value"},"field_description":{"type":"string","title":"Field Description"},"field_default":{"anyOf":[{},{"type":"null"}],"title":"Field Default"},"ui_field_name":{"type":"string","title":"Ui Field Name"},"section":{"type":"string","enum":["connection","cluster","sentinel"],"title":"Section"}},"type":"object","required":["field_name","field_type","field_description","ui_field_name","section"],"title":"CoordinationRedisSettingsField"},"CoordinationRedisSettingsRequest":{"properties":{"settings":{"additionalProperties":true,"type":"object","title":"Settings","description":"Coordination Redis connection params"}},"type":"object","required":["settings"],"title":"CoordinationRedisSettingsRequest"},"CoordinationRedisSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values","description":"Current coordination Redis settings, with credentials redacted"},"fields":{"items":{"$ref":"#/components/schemas/CoordinationRedisSettingsField"},"type":"array","title":"Fields","description":"List of all configurable coordination Redis settings with metadata"},"source":{"anyOf":[{"type":"string","enum":["coordination_redis","cache_backend","environment"]},{"type":"null"}],"title":"Source","description":"Where the proxy's coordination Redis comes from; null when it has none"}},"type":"object","required":["values","fields","source"],"title":"CoordinationRedisSettingsResponse"},"CoordinationRedisTestResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Connection status: 'healthy' or 'unhealthy'"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error message if the connection failed"}},"type":"object","required":["status"],"title":"CoordinationRedisTestResponse"},"CostEstimateRequest":{"properties":{"model":{"type":"string","title":"Model","description":"Model name (from /model_group/info)"},"input_tokens":{"type":"integer","minimum":0.0,"title":"Input Tokens","description":"Expected input tokens per request"},"output_tokens":{"type":"integer","minimum":0.0,"title":"Output Tokens","description":"Expected output tokens per request"},"num_requests_per_day":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Num Requests Per Day","description":"Number of requests per day"},"num_requests_per_month":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Num Requests Per Month","description":"Number of requests per month"}},"type":"object","required":["model","input_tokens","output_tokens"],"title":"CostEstimateRequest","description":"Request body for /cost/estimate endpoint."},"CostEstimateResponse":{"properties":{"model":{"type":"string","title":"Model"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"num_requests_per_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Requests Per Day"},"num_requests_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Requests Per Month"},"cost_per_request":{"type":"number","title":"Cost Per Request","description":"Total cost per request (includes margin)"},"input_cost_per_request":{"type":"number","title":"Input Cost Per Request","description":"Input token cost per request (before margin)"},"output_cost_per_request":{"type":"number","title":"Output Cost Per Request","description":"Output token cost per request (before margin)"},"margin_cost_per_request":{"type":"number","title":"Margin Cost Per Request","description":"Margin/fee added per request","default":0.0},"daily_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Daily Cost","description":"Total daily cost (includes margin)"},"daily_input_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Daily Input Cost","description":"Daily input token cost"},"daily_output_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Daily Output Cost","description":"Daily output token cost"},"daily_margin_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Daily Margin Cost","description":"Daily margin/fee"},"monthly_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Cost","description":"Total monthly cost (includes margin)"},"monthly_input_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Input Cost","description":"Monthly input token cost"},"monthly_output_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Output Cost","description":"Monthly output token cost"},"monthly_margin_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Margin Cost","description":"Monthly margin/fee"},"input_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token"},"output_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},"type":"object","required":["model","input_tokens","output_tokens","cost_per_request","input_cost_per_request","output_cost_per_request"],"title":"CostEstimateResponse","description":"Response body for /cost/estimate endpoint."},"CreateCredentialItem":{"properties":{"credential_name":{"type":"string","title":"Credential Name"},"credential_info":{"additionalProperties":true,"type":"object","title":"Credential Info"},"credential_values":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Credential Values"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}},"type":"object","required":["credential_name","credential_info"],"title":"CreateCredentialItem"},"CredentialItem":{"properties":{"credential_name":{"type":"string","title":"Credential Name"},"credential_info":{"additionalProperties":true,"type":"object","title":"Credential Info"},"credential_values":{"additionalProperties":true,"type":"object","title":"Credential Values"}},"type":"object","required":["credential_name","credential_info","credential_values"],"title":"CredentialItem"},"CustomerResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"blocked":{"type":"boolean","title":"Blocked"},"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"spend":{"type":"number","title":"Spend","default":0.0},"allowed_model_region":{"anyOf":[{"type":"string","enum":["eu","us"]},{"type":"null"}],"title":"Allowed Model Region"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTableFull"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]}},"type":"object","required":["user_id","blocked"],"title":"CustomerResponse","description":"Customer object returned by the /customer read+write endpoints.\n\nNests the full budget response model so server-managed budget fields\n(budget_reset_at, created_at) survive response_model filtering, rather than\nthe narrow write-allowlist shape LiteLLM_EndUserTable carries for internal use."},"DailySpendData":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"metrics":{"$ref":"#/components/schemas/SpendMetrics"},"breakdown":{"$ref":"#/components/schemas/BreakdownMetrics"}},"type":"object","required":["date","metrics"],"title":"DailySpendData"},"DailySpendMetadata":{"properties":{"total_spend":{"type":"number","title":"Total Spend","default":0.0},"total_flat_cost":{"type":"number","title":"Total Flat Cost","default":0.0},"total_prompt_tokens":{"type":"integer","title":"Total Prompt Tokens","default":0},"total_completion_tokens":{"type":"integer","title":"Total Completion Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"total_api_requests":{"type":"integer","title":"Total Api Requests","default":0},"total_successful_requests":{"type":"integer","title":"Total Successful Requests","default":0},"total_failed_requests":{"type":"integer","title":"Total Failed Requests","default":0},"total_cache_read_input_tokens":{"type":"integer","title":"Total Cache Read Input Tokens","default":0},"total_cache_creation_input_tokens":{"type":"integer","title":"Total Cache Creation Input Tokens","default":0},"total_compression_saved_tokens":{"type":"integer","title":"Total Compression Saved Tokens","default":0},"total_compression_savings_spend":{"type":"number","title":"Total Compression Savings Spend","default":0.0},"total_prompt_caching_savings_spend":{"type":"number","title":"Total Prompt Caching Savings Spend","default":0.0},"total_autorouter_savings_spend":{"type":"number","title":"Total Autorouter Savings Spend","default":0.0},"page":{"type":"integer","title":"Page","default":1},"total_pages":{"type":"integer","title":"Total Pages","default":1},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","title":"DailySpendMetadata"},"DefaultInternalUserParams":{"properties":{"user_role":{"anyOf":[{"type":"string","enum":["proxy_admin","proxy_admin_viewer","internal_user","internal_user_viewer"]},{"type":"null"}],"title":"User Role","description":"Default role assigned to new users created","default":"internal_user_viewer"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"Default maximum budget (in USD) for new users created"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Default budget duration for new users (e.g. 'daily', 'weekly', 'monthly')"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Default list of models that new users can access"},"teams":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"items":{"$ref":"#/components/schemas/NewUserRequestTeam"},"type":"array"},{"type":"null"}],"title":"Teams","description":"Default teams for new users created"}},"type":"object","title":"DefaultInternalUserParams","description":"Default parameters to apply when a new user signs in via SSO or is created on the /user/new API endpoint"},"DefaultTeamSSOParams":{"properties":{"models":{"items":{"type":"string"},"type":"array","title":"Models","description":"Default list of models for teams automatically created via SSO Groups","default":[]},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"Default maximum budget (in USD) for new teams, when not explicitly provided"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Default budget duration for new teams, when not explicitly provided (e.g. '24h', '7d', '30d')"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit","description":"Default tpm limit for new teams, when not explicitly provided"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit","description":"Default rpm limit for new teams, when not explicitly provided"},"team_member_permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/KeyManagementRoutes"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions","description":"Default permissions granted to members of newly created teams (e.g. /key/generate, /key/update, /key/delete). /key/info and /key/health are always included."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","description":"Default organization for new teams created without an explicit organization"}},"type":"object","title":"DefaultTeamSSOParams","description":"Default parameters applied to every /team/new call for fields not explicitly provided in the request.\n`models` is the exception: it only applies to teams automatically created by LiteLLM via SSO Groups."},"DefaultTeamSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"}},"type":"object","required":["values","field_schema"],"title":"DefaultTeamSettingsResponse","description":"Response model for default team settings"},"DeleteCustomerRequest":{"properties":{"user_ids":{"items":{"type":"string"},"type":"array","title":"User Ids"}},"type":"object","required":["user_ids"],"title":"DeleteCustomerRequest","description":"Delete multiple Customers"},"DeleteCustomersResponse":{"properties":{"deleted_customers":{"type":"integer","title":"Deleted Customers"},"message":{"type":"string","title":"Message"}},"type":"object","required":["deleted_customers","message"],"title":"DeleteCustomersResponse"},"DeleteModelGroupResponse":{"properties":{"access_group":{"type":"string","title":"Access Group"},"models_updated":{"type":"integer","title":"Models Updated"},"message":{"type":"string","title":"Message"}},"type":"object","required":["access_group","models_updated","message"],"title":"DeleteModelGroupResponse"},"DeleteOrganizationRequest":{"properties":{"organization_ids":{"items":{"type":"string"},"type":"array","title":"Organization Ids"}},"type":"object","required":["organization_ids"],"title":"DeleteOrganizationRequest"},"DeleteProjectRequest":{"properties":{"project_ids":{"items":{"type":"string"},"type":"array","title":"Project Ids"}},"type":"object","required":["project_ids"],"title":"DeleteProjectRequest","description":"Request model for DELETE /project/delete"},"DeleteTeamRequest":{"properties":{"team_ids":{"items":{"type":"string"},"type":"array","title":"Team Ids"}},"type":"object","required":["team_ids"],"title":"DeleteTeamRequest"},"DeleteUserRequest":{"properties":{"user_ids":{"items":{"type":"string"},"type":"array","title":"User Ids"}},"type":"object","required":["user_ids"],"title":"DeleteUserRequest"},"Deployment":{"properties":{"model_name":{"type":"string","title":"Model Name"},"litellm_params":{"$ref":"#/components/schemas/LiteLLM_Params"},"model_info":{"$ref":"#/components/schemas/ModelInfo"}},"additionalProperties":true,"type":"object","required":["model_name","litellm_params","model_info"],"title":"Deployment"},"DistinctTagResponse":{"properties":{"tag":{"type":"string","title":"Tag"}},"type":"object","required":["tag"],"title":"DistinctTagResponse","description":"Response for distinct user agent tags"},"DistinctTagsResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/DistinctTagResponse"},"type":"array","title":"Results"}},"type":"object","required":["results"],"title":"DistinctTagsResponse","description":"Response for all distinct user agent tags"},"EmailEvent":{"type":"string","enum":["Virtual Key Created","New User Invitation","Virtual Key Rotated","Soft Budget Crossed","Max Budget Alert"],"title":"EmailEvent"},"EmailEventSettings":{"properties":{"event":{"$ref":"#/components/schemas/EmailEvent"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["event","enabled"],"title":"EmailEventSettings"},"EmailEventSettingsResponse":{"properties":{"settings":{"items":{"$ref":"#/components/schemas/EmailEventSettings"},"type":"array","title":"Settings"}},"type":"object","required":["settings"],"title":"EmailEventSettingsResponse"},"EmailEventSettingsUpdateRequest":{"properties":{"settings":{"items":{"$ref":"#/components/schemas/EmailEventSettings"},"type":"array","title":"Settings"}},"type":"object","required":["settings"],"title":"EmailEventSettingsUpdateRequest"},"EndpointProvider":{"properties":{"slug":{"type":"string","title":"Slug"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["slug","display_name"],"title":"EndpointProvider"},"ErrorResponse":{"properties":{"detail":{"additionalProperties":true,"type":"object","title":"Detail","example":{"error":{"code":"error_code","message":"Error message","param":"error_param","type":"error_type"}}}},"type":"object","required":["detail"],"title":"ErrorResponse"},"FacetListResponse":{"properties":{"data":{"items":{"type":"string"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/PageMeta"},"links":{"$ref":"#/components/schemas/PageLinks"}},"type":"object","required":["data","meta","links"],"title":"FacetListResponse","description":"The distinct values one column takes over a filtered query. `data` holds bare values, not entity rows."},"FailedKeyUpdate":{"properties":{"key":{"type":"string","title":"Key"},"key_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Key Info"},"failed_reason":{"type":"string","title":"Failed Reason"}},"type":"object","required":["key","failed_reason"],"title":"FailedKeyUpdate","description":"Failed key update with reason"},"FallbackCreateRequest":{"properties":{"model":{"type":"string","title":"Model","description":"The model name to configure fallbacks for (e.g., 'gpt-3.5-turbo')"},"fallback_models":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Fallback Models","description":"List of fallback model names in order of priority"},"fallback_type":{"type":"string","enum":["general","context_window","content_policy"],"title":"Fallback Type","description":"Type of fallback: 'general' (default), 'context_window', or 'content_policy'","default":"general"}},"type":"object","required":["model","fallback_models"],"title":"FallbackCreateRequest","description":"Request model for creating/updating fallbacks"},"FallbackDeleteResponse":{"properties":{"model":{"type":"string","title":"Model","description":"The model name"},"fallback_type":{"type":"string","title":"Fallback Type","description":"Type of fallback"},"message":{"type":"string","title":"Message","description":"Success message"}},"type":"object","required":["model","fallback_type","message"],"title":"FallbackDeleteResponse","description":"Response model for deleting fallbacks"},"FallbackGetResponse":{"properties":{"model":{"type":"string","title":"Model","description":"The model name"},"fallback_models":{"items":{"type":"string"},"type":"array","title":"Fallback Models","description":"List of fallback model names"},"fallback_type":{"type":"string","title":"Fallback Type","description":"Type of fallback"}},"type":"object","required":["model","fallback_models","fallback_type"],"title":"FallbackGetResponse","description":"Response model for getting fallbacks"},"FallbackResponse":{"properties":{"model":{"type":"string","title":"Model","description":"The model name"},"fallback_models":{"items":{"type":"string"},"type":"array","title":"Fallback Models","description":"List of fallback model names"},"fallback_type":{"type":"string","title":"Fallback Type","description":"Type of fallback"},"message":{"type":"string","title":"Message","description":"Success message"}},"type":"object","required":["model","fallback_models","fallback_type","message"],"title":"FallbackResponse","description":"Response model for fallback operations"},"FunctionCall":{"properties":{"arguments":{"type":"string","title":"Arguments"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":true,"type":"object","required":["arguments"],"title":"FunctionCall"},"GatewayRequestActivityResponse":{"properties":{"total_successful_requests":{"type":"integer","title":"Total Successful Requests","default":0},"total_failed_requests":{"type":"integer","title":"Total Failed Requests","default":0},"by_date":{"items":{"$ref":"#/components/schemas/GatewayRequestDailyEntry"},"type":"array","title":"By Date","default":[]},"by_route":{"items":{"$ref":"#/components/schemas/GatewayRequestBreakdownEntry"},"type":"array","title":"By Route","default":[]}},"type":"object","title":"GatewayRequestActivityResponse","description":"Response for GET /gateway/daily/activity."},"GatewayRequestBreakdownEntry":{"properties":{"category":{"type":"string","title":"Category"},"route":{"type":"string","title":"Route"},"successful_requests":{"type":"integer","title":"Successful Requests","default":0},"failed_requests":{"type":"integer","title":"Failed Requests","default":0}},"type":"object","required":["category","route"],"title":"GatewayRequestBreakdownEntry"},"GatewayRequestDailyEntry":{"properties":{"date":{"type":"string","title":"Date"},"successful_requests":{"type":"integer","title":"Successful Requests","default":0},"failed_requests":{"type":"integer","title":"Failed Requests","default":0}},"type":"object","required":["date"],"title":"GatewayRequestDailyEntry"},"GenerateKeyRequest":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"enable_prompt_caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Caching"},"throttle_on_budget_exceeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Throttle On Budget Exceeded"},"enforced_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enforced Params"},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"router_settings":{"anyOf":[{"$ref":"#/components/schemas/UpdateRouterConfig"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"send_invite_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Invite Email"},"key_type":{"anyOf":[{"$ref":"#/components/schemas/LiteLLMKeyType"},{"type":"null"}],"description":"Type of key that determines default allowed routes.","default":"default"},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate","description":"Whether this key should be automatically rotated","default":false},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval","description":"How often to rotate this key (e.g., '30d', '90d'). Required if auto_rotate=True"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","title":"GenerateKeyRequest"},"GenerateKeyResponse":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"key":{"type":"string","title":"Key"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"enable_prompt_caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Caching"},"throttle_on_budget_exceeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Throttle On Budget Exceeded"},"enforced_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enforced Params"},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"router_settings":{"anyOf":[{"$ref":"#/components/schemas/UpdateRouterConfig"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name"},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type"},"expires":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires"},"token_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"litellm_budget_table":{"anyOf":[{},{"type":"null"}],"title":"Litellm Budget Table"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["key"],"title":"GenerateKeyResponse"},"GetTeamMemberPermissionsResponse":{"properties":{"team_id":{"type":"string","title":"Team Id"},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions","default":[]},"all_available_permissions":{"items":{"type":"string"},"type":"array","title":"All Available Permissions"}},"type":"object","required":["team_id","all_available_permissions"],"title":"GetTeamMemberPermissionsResponse","description":"Response to get the team member permissions for a team"},"HTTPAuthSecurityScheme":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type":{"type":"string","const":"http","title":"Type"},"scheme":{"type":"string","title":"Scheme"},"bearerFormat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bearerformat"}},"type":"object","required":["type","scheme"],"title":"HTTPAuthSecurityScheme","description":"Defines a security scheme using HTTP authentication."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Hyperparameters":{"properties":{"batch_size":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Batch Size"},"learning_rate_multiplier":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"title":"Learning Rate Multiplier"},"n_epochs":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"N Epochs"}},"additionalProperties":true,"type":"object","title":"Hyperparameters"},"IPAddress":{"properties":{"ip":{"type":"string","title":"Ip"}},"type":"object","required":["ip"],"title":"IPAddress"},"ImageURLListItem":{"properties":{"image_url":{"$ref":"#/components/schemas/ImageURLObject"},"index":{"type":"integer","title":"Index"},"type":{"type":"string","const":"image_url","title":"Type"}},"additionalProperties":true,"type":"object","required":["image_url","index","type"],"title":"ImageURLListItem"},"ImageURLObject":{"properties":{"url":{"type":"string","title":"Url"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURLObject"},"InternalUserSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"}},"type":"object","required":["values","field_schema"],"title":"InternalUserSettingsResponse","description":"Response model for internal user settings"},"KeyHealthResponse":{"properties":{"key":{"type":"string","enum":["healthy","unhealthy"],"title":"Key"},"logging_callbacks":{"anyOf":[{"$ref":"#/components/schemas/LoggingCallbackStatus"},{"type":"null"}]}},"type":"object","title":"KeyHealthResponse"},"KeyListResponseObject":{"properties":{"keys":{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/UserAPIKeyAuth"},{"$ref":"#/components/schemas/LiteLLM_DeletedVerificationToken"}]},"type":"array","title":"Keys"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"current_page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Page"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"}},"type":"object","title":"KeyListResponseObject"},"KeyManagementRoutes":{"type":"string","enum":["/key/generate","/key/update","/key/delete","/key/regenerate","/key/service-account/generate","/key/{key_id}/regenerate","/key/block","/key/unblock","/key/bulk_update","/team/key/bulk_update","/key/{key_id}/reset_spend","/key/access_group_assignment","/key/info","/key/health","/key/list","/key/aliases","/team/daily/activity","/team/daily/activity/aggregated","/spend/logs","/spend/logs/v2"],"title":"KeyManagementRoutes","description":"Enum for key management routes"},"KeyMetadata":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},"type":"object","title":"KeyMetadata","description":"Metadata for a key"},"KeyMetricWithMetadata":{"properties":{"metrics":{"$ref":"#/components/schemas/SpendMetrics"},"metadata":{"$ref":"#/components/schemas/KeyMetadata"}},"type":"object","required":["metrics"],"title":"KeyMetricWithMetadata","description":"Base class for metrics with additional metadata"},"KeyRequest":{"properties":{"keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keys"},"key_aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Key Aliases"}},"type":"object","title":"KeyRequest"},"KeyUpdateFields":{"properties":{"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"temp_budget_increase":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temp Budget Increase"},"temp_budget_expiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Temp Budget Expiry"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"additionalProperties":false,"type":"object","title":"KeyUpdateFields","description":"Allowlist of bulk-broadcastable fields for /team/key/bulk_update; `extra=\"forbid\"` blocks RBAC/ownership/scope mutations even by team admins."},"KeywordTierRule":{"properties":{"keywords":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Keywords","description":"Keywords/phrases that trigger this rule (lexical or semantic match)"},"tier":{"type":"string","title":"Tier","description":"Tier to route to when this rule matches: a built-in tier name, or with tier_definitions set, one of the defined tier names"}},"type":"object","required":["keywords","tier"],"title":"KeywordTierRule","description":"A deterministic override: if any keyword matches, route to this tier."},"ListAccessGroupsResponse":{"properties":{"access_groups":{"items":{"$ref":"#/components/schemas/AccessGroupInfo"},"type":"array","title":"Access Groups"}},"type":"object","required":["access_groups"],"title":"ListAccessGroupsResponse"},"ListLinks":{"properties":{"self":{"type":"string","title":"Self"},"first":{"type":"string","title":"First"},"prev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"},"last":{"type":"string","title":"Last"}},"type":"object","required":["self","first","last"],"title":"ListLinks","description":"Page-mode counterpart to `PageLinks`. `first`/`last` are knowable here because the total count is."},"ListMeta":{"properties":{"total_count":{"type":"integer","title":"Total Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["total_count","page","page_size","total_pages"],"title":"ListMeta","description":"Page-mode counterpart to `PageMeta`: an entity list pays for the COUNT(*) so the table can show a page count."},"ListResponse_BudgetListItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BudgetListItem"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/ListMeta"},"links":{"$ref":"#/components/schemas/ListLinks"}},"type":"object","required":["data","meta","links"],"title":"ListResponse[BudgetListItem]"},"LiteLLMFineTuningJobCreate":{"properties":{"model":{"type":"string","title":"Model"},"training_file":{"type":"string","title":"Training File"},"hyperparameters":{"anyOf":[{"$ref":"#/components/schemas/Hyperparameters"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suffix"},"validation_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation File"},"integrations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Integrations"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"custom_llm_provider":{"anyOf":[{"type":"string","enum":["openai","azure","vertex_ai"]},{"type":"null"}],"title":"Custom Llm Provider"}},"additionalProperties":true,"type":"object","required":["model","training_file"],"title":"LiteLLMFineTuningJobCreate"},"LiteLLMKeyType":{"type":"string","enum":["llm_api","management","read_only","default"],"title":"LiteLLMKeyType","description":"Enum for key types that determine what routes a key can access"},"LiteLLM_BudgetTable":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"}},"type":"object","title":"LiteLLM_BudgetTable","description":"Represents user-controllable params for a LiteLLM_BudgetTable record.\n\nBudget-write paths use `model_fields.keys()` on this class as an allowlist\nfor user input. Keep server-managed fields (e.g. `budget_reset_at`) on\n`LiteLLM_BudgetTableFull` so they aren't user-settable."},"LiteLLM_BudgetTableFull":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["created_at"],"title":"LiteLLM_BudgetTableFull","description":"LiteLLM_BudgetTable + server-managed fields returned on API responses."},"LiteLLM_DeletedTeamTable":{"properties":{"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_id":{"type":"string","title":"Team Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"admins":{"items":{},"type":"array","title":"Admins","default":[]},"members":{"items":{},"type":"array","title":"Members","default":[]},"members_with_roles":{"items":{"$ref":"#/components/schemas/Member"},"type":"array","title":"Members With Roles","default":[]},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"models":{"items":{},"type":"array","title":"Models","default":[]},"blocked":{"type":"boolean","title":"Blocked","default":false},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"model_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Id"},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"allow_team_guardrail_config":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Team Guardrail Config","default":false},"litellm_model_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ModelTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"deleted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deleted By"},"deleted_by_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deleted By Api Key"},"litellm_changed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Changed By"}},"type":"object","required":["team_id"],"title":"LiteLLM_DeletedTeamTable","description":"Audit record for deleted teams; mirrors the team plus deletion metadata."},"LiteLLM_DeletedVerificationToken":{"properties":{"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"spend":{"type":"number","title":"Spend","default":0.0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"expires":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires"},"models":{"items":{},"type":"array","title":"Models","default":[]},"aliases":{"additionalProperties":true,"type":"object","title":"Aliases","default":{}},"config":{"additionalProperties":true,"type":"object","title":"Config","default":{}},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type"},"permissions":{"additionalProperties":true,"type":"object","title":"Permissions","default":{}},"model_spend":{"additionalProperties":true,"type":"object","title":"Model Spend","default":{}},"model_max_budget":{"additionalProperties":true,"type":"object","title":"Model Max Budget","default":{}},"budget_fallbacks":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Budget Fallbacks","default":{}},"soft_budget_cooldown":{"type":"boolean","title":"Soft Budget Cooldown","default":false},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"litellm_budget_table":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Budget Table"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"settings_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settings Updated At"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"rotation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rotation Count","default":0},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate","default":false},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval"},"last_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Rotation At"},"key_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Key Rotation At"},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"budget_limits":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"deleted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deleted By"},"deleted_by_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deleted By Api Key"},"litellm_changed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Changed By"}},"type":"object","title":"LiteLLM_DeletedVerificationToken","description":"Audit record for deleted keys; mirrors the token plus deletion metadata."},"LiteLLM_EndUserTable":{"properties":{"user_id":{"type":"string","title":"User Id"},"blocked":{"type":"boolean","title":"Blocked"},"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"spend":{"type":"number","title":"Spend","default":0.0},"allowed_model_region":{"anyOf":[{"type":"string","enum":["eu","us"]},{"type":"null"}],"title":"Allowed Model Region"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]}},"type":"object","required":["user_id","blocked"],"title":"LiteLLM_EndUserTable"},"LiteLLM_MemoryRow":{"properties":{"memory_id":{"type":"string","title":"Memory Id"},"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"},"metadata":{"anyOf":[{},{"type":"null"}],"title":"Metadata"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["memory_id","key","value"],"title":"LiteLLM_MemoryRow"},"LiteLLM_ModelTable":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"model_aliases":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Aliases"},"created_by":{"type":"string","title":"Created By"},"updated_by":{"type":"string","title":"Updated By"},"team":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_TeamTable"},{"type":"null"}]}},"type":"object","required":["created_by","updated_by"],"title":"LiteLLM_ModelTable"},"LiteLLM_ObjectPermissionBase":{"properties":{"mcp_servers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Servers"},"mcp_access_groups":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Access Groups"},"mcp_tool_permissions":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Mcp Tool Permissions"},"mcp_toolsets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Toolsets"},"blocked_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Blocked Tools"},"vector_stores":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Vector Stores"},"agents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Agents"},"agent_access_groups":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Agent Access Groups"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"},"search_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Search Tools"},"mcp_tool_search_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mcp Tool Search Enabled"}},"type":"object","title":"LiteLLM_ObjectPermissionBase"},"LiteLLM_ObjectPermissionTable":{"properties":{"object_permission_id":{"type":"string","title":"Object Permission Id"},"mcp_servers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Servers","default":[]},"mcp_access_groups":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Access Groups","default":[]},"mcp_tool_permissions":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Mcp Tool Permissions"},"vector_stores":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Vector Stores","default":[]},"agents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Agents","default":[]},"agent_access_groups":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Agent Access Groups","default":[]},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"mcp_toolsets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Toolsets"},"blocked_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Blocked Tools","default":[]},"search_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Search Tools","default":[]},"mcp_tool_search_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mcp Tool Search Enabled"}},"type":"object","required":["object_permission_id"],"title":"LiteLLM_ObjectPermissionTable","description":"Represents a LiteLLM_ObjectPermissionTable record"},"LiteLLM_OrganizationMembershipTable":{"properties":{"user_id":{"type":"string","title":"User Id"},"organization_id":{"type":"string","title":"Organization Id"},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"spend":{"type":"number","title":"Spend","default":0.0},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"user":{"anyOf":[{},{"type":"null"}],"title":"User"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"}},"type":"object","required":["user_id","organization_id","created_at","updated_at"],"title":"LiteLLM_OrganizationMembershipTable","description":"Tracks which organizations a user belongs to and their spend within it."},"LiteLLM_OrganizationTableWithMembers":{"properties":{"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"organization_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Alias"},"budget_id":{"type":"string","title":"Budget Id"},"spend":{"type":"number","title":"Spend","default":0.0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"created_by":{"type":"string","title":"Created By"},"updated_by":{"type":"string","title":"Updated By"},"users":{"anyOf":[{"items":{"$ref":"#/components/schemas/LiteLLM_UserTable"},"type":"array"},{"type":"null"}],"title":"Users"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"members":{"items":{"$ref":"#/components/schemas/LiteLLM_OrganizationMembershipTable"},"type":"array","title":"Members","default":[]},"teams":{"items":{"$ref":"#/components/schemas/LiteLLM_TeamTable"},"type":"array","title":"Teams","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["budget_id","created_by","updated_by","created_at","updated_at"],"title":"LiteLLM_OrganizationTableWithMembers","description":"Returned by the /organization/info endpoint and /organization/list endpoint"},"LiteLLM_Params":{"properties":{"input_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token"},"output_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token"},"input_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character"},"output_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character"},"cache_read_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost"},"cache_creation_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost"},"tiered_pricing":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tiered Pricing"},"input_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Second"},"output_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Second"},"output_cost_per_second_1080p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Second 1080P"},"input_cost_per_pixel":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Pixel"},"output_cost_per_pixel":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Pixel"},"input_cost_per_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Flex"},"input_cost_per_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Priority"},"input_cost_per_token_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Ultrafast"},"cache_creation_input_token_cost_above_1hr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 1Hr"},"cache_creation_input_token_cost_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 200K Tokens"},"cache_creation_input_token_cost_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens"},"cache_creation_input_token_cost_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens Priority"},"cache_creation_input_token_cost_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens Flex"},"cache_creation_input_token_cost_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Flex"},"cache_creation_input_token_cost_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Priority"},"cache_creation_input_token_cost_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Ultrafast"},"cache_creation_input_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Audio Token Cost"},"cache_read_input_token_cost_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Flex"},"cache_read_input_token_cost_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Priority"},"cache_read_input_token_cost_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Ultrafast"},"cache_read_input_token_cost_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 200K Tokens"},"cache_read_input_token_cost_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 200K Tokens Priority"},"cache_read_input_token_cost_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens Priority"},"cache_read_input_token_cost_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens Flex"},"cache_read_input_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Audio Token Cost"},"input_cost_per_character_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character Above 128K Tokens"},"input_cost_per_audio_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Token"},"input_cost_per_token_cache_hit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Cache Hit"},"input_cost_per_token_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 128K Tokens"},"input_cost_per_token_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 200K Tokens"},"input_cost_per_token_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 200K Tokens Priority"},"input_cost_per_token_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens Priority"},"input_cost_per_token_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens Flex"},"input_cost_per_query":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Query"},"input_cost_per_image":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image"},"input_cost_per_image_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image Above 128K Tokens"},"input_cost_per_audio_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Per Second"},"input_cost_per_audio_per_second_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Per Second Above 128K Tokens"},"input_cost_per_video_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second"},"input_cost_per_video_per_second_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 128K Tokens"},"input_cost_per_video_per_second_above_15s_interval":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 15S Interval"},"input_cost_per_video_per_second_above_8s_interval":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 8S Interval"},"input_cost_per_token_batches":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Batches"},"output_cost_per_token_batches":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Batches"},"output_cost_per_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Flex"},"output_cost_per_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Priority"},"output_cost_per_token_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Ultrafast"},"output_cost_per_audio_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Audio Token"},"output_cost_per_token_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 128K Tokens"},"output_cost_per_token_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 200K Tokens"},"output_cost_per_token_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 200K Tokens Priority"},"output_cost_per_token_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens Priority"},"output_cost_per_token_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens Flex"},"output_cost_per_character_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character Above 128K Tokens"},"output_cost_per_image":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Image"},"output_cost_per_image_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Image Token"},"output_cost_per_video_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Video Token"},"output_cost_per_reasoning_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token"},"output_cost_per_reasoning_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token Flex"},"output_cost_per_reasoning_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token Priority"},"output_cost_per_video_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Video Per Second"},"output_cost_per_audio_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Audio Per Second"},"search_context_cost_per_query":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Search Context Cost Per Query"},"citation_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Citation Cost Per Token"},"cache_read_input_token_cost_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens"},"cache_read_input_token_cost_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 512K Tokens"},"input_cost_per_image_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image Token"},"input_cost_per_video_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Token"},"input_cost_per_token_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens"},"input_cost_per_token_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 512K Tokens"},"output_cost_per_token_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens"},"output_cost_per_token_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 512K Tokens"},"output_vector_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Vector Size"},"ocr_cost_per_page":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ocr Cost Per Page"},"ocr_cost_per_credit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ocr Cost Per Credit"},"annotation_cost_per_page":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annotation Cost Per Page"},"regional_processing_uplift_multiplier_eu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Processing Uplift Multiplier Eu"},"regional_processing_uplift_multiplier_us":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Processing Uplift Multiplier Us"},"regional_endpoint_uplift_multiplier":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Endpoint Uplift Multiplier"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Version"},"azure_ad_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Azure Ad Token"},"vertex_project":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertex Project"},"vertex_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertex Location"},"vertex_credentials":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vertex Credentials"},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name"},"gcs_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gcs Bucket Name"},"aws_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Access Key Id"},"aws_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Secret Access Key"},"aws_session_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Token"},"aws_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Region Name"},"aws_session_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Name"},"aws_profile_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Profile Name"},"aws_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Role Name"},"aws_web_identity_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Web Identity Token"},"aws_sts_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Sts Endpoint"},"aws_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws External Id"},"aws_bedrock_runtime_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Bedrock Runtime Endpoint"},"aws_bedrock_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Bedrock Project Id"},"s3_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Bucket Name"},"s3_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Region Name"},"s3_encryption_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Encryption Key Id"},"aws_batch_role_arn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Batch Role Arn"},"s3_output_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Output Bucket Name"},"bedrock_tags":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Bedrock Tags"},"watsonx_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watsonx Region Name"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"},"tpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm"},"rpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm"},"itpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Itpm"},"otpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Otpm"},"timeout":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Timeout"},"stream_timeout":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Stream Timeout"},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"configurable_clientside_auth_params":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConfigurableClientsideParamsCustomAuth-Input"}]},"type":"array"},{"type":"null"}],"title":"Configurable Clientside Auth Params"},"litellm_credential_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Credential Name"},"litellm_trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Trace Id"},"max_file_size_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max File Size Mb"},"default_api_key_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Api Key Tpm Limit"},"default_api_key_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Api Key Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"keepalive_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Keepalive Seconds"},"allow_client_keepalive_override":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Client Keepalive Override","default":false},"use_in_pass_through":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use In Pass Through","default":false},"use_litellm_proxy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Litellm Proxy","default":false},"use_chat_completions_api":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Chat Completions Api"},"use_xai_oauth":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Xai Oauth","description":"Use stored xAI OAuth credentials when no xAI API key is configured.","default":false},"merge_reasoning_content_in_choices":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Merge Reasoning Content In Choices","default":false},"model_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Info"},"mock_response":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ModelResponse"},{},{"type":"null"}],"title":"Mock Response"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"tag_regex":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tag Regex"},"auto_router_config_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Config Path"},"auto_router_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Config"},"auto_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Default Model"},"auto_router_embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Embedding Model"},"auto_router_max_input_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Router Max Input Chars"},"complexity_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Complexity Router Config"},"complexity_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complexity Router Default Model"},"adaptive_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adaptive Router Default Model"},"adaptive_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Adaptive Router Config"},"quality_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Quality Router Config"},"quality_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality Router Default Model"},"vector_store_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Id"},"milvus_text_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Milvus Text Field"},"milvus_db_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Milvus Db Name"},"milvus_partition_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Milvus Partition Names"},"valkey_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Host"},"valkey_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Valkey Port"},"valkey_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Password"},"valkey_ssl":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Valkey Ssl"},"valkey_text_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Text Field"},"valkey_embedding_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Embedding Field"},"model":{"type":"string","title":"Model"}},"additionalProperties":true,"type":"object","required":["model"],"title":"LiteLLM_Params","description":"LiteLLM Params with 'model' requirement - used for completions"},"LiteLLM_ProjectTable":{"properties":{"project_id":{"type":"string","title":"Project Id"},"project_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Alias"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"spend":{"type":"number","title":"Spend","default":0.0},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"blocked":{"type":"boolean","title":"Blocked","default":false},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]}},"type":"object","required":["project_id"],"title":"LiteLLM_ProjectTable","description":"Database model representation for project"},"LiteLLM_ProxyModelTable":{"properties":{"model_id":{"type":"string","title":"Model Id"},"model_name":{"type":"string","title":"Model Name"},"litellm_params":{"additionalProperties":true,"type":"object","title":"Litellm Params"},"model_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Info"},"blocked":{"type":"boolean","title":"Blocked","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["model_id","model_name","litellm_params"],"title":"LiteLLM_ProxyModelTable"},"LiteLLM_SpendLogs":{"properties":{"request_id":{"type":"string","title":"Request Id"},"api_key":{"type":"string","title":"Api Key"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","default":""},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base","default":""},"call_type":{"type":"string","title":"Call Type"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0.0},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens","default":0},"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens","default":0},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens","default":0},"startTime":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starttime"},"endTime":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"title":"Endtime"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User","default":""},"metadata":{"anyOf":[{},{"type":"null"}],"title":"Metadata","default":{}},"cache_hit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Hit","default":"False"},"cache_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cache Key"},"request_tags":{"anyOf":[{},{"type":"null"}],"title":"Request Tags"},"requester_ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Ip Address"},"messages":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Messages"},"response":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["request_id","api_key","call_type","startTime","endTime","messages","response"],"title":"LiteLLM_SpendLogs"},"LiteLLM_TeamMembership":{"properties":{"user_id":{"type":"string","title":"User Id"},"team_id":{"type":"string","title":"Team Id"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0.0},"total_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Spend","default":0.0},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTableFull"},{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}],"title":"Litellm Budget Table"}},"type":"object","required":["user_id","team_id"],"title":"LiteLLM_TeamMembership"},"LiteLLM_TeamTable":{"properties":{"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_id":{"type":"string","title":"Team Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"admins":{"items":{},"type":"array","title":"Admins","default":[]},"members":{"items":{},"type":"array","title":"Members","default":[]},"members_with_roles":{"items":{"$ref":"#/components/schemas/Member"},"type":"array","title":"Members With Roles","default":[]},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"models":{"items":{},"type":"array","title":"Models","default":[]},"blocked":{"type":"boolean","title":"Blocked","default":false},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"model_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Id"},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"allow_team_guardrail_config":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Team Guardrail Config","default":false},"litellm_model_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ModelTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["team_id"],"title":"LiteLLM_TeamTable"},"LiteLLM_UserTable":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"sso_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sso User Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"teams":{"items":{"type":"string"},"type":"array","title":"Teams","default":[]},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"spend":{"type":"number","title":"Spend","default":0.0},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"models":{"items":{},"type":"array","title":"Models","default":[]},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"allowed_cache_controls":{"items":{"type":"string"},"type":"array","title":"Allowed Cache Controls","default":[]},"policies":{"items":{"type":"string"},"type":"array","title":"Policies","default":[]},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"organization_memberships":{"anyOf":[{"items":{"$ref":"#/components/schemas/LiteLLM_OrganizationMembershipTable"},"type":"array"},{"type":"null"}],"title":"Organization Memberships"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]}},"type":"object","required":["user_id"],"title":"LiteLLM_UserTable"},"LiteLLM_UserTableWithKeyCount":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"sso_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sso User Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"teams":{"items":{"type":"string"},"type":"array","title":"Teams","default":[]},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"spend":{"type":"number","title":"Spend","default":0.0},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"models":{"items":{},"type":"array","title":"Models","default":[]},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"allowed_cache_controls":{"items":{"type":"string"},"type":"array","title":"Allowed Cache Controls","default":[]},"policies":{"items":{"type":"string"},"type":"array","title":"Policies","default":[]},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"organization_memberships":{"anyOf":[{"items":{"$ref":"#/components/schemas/LiteLLM_OrganizationMembershipTable"},"type":"array"},{"type":"null"}],"title":"Organization Memberships"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"key_count":{"type":"integer","title":"Key Count","default":0}},"type":"object","required":["user_id"],"title":"LiteLLM_UserTableWithKeyCount"},"LiteLLM_VerificationToken":{"properties":{"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"spend":{"type":"number","title":"Spend","default":0.0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"expires":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires"},"models":{"items":{},"type":"array","title":"Models","default":[]},"aliases":{"additionalProperties":true,"type":"object","title":"Aliases","default":{}},"config":{"additionalProperties":true,"type":"object","title":"Config","default":{}},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type"},"permissions":{"additionalProperties":true,"type":"object","title":"Permissions","default":{}},"model_spend":{"additionalProperties":true,"type":"object","title":"Model Spend","default":{}},"model_max_budget":{"additionalProperties":true,"type":"object","title":"Model Max Budget","default":{}},"budget_fallbacks":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Budget Fallbacks","default":{}},"soft_budget_cooldown":{"type":"boolean","title":"Soft Budget Cooldown","default":false},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"litellm_budget_table":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Budget Table"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"settings_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settings Updated At"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"rotation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rotation Count","default":0},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate","default":false},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval"},"last_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Rotation At"},"key_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Key Rotation At"},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"budget_limits":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Budget Limits"}},"type":"object","title":"LiteLLM_VerificationToken"},"LitellmUserRoles":{"type":"string","enum":["proxy_admin","proxy_admin_viewer","org_admin","internal_user","internal_user_viewer","team","customer"],"title":"LitellmUserRoles","description":"Admin Roles:\nPROXY_ADMIN: admin over the platform\nPROXY_ADMIN_VIEW_ONLY: can login, view all own keys, view all spend\nORG_ADMIN: admin over a specific organization, can create teams, users only within their organization\n\nInternal User Roles:\nINTERNAL_USER: can login, view/create/delete their own keys, view their spend\nINTERNAL_USER_VIEW_ONLY: can login, view their own keys, view their own spend\n\n\nTeam Roles:\nTEAM: used for JWT auth\n\n\nCustomer Roles:\nCUSTOMER: External users -> these are customers"},"LoggingCallbackStatus":{"properties":{"callbacks":{"items":{"type":"string"},"type":"array","title":"Callbacks"},"status":{"type":"string","enum":["healthy","unhealthy"],"title":"Status"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"type":"object","title":"LoggingCallbackStatus"},"MCPPublicServer":{"properties":{"server_id":{"type":"string","title":"Server Id"},"name":{"type":"string","title":"Name"},"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name"},"transport":{"type":"string","enum":["sse","http","stdio"],"title":"Transport"},"spec_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Path"},"auth_type":{"anyOf":[{"type":"string","enum":["none","api_key","bearer_token","basic","authorization","oauth2","aws_sigv4","token","oauth2_token_exchange","oauth2_id_jag","true_passthrough","oauth_delegate"]},{"type":"null"}],"title":"Auth Type"},"mcp_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Info"}},"type":"object","required":["server_id","name","transport"],"title":"MCPPublicServer","description":"Safe params for public MCP servers"},"MCPSemanticFilterSettings":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Enable semantic filtering of MCP tools based on query relevance","default":false},"embedding_model":{"type":"string","title":"Embedding Model","description":"Embedding model to use for semantic similarity (e.g., 'text-embedding-3-small', 'text-embedding-ada-002')","default":"text-embedding-3-small"},"top_k":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Top K","description":"Number of most relevant tools to return","default":10},"similarity_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Similarity Threshold","description":"Minimum similarity score for tool inclusion (0.0 to 1.0, where 1.0 = exact match)","default":0.3}},"type":"object","title":"MCPSemanticFilterSettings","description":"Configuration for MCP Semantic Tool Filter"},"MCPSemanticFilterSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"}},"type":"object","required":["values","field_schema"],"title":"MCPSemanticFilterSettingsResponse","description":"Response model for MCP semantic filter settings"},"Member":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"The unique ID of the user to add. Either user_id or user_email must be provided"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email","description":"The email address of the user to add. Either user_id or user_email must be provided"},"role":{"type":"string","enum":["admin","user"],"title":"Role","description":"The role of the user within the team. 'admin' users can manage team settings and members, 'user' is a regular team member"}},"type":"object","required":["role"],"title":"Member"},"MemoryCreateRequest":{"properties":{"key":{"type":"string","title":"Key","description":"Memory key (acts as the namespace in the URL)."},"value":{"type":"string","title":"Value","description":"Memory content. Typically markdown/text for LLM context."},"metadata":{"anyOf":[{},{"type":"null"}],"title":"Metadata","description":"Optional JSON metadata (tags, structured fields)."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Scope to this user. Defaults to the caller's user_id."},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id","description":"Scope to this team. Defaults to the caller's team_id."}},"type":"object","required":["key","value"],"title":"MemoryCreateRequest"},"MemoryDeleteResponse":{"properties":{"key":{"type":"string","title":"Key"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["key","deleted"],"title":"MemoryDeleteResponse"},"MemoryListResponse":{"properties":{"memories":{"items":{"$ref":"#/components/schemas/LiteLLM_MemoryRow"},"type":"array","title":"Memories"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["memories","total"],"title":"MemoryListResponse"},"MemoryUpdateRequest":{"properties":{"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"metadata":{"anyOf":[{},{"type":"null"}],"title":"Metadata"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},"type":"object","title":"MemoryUpdateRequest"},"Message":{"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"role":{"type":"string","enum":["assistant","user","system","tool","function"],"title":"Role"},"tool_calls":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionMessageToolCall"},{"$ref":"#/components/schemas/ChatCompletionMessageCustomToolCall"}]},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"function_call":{"anyOf":[{"$ref":"#/components/schemas/FunctionCall"},{"type":"null"}]},"audio":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionAudioResponse"},{"type":"null"}]},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageURLListItem"},"type":"array"},{"type":"null"}],"title":"Images"},"reasoning_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Content"},"thinking_blocks":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionThinkingBlock"},{"$ref":"#/components/schemas/ChatCompletionRedactedThinkingBlock"}]},"type":"array"},{"type":"null"}],"title":"Thinking Blocks"},"reasoning_items":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionReasoningItem"},"type":"array"},{"type":"null"}],"title":"Reasoning Items"},"provider_specific_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider Specific Fields"},"annotations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionAnnotation"},"type":"array"},{"type":"null"}],"title":"Annotations"}},"additionalProperties":true,"type":"object","required":["content","role","tool_calls","function_call"],"title":"Message"},"MetricWithMetadata":{"properties":{"metrics":{"$ref":"#/components/schemas/SpendMetrics"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"api_key_breakdown":{"additionalProperties":{"$ref":"#/components/schemas/KeyMetricWithMetadata"},"type":"object","title":"Api Key Breakdown"}},"type":"object","required":["metrics"],"title":"MetricWithMetadata"},"ModelDeprecationInfo":{"properties":{"model_name":{"type":"string","title":"Model Name","description":"The public name of the model on the proxy (model_group)."},"litellm_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Model","description":"The underlying litellm model string the deprecation date is sourced from."},"deprecation_date":{"type":"string","format":"date","title":"Deprecation Date","description":"The date (UTC) when the model becomes deprecated."},"days_until_deprecation":{"type":"integer","title":"Days Until Deprecation","description":"Days remaining until the deprecation date. Negative if the model is already deprecated."},"status":{"type":"string","enum":["upcoming","imminent","deprecated"],"title":"Status","description":"'deprecated' if the date has passed, 'imminent' if it falls within warn_within_days, 'upcoming' otherwise."},"litellm_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Provider","description":"The provider this model belongs to."}},"type":"object","required":["model_name","deprecation_date","days_until_deprecation","status"],"title":"ModelDeprecationInfo"},"ModelDeprecationResponse":{"properties":{"deprecated":{"items":{"$ref":"#/components/schemas/ModelDeprecationInfo"},"type":"array","title":"Deprecated","description":"Models whose deprecation date has already passed."},"imminent":{"items":{"$ref":"#/components/schemas/ModelDeprecationInfo"},"type":"array","title":"Imminent","description":"Models whose deprecation date is within warn_within_days from today and require immediate migration planning."},"upcoming":{"items":{"$ref":"#/components/schemas/ModelDeprecationInfo"},"type":"array","title":"Upcoming","description":"Models with a future deprecation date outside the warn window."},"warn_within_days":{"type":"integer","title":"Warn Within Days","description":"The window (in days) used to bucket 'imminent' models."},"checked_at":{"type":"string","format":"date-time","title":"Checked At","description":"UTC timestamp when the deprecation snapshot was generated."}},"type":"object","required":["warn_within_days","checked_at"],"title":"ModelDeprecationResponse"},"ModelGroupInfoProxy":{"properties":{"model_group":{"type":"string","title":"Model Group"},"providers":{"items":{"type":"string"},"type":"array","title":"Providers"},"max_input_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Input Tokens"},"max_output_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Output Tokens"},"input_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token"},"output_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token"},"input_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Second"},"output_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Second"},"input_cost_per_pixel":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Pixel"},"mode":{"anyOf":[{"type":"string"},{"type":"string","enum":["chat","embedding","completion","image_generation","audio_transcription","audio_speech","rerank","moderations"]},{"type":"null"}],"title":"Mode","default":"chat"},"tpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm"},"rpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm"},"itpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Itpm"},"otpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Otpm"},"supports_parallel_function_calling":{"type":"boolean","title":"Supports Parallel Function Calling","default":false},"supports_vision":{"type":"boolean","title":"Supports Vision","default":false},"supports_web_search":{"type":"boolean","title":"Supports Web Search","default":false},"supports_url_context":{"type":"boolean","title":"Supports Url Context","default":false},"supports_reasoning":{"type":"boolean","title":"Supports Reasoning","default":false},"supports_function_calling":{"type":"boolean","title":"Supports Function Calling","default":false},"supported_openai_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Openai Params","default":[]},"configurable_clientside_auth_params":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConfigurableClientsideParamsCustomAuth-Output"}]},"type":"array"},{"type":"null"}],"title":"Configurable Clientside Auth Params"},"is_public_model_group":{"type":"boolean","title":"Is Public Model Group","default":false},"visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Visible","default":true},"health_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Status"},"health_response_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Health Response Time"},"health_checked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Checked At"},"is_self_hosted":{"type":"boolean","title":"Is Self Hosted","default":false}},"type":"object","required":["model_group","providers"],"title":"ModelGroupInfoProxy"},"ModelInfo":{"properties":{"input_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token"},"output_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token"},"input_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character"},"output_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character"},"cache_read_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost"},"cache_creation_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost"},"tiered_pricing":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tiered Pricing"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"db_model":{"type":"boolean","title":"Db Model","default":false},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"base_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Model"},"tier":{"anyOf":[{"type":"string","enum":["free","paid"]},{"type":"null"}],"title":"Tier"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"team_public_model_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Public Model Name"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"ptu_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ptu Count"},"cost_per_ptu_per_hour":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Per Ptu Per Hour"},"ptu_effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ptu Effective From"},"ptu_effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ptu Effective To"},"allow_fail_open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Fail Open"},"enable_tag_filtering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Tag Filtering"}},"additionalProperties":true,"type":"object","required":["id"],"title":"ModelInfo"},"ModelInfoDelete":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"ModelInfoDelete"},"ModelResponse":{"properties":{"id":{"type":"string","title":"Id"},"created":{"type":"integer","title":"Created"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"object":{"type":"string","title":"Object"},"system_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Fingerprint"},"choices":{"items":{"$ref":"#/components/schemas/Choices"},"type":"array","title":"Choices"}},"additionalProperties":true,"type":"object","required":["id","created","object","choices"],"title":"ModelResponse"},"MutualTLSSecurityScheme":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type":{"type":"string","const":"mutualTLS","title":"Type"}},"type":"object","required":["type"],"title":"MutualTLSSecurityScheme","description":"Defines a security scheme using mTLS authentication."},"NewCustomerRequest":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"Requests will fail if this budget (in USD) is exceeded."},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget","description":"Requests will NOT fail if this is exceeded. Will fire alerting though."},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests","description":"Max concurrent requests allowed for this budget id."},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit","description":"Max tokens per minute, allowed for this budget id."},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit","description":"Max requests per minute, allowed for this budget id."},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Max duration budget should be set for (e.g. '1hr', '1d', '28d')"},"model_max_budget":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/BudgetConfig"},"type":"object"},{"type":"null"}],"title":"Model Max Budget","description":"Max budget for each model (e.g. {'gpt-4o': {'max_budget': '0.0000001', 'budget_duration': '1d', 'tpm_limit': 1000, 'rpm_limit': 1000}})"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At","description":"Datetime when the budget is reset"},"user_id":{"type":"string","title":"User Id"},"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"blocked":{"type":"boolean","title":"Blocked","default":false},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"allowed_model_region":{"anyOf":[{"type":"string","enum":["eu","us"]},{"type":"null"}],"title":"Allowed Model Region"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]}},"type":"object","required":["user_id"],"title":"NewCustomerRequest","description":"Create a new customer, allocate a budget to them"},"NewModelGroupRequest":{"properties":{"access_group":{"type":"string","title":"Access Group"},"model_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Names"},"model_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Ids"}},"type":"object","required":["access_group"],"title":"NewModelGroupRequest"},"NewModelGroupResponse":{"properties":{"access_group":{"type":"string","title":"Access Group"},"model_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Names"},"model_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Ids"},"models_updated":{"type":"integer","title":"Models Updated"}},"type":"object","required":["access_group","models_updated"],"title":"NewModelGroupResponse"},"NewOrganizationRequest":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"organization_alias":{"type":"string","title":"Organization Alias"},"models":{"items":{},"type":"array","title":"Models","default":[]},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"model_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]}},"type":"object","required":["organization_alias"],"title":"NewOrganizationRequest"},"NewOrganizationResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"organization_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Alias"},"budget_id":{"type":"string","title":"Budget Id"},"spend":{"type":"number","title":"Spend","default":0.0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"created_by":{"type":"string","title":"Created By"},"updated_by":{"type":"string","title":"Updated By"},"users":{"anyOf":[{"items":{"$ref":"#/components/schemas/LiteLLM_UserTable"},"type":"array"},{"type":"null"}],"title":"Users"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["organization_id","budget_id","created_by","updated_by","created_at","updated_at"],"title":"NewOrganizationResponse"},"NewProjectRequest":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"project_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Alias"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"team_id":{"type":"string","title":"Team Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"model_itpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Itpm Limit"},"model_otpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Otpm Limit"},"blocked":{"type":"boolean","title":"Blocked","default":false},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]}},"type":"object","required":["team_id"],"title":"NewProjectRequest","description":"Request model for POST /project/new"},"NewProjectResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"project_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Alias"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"spend":{"type":"number","title":"Spend","default":0.0},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"blocked":{"type":"boolean","title":"Blocked","default":false},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]}},"type":"object","required":["project_id","created_at","updated_at"],"title":"NewProjectResponse","description":"Response model for POST /project/new"},"NewTeamRequest":{"properties":{"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"admins":{"items":{},"type":"array","title":"Admins","default":[]},"members":{"items":{},"type":"array","title":"Members","default":[]},"members_with_roles":{"items":{"$ref":"#/components/schemas/Member"},"type":"array","title":"Members With Roles","default":[]},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"models":{"items":{},"type":"array","title":"Models","default":[]},"blocked":{"type":"boolean","title":"Blocked","default":false},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"},"model_aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Aliases"},"tags":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tags"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"secret_manager_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Secret Manager Settings"},"model_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput"]},{"type":"null"}],"title":"Tpm Limit Type"},"model_tpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"team_member_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Member Budget"},"team_member_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Rpm Limit"},"team_member_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Tpm Limit"},"team_member_key_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Key Duration"},"team_member_budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Budget Duration"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"enforced_batch_output_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced Batch Output Expires After"},"enforced_file_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced File Expires After"}},"type":"object","title":"NewTeamRequest"},"NewUserRequest":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"user_role":{"anyOf":[{"type":"string","enum":["proxy_admin","proxy_admin_viewer","internal_user","internal_user_viewer"]},{"type":"null"}],"title":"User Role"},"teams":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"items":{"$ref":"#/components/schemas/NewUserRequestTeam"},"type":"array"},{"type":"null"}],"title":"Teams"},"auto_create_key":{"type":"boolean","title":"Auto Create Key","default":true},"send_invite_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Invite Email"},"sso_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sso User Id"},"organizations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Organizations"}},"type":"object","title":"NewUserRequest"},"NewUserRequestTeam":{"properties":{"team_id":{"type":"string","title":"Team Id"},"max_budget_in_team":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Team"},"user_role":{"type":"string","enum":["user","admin"],"title":"User Role","default":"user"}},"type":"object","required":["team_id"],"title":"NewUserRequestTeam"},"NewUserResponse":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"key":{"type":"string","title":"Key"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"enable_prompt_caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Caching"},"throttle_on_budget_exceeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Throttle On Budget Exceeded"},"enforced_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enforced Params"},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"router_settings":{"anyOf":[{"$ref":"#/components/schemas/UpdateRouterConfig"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name"},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type"},"expires":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires"},"token_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"litellm_budget_table":{"anyOf":[{},{"type":"null"}],"title":"Litellm Budget Table"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_role":{"anyOf":[{"type":"string","enum":["proxy_admin","proxy_admin_viewer","internal_user","internal_user_viewer"]},{"type":"null"}],"title":"User Role"},"teams":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Teams"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"}},"type":"object","required":["key"],"title":"NewUserResponse"},"OAuth2SecurityScheme":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type":{"type":"string","const":"oauth2","title":"Type"},"flows":{"$ref":"#/components/schemas/OAuthFlows"},"oauth2MetadataUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth2Metadataurl"}},"type":"object","required":["type","flows"],"title":"OAuth2SecurityScheme","description":"Defines a security scheme using OAuth 2.0."},"OAuthFlows":{"properties":{"authorizationCode":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Authorizationcode"},"clientCredentials":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Clientcredentials"},"implicit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Implicit"},"password":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Password"}},"type":"object","title":"OAuthFlows","description":"Defines the configuration for the supported OAuth 2.0 flows."},"OpenIdConnectSecurityScheme":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"type":{"type":"string","const":"openIdConnect","title":"Type"},"openIdConnectUrl":{"type":"string","title":"Openidconnecturl"}},"type":"object","required":["type","openIdConnectUrl"],"title":"OpenIdConnectSecurityScheme","description":"Defines a security scheme using OpenID Connect."},"OrgMember":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"The unique ID of the user to add. Either user_id or user_email must be provided"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email","description":"The email address of the user to add. Either user_id or user_email must be provided"},"role":{"type":"string","enum":["org_admin","internal_user","internal_user_viewer"],"title":"Role"}},"type":"object","required":["role"],"title":"OrgMember"},"OrganizationAddMemberResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"updated_users":{"items":{"$ref":"#/components/schemas/LiteLLM_UserTable"},"type":"array","title":"Updated Users"},"updated_organization_memberships":{"items":{"$ref":"#/components/schemas/LiteLLM_OrganizationMembershipTable"},"type":"array","title":"Updated Organization Memberships"}},"type":"object","required":["organization_id","updated_users","updated_organization_memberships"],"title":"OrganizationAddMemberResponse"},"OrganizationMemberAddRequest":{"properties":{"member":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrgMember"},"type":"array"},{"$ref":"#/components/schemas/OrgMember"}],"title":"Member"},"organization_id":{"type":"string","title":"Organization Id"},"max_budget_in_organization":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Organization"}},"type":"object","required":["member","organization_id"],"title":"OrganizationMemberAddRequest"},"OrganizationMemberDeleteRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"organization_id":{"type":"string","title":"Organization Id"}},"type":"object","required":["organization_id"],"title":"OrganizationMemberDeleteRequest"},"OrganizationMemberUpdateRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"organization_id":{"type":"string","title":"Organization Id"},"max_budget_in_organization":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Organization"},"role":{"anyOf":[{"$ref":"#/components/schemas/LitellmUserRoles"},{"type":"null"}]}},"type":"object","required":["organization_id"],"title":"OrganizationMemberUpdateRequest"},"OrganizationRequest":{"properties":{"organizations":{"items":{"type":"string"},"type":"array","title":"Organizations"}},"type":"object","required":["organizations"],"title":"OrganizationRequest"},"PageLinks":{"properties":{"self":{"type":"string","title":"Self"},"prev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}},"type":"object","required":["self"],"title":"PageLinks","description":"Hypermedia for a paginated list. No `first`/`last`: without a total count the last page is unknown."},"PageMeta":{"properties":{"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["page","page_size","has_more"],"title":"PageMeta","description":"`has_more` rather than `total_count`, which would need a COUNT(*) over the whole match set per keystroke."},"PaginatedAuditLogResponse":{"properties":{"audit_logs":{"items":{"$ref":"#/components/schemas/AuditLogResponse"},"type":"array","title":"Audit Logs"},"total":{"type":"integer","title":"Total","description":"Total number of audit logs matching the filters"},"page":{"type":"integer","title":"Page","description":"Current page number"},"page_size":{"type":"integer","title":"Page Size","description":"Number of items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of pages"}},"type":"object","required":["audit_logs","total","page","page_size","total_pages"],"title":"PaginatedAuditLogResponse","description":"Response model for paginated audit logs"},"PassThroughEndpointResponse":{"properties":{"endpoints":{"items":{"$ref":"#/components/schemas/PassThroughGenericEndpoint"},"type":"array","title":"Endpoints"}},"type":"object","required":["endpoints"],"title":"PassThroughEndpointResponse"},"PassThroughGenericEndpoint":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier for the pass-through endpoint. If not provided, endpoints will be identified by path for backwards compatibility."},"path":{"type":"string","title":"Path","description":"The route to be added to the LiteLLM Proxy Server."},"target":{"type":"string","title":"Target","description":"The URL to which requests for this path should be forwarded."},"headers":{"additionalProperties":true,"type":"object","title":"Headers","description":"Key-value pairs of headers to be forwarded with the request. You can set any key value pair here and it will be forwarded to your target endpoint","default":{}},"default_query_params":{"additionalProperties":true,"type":"object","title":"Default Query Params","description":"Key-value pairs of default query parameters to be sent with every request to this endpoint. These can be overridden by client-provided query parameters. For example: {'key': 'default_value', 'api_version': '2023-01'}","default":{}},"include_subpath":{"type":"boolean","title":"Include Subpath","description":"If True, requests to subpaths of the path will be forwarded to the target endpoint. For example, if the path is /bria and include_subpath is True, requests to /bria/v1/text-to-image/base/2.3 will be forwarded to the target endpoint.","default":false},"cost_per_request":{"type":"number","title":"Cost Per Request","description":"The USD cost per request to the target endpoint. This is used to calculate the cost of the request to the target endpoint.","default":0.0},"timeout":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeout","description":"Upstream request timeout in seconds for this pass-through endpoint. If unset, uses general_settings.pass_through_request_timeout (default 600)."},"auth":{"type":"boolean","title":"Auth","description":"Whether authentication is required for the pass-through endpoint. Defaults to True so a pass-through silently created without an explicit value still requires a valid LiteLLM API key — set to False only if the endpoint is meant to be a public forwarder (e.g. an unauthenticated webhook target).","default":true},"guardrails":{"anyOf":[{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/PassThroughGuardrailSettings"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Guardrails","description":"Guardrails configuration for this passthrough endpoint. Dict keys are guardrail names, values are optional settings for field targeting. When set, all org/team/key level guardrails will also execute. Defaults to None (no guardrails execute)."},"is_from_config":{"type":"boolean","title":"Is From Config","description":"True if this endpoint is defined in the config file, False if from DB. Config-defined endpoints cannot be edited via the UI.","default":false},"methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Methods","description":"List of HTTP methods this endpoint handles (e.g., ['GET', 'POST']). If None or empty, all methods (GET, POST, PUT, DELETE, PATCH) are supported for backward compatibility. This allows the same path to have different targets for different HTTP methods."}},"type":"object","required":["path","target"],"title":"PassThroughGenericEndpoint"},"PassThroughGuardrailSettings":{"properties":{"request_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Request Fields","description":"JSONPath expressions for input field targeting (pre_call). Examples: 'query', 'documents[*].text', 'messages[*].content'. If not specified, guardrail runs on entire request payload."},"response_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Response Fields","description":"JSONPath expressions for output field targeting (post_call). Examples: 'results[*].text', 'output'. If not specified, guardrail runs on entire response payload."}},"type":"object","title":"PassThroughGuardrailSettings","description":"Settings for a specific guardrail on a passthrough endpoint.\n\nAllows field-level targeting for guardrail execution."},"PatchTeamRequest":{"properties":{"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"tags":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tags"},"model_aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Aliases"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"team_member_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Member Budget"},"team_member_budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Budget Duration"},"team_member_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Rpm Limit"},"team_member_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Tpm Limit"},"team_member_key_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Key Duration"},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"secret_manager_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Secret Manager Settings"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"model_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"enforced_batch_output_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced Batch Output Expires After"},"enforced_file_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced File Expires After"},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"}},"type":"object","title":"PatchTeamRequest","description":"Body of PATCH /team/{team_id}.\n\nIdentical to UpdateTeamRequest except team_id is optional, because PATCH takes it\nfrom the path. A team_id in the body is still accepted when it matches the path."},"PerUserAnalyticsResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/PerUserMetrics"},"type":"array","title":"Results"},"total_count":{"type":"integer","title":"Total Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["results","total_count","page","page_size","total_pages"],"title":"PerUserAnalyticsResponse","description":"Response for per-user analytics"},"PerUserMetrics":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"successful_requests":{"type":"integer","title":"Successful Requests","default":0},"failed_requests":{"type":"integer","title":"Failed Requests","default":0},"total_requests":{"type":"integer","title":"Total Requests","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"spend":{"type":"number","title":"Spend","default":0.0}},"type":"object","required":["user_id"],"title":"PerUserMetrics","description":"Metrics for individual user"},"PromptTokensDetails":{"properties":{"modality":{"type":"string","enum":["TEXT","AUDIO","IMAGE","VIDEO"],"title":"Modality"},"tokenCount":{"type":"integer","title":"Tokencount"}},"type":"object","required":["modality","tokenCount"],"title":"PromptTokensDetails"},"ProviderBudgetResponse":{"properties":{"providers":{"additionalProperties":{"$ref":"#/components/schemas/ProviderBudgetResponseObject"},"type":"object","title":"Providers","default":{}}},"type":"object","title":"ProviderBudgetResponse","description":"Complete provider budget configuration and status.\nMaps provider names to their budget configs."},"ProviderBudgetResponseObject":{"properties":{"budget_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget Limit"},"time_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Period"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0.0},"budget_reset_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Reset At"}},"type":"object","required":["budget_limit","time_period"],"title":"ProviderBudgetResponseObject","description":"Configuration for a single provider's budget settings"},"ProviderCreateInfo":{"properties":{"provider":{"type":"string","title":"Provider"},"provider_display_name":{"type":"string","title":"Provider Display Name"},"litellm_provider":{"type":"string","title":"Litellm Provider"},"credential_fields":{"items":{"$ref":"#/components/schemas/ProviderCredentialField"},"type":"array","title":"Credential Fields"},"default_model_placeholder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model Placeholder"}},"type":"object","required":["provider","provider_display_name","litellm_provider","credential_fields"],"title":"ProviderCreateInfo"},"ProviderCredentialField":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"placeholder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placeholder"},"tooltip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tooltip"},"required":{"type":"boolean","title":"Required","default":false},"field_type":{"type":"string","enum":["text","password","select","upload","textarea"],"title":"Field Type","default":"text"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"default_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Value"}},"type":"object","required":["key","label"],"title":"ProviderCredentialField"},"PublicModelHubInfo":{"properties":{"docs_title":{"type":"string","title":"Docs Title"},"custom_docs_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Docs Description"},"litellm_version":{"type":"string","title":"Litellm Version"},"disable_health_status_column":{"type":"boolean","title":"Disable Health Status Column","default":false},"useful_links":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"object"},{"type":"null"}],"title":"Useful Links"}},"type":"object","required":["docs_title","custom_docs_description","litellm_version","useful_links"],"title":"PublicModelHubInfo"},"RawRequestTypedDict":{"properties":{"raw_request_api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Request Api Base"},"raw_request_body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw Request Body"},"raw_request_headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw Request Headers"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","title":"RawRequestTypedDict"},"RegenerateKeyRequest":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"enable_prompt_caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Caching"},"throttle_on_budget_exceeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Throttle On Budget Exceeded"},"enforced_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enforced Params"},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"router_settings":{"anyOf":[{"$ref":"#/components/schemas/UpdateRouterConfig"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"send_invite_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Invite Email"},"key_type":{"anyOf":[{"$ref":"#/components/schemas/LiteLLMKeyType"},{"type":"null"}],"description":"Type of key that determines default allowed routes.","default":"default"},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate","description":"Whether this key should be automatically rotated","default":false},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval","description":"How often to rotate this key (e.g., '30d', '90d'). Required if auto_rotate=True"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"new_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Key"},"new_master_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Master Key"},"grace_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grace Period"}},"type":"object","title":"RegenerateKeyRequest"},"ReminderMarkerPair":{"properties":{"open":{"type":"string","title":"Open","description":"Opening delimiter, e.g. '<system-reminder>'"},"close":{"type":"string","title":"Close","description":"Closing delimiter, e.g. '</system-reminder>'"}},"type":"object","required":["open","close"],"title":"ReminderMarkerPair","description":"One open/close delimiter pair a harness wraps injected context in.\n\nNormalizing here rather than at the scan is what makes matching case-insensitive: markers reach\nthe scan already lowered, so it lowercases only the haystack and never the needles. Stripping\nkeeps YAML indentation whitespace from becoming part of the delimiter."},"RequestComplexityRouterConfig":{"properties":{"tiers":{"additionalProperties":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]},"type":"object","title":"Tiers","description":"Mapping of complexity tiers to a model or model pool. A list is randomly picked from when adaptive=False, and used as a soft-floor home pool when adaptive=True"},"tier_model_configs":{"additionalProperties":{"items":{"$ref":"#/components/schemas/ComplexityTierModel"},"type":"array"},"type":"object","title":"Tier Model Configs"},"tier_definitions":{"anyOf":[{"items":{"$ref":"#/components/schemas/TierDefinition"},"type":"array"},{"type":"null"}],"title":"Tier Definitions","description":"Operator-defined tier set replacing the built-in SIMPLE/MEDIUM/COMPLEX/REASONING. Each entry's name becomes a value the LLM classifier can return and its description becomes that tier's rubric bullet; entries named after a built-in tier may omit the description and inherit the built-in criteria. List order is ascending severity and decides which tier wins when several keyword_tier_rules match. Requires classifier_type 'llm' or 'custom', a fallback_tier, and `tiers` keys matching the defined names exactly. Escalation, adaptive selection, session affinity, plugins, tier_labels, and the calibration-example rubric presets are unavailable with a custom tier set: the first four are built on the built-in tier ladder, and the last two rename or exemplify tiers the set replaces."},"fallback_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fallback Tier","description":"Tier routed to when the LLM classifier fails (timeout, provider error, or an unparseable reply). Required with tier_definitions and must name a defined tier; the heuristic scorer cannot produce custom tiers, so this replaces the heuristic fallback for custom tier sets."},"classification_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification Prompt","description":"Replaces the opening instructions of the LLM classifier rubric (the judging-criteria prose) for a custom tier set. The per-tier bullets and the trust-boundary paragraph telling the classifier to ignore tier requests embedded in quoted caller text are always appended after it and cannot be overridden. Requires tier_definitions; a built-in-tier router customizes its prompt via classifier_llm_config.system_prompt or classification_rubric instead."},"tier_labels":{"additionalProperties":{"type":"string"},"propertyNames":{"$ref":"#/components/schemas/ComplexityTier"},"type":"object","title":"Tier Labels","description":"Display names for the complexity tiers, so a deployment can use its own vocabulary (e.g. Cheap/Standard/Premium/Deep) in the dashboard, spend logs, and the LLM classifier rubric. Purely operator-facing: config keys stay canonical (tiers, keyword_tier_rules[].tier, tier_boundaries), API callers never see these names, and the heuristic scorer never reads them. Unlisted tiers keep their canonical name. Partial maps are allowed."},"tier_boundaries":{"additionalProperties":{"type":"number"},"type":"object","title":"Tier Boundaries","description":"Score boundaries between tiers. These keys (simple_medium, medium_complex, complex_reasoning) name the gaps between the default tier names and are not renameable by tier_labels; they are scorer knobs persisted by name on every routing decision"},"reasoning_override_min_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reasoning Override Min Score","description":"Minimum weighted score a request must reach before 2+ reasoning markers may promote it to the reasoning tier. Unset tracks tier_boundaries.simple_medium, so the override never rescues a request the scorer placed in the cheapest tier; 0 restores the unconditional override"},"token_thresholds":{"additionalProperties":{"type":"integer"},"type":"object","title":"Token Thresholds","description":"Token count thresholds for simple/complex classification"},"dimension_weights":{"additionalProperties":{"type":"number"},"type":"object","title":"Dimension Weights","description":"Weights for each scoring dimension"},"code_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Code Keywords","description":"Keywords indicating code-related content"},"reasoning_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reasoning Keywords","description":"Keywords indicating reasoning-required content"},"technical_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Technical Keywords","description":"Keywords indicating technical content"},"custom_technical_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Technical Keywords","description":"Domain-specific technical keywords appended to the effective base list (technical_keywords if set, otherwise DEFAULT_TECHNICAL_KEYWORDS). Order is preserved; duplicates are removed case-insensitively against the base list and within this list."},"simple_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Simple Keywords","description":"Keywords indicating simple/basic queries"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model","description":"Default model to use if tier cannot be determined"},"return_raw_model_name":{"type":"boolean","title":"Return Raw Model Name","description":"Return the resolved raw model name in the response model field instead of the client-requested complexity-router alias","default":false},"classifier_type":{"type":"string","enum":["heuristic","llm","custom"],"title":"Classifier Type","description":"Classification strategy: local regex/keyword scoring, an LLM call, or a custom classifier plugin","default":"heuristic"},"classifier_llm_config":{"anyOf":[{"$ref":"#/components/schemas/ClassifierLLMConfig"},{"type":"null"}],"description":"Configuration for the LLM classifier; required when classifier_type is 'llm'"},"classifier_plugin":{"type":"null","title":"Classifier Plugin","description":"Not settable over HTTP; the classifier plugin is a runtime object"},"classifier_plugin_timeout_ms":{"type":"integer","exclusiveMinimum":0.0,"title":"Classifier Plugin Timeout Ms","description":"Timeout budget for the classifier plugin call, in milliseconds. On expiry the fallback path decides the tier. Only applies when classifier_type is 'custom'.","default":3000},"classifier_fallback":{"type":"string","enum":["heuristic","default_model"],"title":"Classifier Fallback","description":"What classifies the request when the LLM classifier errors, times out, or returns an unparseable response. 'heuristic' runs the local complexity scorer, which is right when the classifier grades complexity too. 'default_model' skips scoring and routes to default_model, which is what a classifier on some other taxonomy wants: a prompt that grades data sensitivity has no use for a complexity score, and scoring one produces a tier unrelated to what the operator configured. Requires default_model when set to 'default_model'. Only applies when classifier_type is 'llm' or 'custom'.","default":"heuristic"},"classifier_context_window_size":{"type":"integer","minimum":0.0,"title":"Classifier Context Window Size","description":"Number of prior user turns (tool output and harness reminders excluded) to include as context in the LLM classifier prompt, so a follow-up like 'now do the same for the streaming path' is classified against what it refers to. Counts turns of both roles when classifier_context_include_assistant_turns is enabled. These turns are sent to the classifier model, which may be a different deployment or provider than the routed completion model; that call already carries the current user ask and the caller's system prompt in full. Set to 0 to send neither prior turns nor any conversation context beyond the current ask. Only applies when classifier_type is 'llm'.","default":3},"classifier_context_per_turn_chars":{"type":"integer","exclusiveMinimum":0.0,"title":"Classifier Context Per Turn Chars","description":"Maximum character length for each prior turn's text in the classifier context window. Turns exceeding this are truncated. Only applies when classifier_type is 'llm'.","default":200},"classifier_context_include_assistant_turns":{"type":"boolean","title":"Classifier Context Include Assistant Turns","description":"Include assistant turns in the classifier context window, so difficulty stated by the model rather than by the user stays visible: a plan the assistant calls complex, which the user approves with 'yes', is classified on the work being approved instead of on the word 'yes'. When enabled, classifier_context_window_size counts the last N turns of the conversation across both roles rather than the last N user turns, and assistant text is sent to the classifier model, which may be a different deployment or provider than the routed completion model. Assistant replies share classifier_context_per_turn_chars with user turns, so raise it if replies are truncated before the part that carries the difficulty. Off by default because enabling it shifts tier decisions, and therefore spend, for an already-deployed router. Only applies when classifier_type is 'llm'.","default":false},"adaptive":{"type":"boolean","title":"Adaptive","description":"Enable adaptive bandit selection with soft complexity floors","default":false},"adaptive_weights":{"$ref":"#/components/schemas/AdaptiveRouterWeights","description":"Quality vs cost weights for adaptive selection (used when adaptive=True)"},"tier_distance_penalty":{"type":"number","minimum":0.0,"title":"Tier Distance Penalty","description":"Score penalty per tier-step away from the classified tier when adaptive=True","default":0.5},"adaptive_eligible":{"type":"string","enum":["all","classified_tier"],"title":"Adaptive Eligible","description":"When adaptive=True: 'all' scores every pool model with a tier-distance penalty (soft floors); 'classified_tier' Thompson-samples only inside the classified tier's pool","default":"all"},"escalation_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Escalation Keywords","description":"Case-sensitive phrases a user can include to force a bump to the next-higher complexity tier when they aren't satisfied with results (they can force a stronger model, but not choose which one). Defaults to ['LITELLM ESCALATE'] when unset; set to an empty list to disable."},"keyword_tier_rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/KeywordTierRule"},"type":"array"},{"type":"null"}],"title":"Keyword Tier Rules","description":"Rules that force a specific tier when their keywords match the prompt"},"plan_mode_min_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Mode Min Tier","description":"When set, requests carrying a coding-agent plan-mode sentinel (Claude Code plan mode, VS Code Copilot Plan mode, Copilot CLI's exit_plan_mode tool) are routed to at least this tier: the classified tier still wins when it is higher, and the floor also overrides a session-affinity pin to a lower tier for exactly the turns carrying the sentinel, without rewriting the pin -- the first turn after plan mode exits routes as if plan mode had never happened. Names a built-in tier, or with tier_definitions set, one of the defined tier names (list order is ascending severity, same as keyword_tier_rules). Unset disables detection entirely. The sentinels ride in client-injected prompt text, so a caller who pastes one can spend up to this tier's models -- never down, and never outside the configured pools."},"plan_mode_patterns":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plan Mode Patterns","description":"Additional case-sensitive literal sentinels that mark a request as plan mode, on top of the built-in Claude Code and Copilot ones. For clients whose plan-mode wording the built-ins don't cover, or after a client release changes its strings."},"semantic_keyword_matching":{"type":"boolean","title":"Semantic Keyword Matching","description":"Match keyword_tier_rules by embedding similarity instead of literal text","default":false},"embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embedding Model","description":"Embedding model (LiteLLM model name) used when semantic_keyword_matching is enabled"},"match_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Threshold","description":"Minimum cosine similarity for a semantic keyword match","default":0.5},"session_affinity":{"type":"boolean","title":"Session Affinity","description":"When True and a session_id is resolvable on the request, pin the model chosen on the session's first turn and reuse it for every later turn, skipping re-classification. Off by default so every turn is classified on its own merits and routed to the cheapest adequate tier. Set True to keep a multi-turn session on one model, which preserves provider prompt caches and avoids cross-model conversation-history errors. Always implies the deployment pin regardless of deployment_affinity: the session sticks to one deployment of the pinned model, since freezing the model while re-shuffling its deployments would still go cache-cold.","default":false},"deployment_affinity":{"type":"boolean","title":"Deployment Affinity","description":"When True and a session_id is resolvable on the request, pin the deployment chosen inside each routed model group and reuse it whenever the session returns to that group, without pinning which group the session routes to. Independent of session_affinity, which pins the model group instead (and always carries this deployment pin with it): with session_affinity off, every turn is still classified on its own merits while a session that escalates to a stronger tier and comes back still lands on the deployment it used before, which is what keeps a provider prompt cache warm. Pins are held per model group, so switching tiers does not disturb the pin left behind in the previous group. On by default because re-shuffling a conversation across deployments of the same model discards that cache for no benefit; set False to keep every turn load-balanced across the group, which is what a deployment set with tight per-deployment rate limits wants. Inert when no session_id is resolvable, since there is nothing to key a pin on, and suppressed when plugins are configured, for the same reason session_affinity is.","default":true},"session_affinity_ttl_seconds":{"type":"integer","exclusiveMinimum":0.0,"title":"Session Affinity Ttl Seconds","description":"TTL for the session affinity pin; refreshed on every cache hit. Bounds both the session_affinity model pin and the deployment_affinity deployment pin, so it measures idle time for the session's routing decisions rather than total session length","default":3600},"plugins":{"type":"null","title":"Plugins","description":"Not settable over HTTP; routing plugins are runtime objects"},"reminder_markers":{"anyOf":[{"items":{"$ref":"#/components/schemas/ReminderMarkerPair"},"type":"array","minItems":1},{"type":"null"}],"title":"Reminder Markers","description":"Override the delimiter pairs used to recognize and strip harness-injected reminder blocks before classification. A harness that wraps injected context differently per agent type (main, subagent, cron) lists every pair it emits. Replaces, rather than adds to, the built-in default of ('<system-reminder>', '</system-reminder>'), so a harness that also emits that pair lists it too. Matching is case-insensitive."}},"additionalProperties":true,"type":"object","title":"RequestComplexityRouterConfig","description":"The part of a complexity-router config a request can carry.\n\n`plugins` holds live RoutingPlugin objects, which no JSON body can express and which have no\nOpenAPI schema, so it is closed off here rather than left as an arbitrary-type field."},"ResetSpendRequest":{"properties":{"reset_to":{"type":"number","title":"Reset To"}},"type":"object","required":["reset_to"],"title":"ResetSpendRequest"},"RetryPolicy":{"properties":{"BadRequestErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Badrequesterrorretries"},"AuthenticationErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Authenticationerrorretries"},"TimeoutErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeouterrorretries"},"RateLimitErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ratelimiterrorretries"},"ContentPolicyViolationErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contentpolicyviolationerrorretries"},"InternalServerErrorRetries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Internalservererrorretries"}},"type":"object","title":"RetryPolicy","description":"Use this to set a custom number of retries per exception type\nIf RateLimitErrorRetries = 3, then 3 retries will be made for RateLimitError\nMapping of Exception type to number of retries\nhttps://docs.litellm.ai/docs/exception_mapping"},"RoleMappings":{"properties":{"provider":{"type":"string","title":"Provider","description":"SSO Provider name (e.g., 'google', 'microsoft', 'generic')"},"group_claim":{"type":"string","title":"Group Claim","description":"The field name in the SSO token that contains the groups array (e.g., 'groups', 'roles')"},"default_role":{"anyOf":[{"$ref":"#/components/schemas/LitellmUserRoles"},{"type":"null"}],"description":"Default role to assign if user's groups don't match any role mappings. Must be a valid LitellmUserRoles value (e.g., 'proxy_admin', 'internal_user', 'proxy_admin_viewer')"},"roles":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"propertyNames":{"$ref":"#/components/schemas/LitellmUserRoles"},"type":"object","title":"Roles","description":"Mapping of LiteLLM role names to arrays of SSO group names. Example: {'proxy_admin': ['group-1', 'group-2'], 'proxy_admin_viewer': ['group-3']}"}},"type":"object","required":["provider","group_claim"],"title":"RoleMappings","description":"Configuration for mapping SSO groups to LiteLLM roles.\n\nThe system will look at the group_claim field in the SSO token to determine\nwhich role to assign the user based on the roles mapping."},"RouterFieldsResponse":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/RouterSettingsField"},"type":"array","title":"Fields","description":"List of all configurable router settings with metadata (without field values)"},"routing_strategy_descriptions":{"additionalProperties":{"type":"string"},"type":"object","title":"Routing Strategy Descriptions","description":"Descriptions for each routing strategy option"}},"type":"object","required":["fields","routing_strategy_descriptions"],"title":"RouterFieldsResponse"},"RouterSettingsField":{"properties":{"field_name":{"type":"string","title":"Field Name"},"field_type":{"type":"string","title":"Field Type"},"field_value":{"title":"Field Value"},"field_description":{"type":"string","title":"Field Description"},"field_default":{"title":"Field Default"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"ui_field_name":{"type":"string","title":"Ui Field Name"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"}},"type":"object","required":["field_name","field_type","field_value","field_description","ui_field_name"],"title":"RouterSettingsField"},"RouterSettingsResponse":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/RouterSettingsField"},"type":"array","title":"Fields","description":"List of all configurable router settings with metadata"},"current_values":{"additionalProperties":true,"type":"object","title":"Current Values","description":"Current values of router settings"},"routing_strategy_descriptions":{"additionalProperties":{"type":"string"},"type":"object","title":"Routing Strategy Descriptions","description":"Descriptions for each routing strategy option"}},"type":"object","required":["fields","current_values","routing_strategy_descriptions"],"title":"RouterSettingsResponse"},"RoutingGroup":{"properties":{"group_name":{"type":"string","title":"Group Name"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"routing_strategy":{"type":"string","title":"Routing Strategy"},"routing_strategy_args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Routing Strategy Args"},"apply_strategy_to_members":{"type":"boolean","title":"Apply Strategy To Members","default":true}},"type":"object","required":["group_name","models","routing_strategy"],"title":"RoutingGroup","description":"A group of models that share a routing strategy."},"SSOConfig":{"properties":{"google_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Id","description":"Google OAuth Client ID for SSO authentication"},"google_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Secret","description":"Google OAuth Client Secret for SSO authentication"},"microsoft_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsoft Client Id","description":"Microsoft OAuth Client ID for SSO authentication"},"microsoft_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsoft Client Secret","description":"Microsoft OAuth Client Secret for SSO authentication"},"microsoft_tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsoft Tenant","description":"Microsoft Azure Tenant ID for SSO authentication"},"generic_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Client Id","description":"Generic OAuth Client ID for SSO authentication (used for Okta and other providers)"},"generic_client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Client Secret","description":"Generic OAuth Client Secret for SSO authentication"},"generic_authorization_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Authorization Endpoint","description":"Authorization endpoint URL for generic OAuth provider"},"generic_token_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Token Endpoint","description":"Token endpoint URL for generic OAuth provider"},"generic_userinfo_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Userinfo Endpoint","description":"User info endpoint URL for generic OAuth provider"},"generic_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generic Scope","description":"Space-separated OAuth scopes requested from the generic provider, e.g. 'openid email profile'"},"proxy_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Base Url","description":"Base URL of the proxy server for SSO redirects"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email","description":"Email of the proxy admin user"},"ui_access_mode":{"anyOf":[{"$ref":"#/components/schemas/AccessControl_UI_AccessMode"},{"type":"string"},{"type":"null"}],"title":"Ui Access Mode","description":"Access mode for the UI"},"role_mappings":{"anyOf":[{"$ref":"#/components/schemas/RoleMappings"},{"type":"null"}],"description":"Configuration for mapping SSO groups to LiteLLM roles based on group claims in the SSO token"},"team_mappings":{"anyOf":[{"$ref":"#/components/schemas/TeamMappings"},{"type":"null"}],"description":"Configuration for mapping SSO JWT fields to team IDs. Takes precedence over config file settings."}},"type":"object","title":"SSOConfig","description":"Configuration for SSO environment variables and settings"},"SSOSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"},"provenance":{"additionalProperties":{"type":"string"},"type":"object","title":"Provenance"}},"type":"object","required":["values","field_schema"],"title":"SSOSettingsResponse","description":"Response model for SSO settings"},"ShadowEvalJobKeyResponse":{"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"The hashed virtual key whose traffic this entry scopes"},"max_turns":{"type":"integer","title":"Max Turns","description":"This key's sample-count ceiling: the whole budget for jobs created before max_budget existed, and the error-loop safety valve otherwise"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"This key's own USD budget for the eval's shadow and judge spend, independent of its siblings'; None on jobs created before spend budgets existed, which max_turns alone bounds"},"stopped_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stopped At","description":"When this key's slot was stamped free, whether its own budget ran out, the window closed, or an operator stopped the job; status is derived, so a spent budget reads completed even while this is still unset"},"attempt_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Attempt Count","description":"This key's sampled attempts so far, judged and errored alike, the same count the sampler budgets against max_turns; populated on list and detail responses. Frozen at stopped_at once the key is stamped, so in-flight attempts landing after a stop never reclassify it"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"This key's recorded shadow plus judge spend in USD, the same figure the sampler budgets against max_budget; populated on list and detail responses and frozen at stopped_at exactly like attempt_count"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias","description":"Alias of the shadowed key, resolved from the key row at read time; None when unset or deleted"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name","description":"Masked display name (sk-...) of the shadowed key, resolved at read time like key_alias"}},"type":"object","required":["api_key_id","max_turns"],"title":"ShadowEvalJobKeyResponse","description":"One key a job shadows, with its own budget and stop state."},"ShadowEvalJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"keys":{"items":{"$ref":"#/components/schemas/ShadowEvalJobKeyResponse"},"type":"array","minItems":1,"title":"Keys","description":"The keys whose traffic this job evaluates, and only those keys', each with its own budget"},"router_name":{"type":"string","title":"Router Name"},"direction":{"type":"string","enum":["forward","reverse"],"title":"Direction","default":"forward"},"baseline_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Model"},"judge_model":{"type":"string","title":"Judge Model"},"shadow_percentage":{"type":"number","title":"Shadow Percentage"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"stopped_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stopped By","description":"The operator who stopped the job early, recorded by the stop endpoint; 'unknown' backfilled by migration for jobs that displayed stopped when the column arrived; None when the job ended on its own. Its presence is what makes a job read stopped rather than completed"},"judged_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Judged Count","description":"Verdicts recorded; detail endpoint only"},"error_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Error Count","description":"Sampled attempts that errored; detail endpoint only"},"judge_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Judge Spend","description":"Judge cost so far; detail endpoint only"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error","description":"Most recent attempt error; detail endpoint only"},"results":{"anyOf":[{"$ref":"#/components/schemas/ShadowEvalResult"},{"type":"null"}],"description":"Stratified verdicts; detail endpoint only"},"status":{"type":"string","enum":["running","completed","stopped"],"title":"Status","description":"Three recorded facts, no history-guessing: a stop is stopped_by (the migration\nbackfills it for every job that displayed stopped when the column arrived, so the\npre-column population is closed), completion is the window passing or every key\nspending its budget, and anything else is running. The all-keys-stamped fallback\ncovers only stops written by pre-column pods during a rolling deploy.","readOnly":true}},"type":"object","required":["job_id","keys","router_name","judge_model","shadow_percentage","created_at","ends_at","status"],"title":"ShadowEvalJobResponse","description":"A shadow-eval job over one or more keys, each with its own budget and stop state;\nstatus is derived from stopped_by, the keys' stop and budget state, and ends_at,\nnever stored, so no writer anywhere can produce an inconsistent one. Aggregate\nfields are populated by the detail endpoint only and stay None on list responses."},"ShadowEvalResult":{"properties":{"by_tier":{"items":{"$ref":"#/components/schemas/ShadowEvalSlice"},"type":"array","title":"By Tier"},"by_current_model":{"items":{"$ref":"#/components/schemas/ShadowEvalSlice"},"type":"array","title":"By Current Model","description":"Sliced by the model that served the real arm: the keys' incumbent models in forward mode, and in reverse the models the router itself picked"},"by_key":{"items":{"$ref":"#/components/schemas/ShadowEvalSlice"},"type":"array","title":"By Key","description":"One slice per scoped key that has judged verdicts, grouped on the raw key hash. Keys the job scopes but has not judged a turn for yet are absent rather than reported as zero"},"overall_shadow_win_rate_pct":{"type":"number","title":"Overall Shadow Win Rate Pct"},"overall_tie_rate_pct":{"type":"number","title":"Overall Tie Rate Pct"}},"type":"object","required":["by_tier","by_current_model","by_key","overall_shadow_win_rate_pct","overall_tie_rate_pct"],"title":"ShadowEvalResult","description":"Stratified results of a shadow-eval job's verdicts so far."},"ShadowEvalSlice":{"properties":{"group":{"type":"string","title":"Group"},"turn_count":{"type":"integer","title":"Turn Count"},"real_win_rate_pct":{"type":"number","title":"Real Win Rate Pct","description":"Share of judged turns the real arm won, meaning the response the caller actually received: the key's own model in forward mode, the router's pick in reverse"},"shadow_win_rate_pct":{"type":"number","title":"Shadow Win Rate Pct","description":"Share of judged turns the shadow arm won, meaning the duplicated response nobody was served: the router's pick in forward mode, baseline_model in reverse"},"tie_rate_pct":{"type":"number","title":"Tie Rate Pct"},"avg_judge_confidence":{"type":"number","title":"Avg Judge Confidence"}},"type":"object","required":["group","turn_count","real_win_rate_pct","shadow_win_rate_pct","tie_rate_pct","avg_judge_confidence"],"title":"ShadowEvalSlice","description":"Judge outcomes for one slice of a job's verdicts (a router tier, or one of the\nmodels that served the real arm)."},"SpendAnalyticsPaginatedResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/DailySpendData"},"type":"array","title":"Results"},"metadata":{"$ref":"#/components/schemas/DailySpendMetadata"}},"type":"object","required":["results"],"title":"SpendAnalyticsPaginatedResponse"},"SpendCalculateRequest":{"properties":{"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"messages":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Messages"},"completion_response":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Response"}},"type":"object","title":"SpendCalculateRequest"},"SpendMetrics":{"properties":{"spend":{"type":"number","title":"Spend","default":0.0},"flat_cost":{"type":"number","title":"Flat Cost","default":0.0},"prompt_tokens":{"type":"integer","title":"Prompt Tokens","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","default":0},"cache_read_input_tokens":{"type":"integer","title":"Cache Read Input Tokens","default":0},"cache_creation_input_tokens":{"type":"integer","title":"Cache Creation Input Tokens","default":0},"compression_saved_tokens":{"type":"integer","title":"Compression Saved Tokens","default":0},"compression_savings_spend":{"type":"number","title":"Compression Savings Spend","default":0.0},"prompt_caching_savings_spend":{"type":"number","title":"Prompt Caching Savings Spend","default":0.0},"autorouter_savings_spend":{"type":"number","title":"Autorouter Savings Spend","default":0.0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"successful_requests":{"type":"integer","title":"Successful Requests","default":0},"failed_requests":{"type":"integer","title":"Failed Requests","default":0},"api_requests":{"type":"integer","title":"Api Requests","default":0}},"type":"object","title":"SpendMetrics"},"StandardLoggingRoutingDecision":{"properties":{"router_model_name":{"type":"string","title":"Router Model Name"},"router_type":{"type":"string","enum":["complexity","adaptive","quality"],"title":"Router Type"},"routed_model":{"type":"string","title":"Routed Model"},"cause":{"type":"string","enum":["heuristic_scorer","reasoning_override","llm_classifier","classifier_plugin","classifier_fallback","default_model_fallback","literal_keyword_match","semantic_keyword_match","plan_mode","session_affinity_pin","session_affinity_escalation","default_fallback","keyword","quality_tier","bandit"],"title":"Cause"},"tier":{"type":"string","title":"Tier"},"tier_label":{"type":"string","title":"Tier Label"},"request_type":{"type":"string","title":"Request Type"},"score":{"type":"number","title":"Score"},"signals":{"items":{"type":"string"},"type":"array","title":"Signals"},"matched_keyword":{"type":"string","title":"Matched Keyword"},"escalation_keyword":{"type":"string","title":"Escalation Keyword"},"classifier_model":{"type":"string","title":"Classifier Model"},"classifier_cost":{"type":"number","title":"Classifier Cost"},"escalated":{"type":"boolean","title":"Escalated"},"tier_boundaries":{"$ref":"#/components/schemas/StandardLoggingRoutingDecisionTierBoundaries"},"reasoning_override_min_score":{"type":"number","title":"Reasoning Override Min Score"},"conversation_continuing":{"type":"boolean","title":"Conversation Continuing"},"savings_baseline_model":{"type":"string","title":"Savings Baseline Model"},"savings_baseline_deployment_id":{"type":"string","title":"Savings Baseline Deployment Id"},"tier_litellm_params":{"additionalProperties":true,"type":"object","title":"Tier Litellm Params"}},"type":"object","title":"StandardLoggingRoutingDecision","description":"Per-request provenance for a pre-routing strategy (auto-router) decision."},"StandardLoggingRoutingDecisionTierBoundaries":{"properties":{"simple_medium":{"type":"number","title":"Simple Medium"},"medium_complex":{"type":"number","title":"Medium Complex"},"complex_reasoning":{"type":"number","title":"Complex Reasoning"}},"type":"object","required":["simple_medium","medium_complex","complex_reasoning"],"title":"StandardLoggingRoutingDecisionTierBoundaries","description":"Snapshot of the complexity scorer's tier boundaries at decision time, so a\nhistorical spend log row stays explainable after the router config changes."},"StartShadowEvalRequest":{"properties":{"api_key_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Api Key Ids","description":"The hashed virtual keys whose traffic will be shadowed. Shadow evaluation runs ONLY on these keys' traffic; requests made with any other key are not sampled. Each key carries its own max_budget spend budget, so one key exhausting its budget leaves the others sampling. At most 100 keys per job, which also bounds every read the job's endpoints make."},"router_name":{"type":"string","title":"Router Name","description":"The auto-router under evaluation, in either direction"},"direction":{"type":"string","enum":["forward","reverse"],"title":"Direction","description":"forward answers 'should this key adopt router_name': it samples the requests the key did NOT route through the router and duplicates them through it. reverse answers 'is the router still worth it for a key already on it': it samples the requests the router did serve and duplicates them against baseline_model. The response the caller received is always the real arm","default":"forward"},"baseline_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Model","description":"Required when direction is reverse and rejected otherwise: the fixed model the router's own responses are judged against. Must be a plain model rather than another auto-router"},"shadow_percentage":{"type":"number","maximum":100.0,"minimum":0.1,"title":"Shadow Percentage","description":"Percentage of the key's requests to duplicate through the router"},"judge_model":{"type":"string","title":"Judge Model","description":"Model used to blindly judge real vs. shadow responses. The judge only compares two answers, so a mid-tier model (Claude Sonnet or GPT-4o class) is the sweet spot: small/nano-class models produce unreliable or malformed verdicts, while frontier reasoning models add cost without changing outcomes.","default":"anthropic/claude-sonnet-5"},"duration_days":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Duration Days","description":"How many days the job samples traffic before completing on its own","default":7},"max_budget":{"type":"number","maximum":10000.0,"minimum":0.01,"title":"Max Budget","description":"Per-key USD budget for the eval's own overhead, the shadow-arm and judge calls, priced with the same figures the spend pipeline bills. EACH scoped key samples until its recorded eval spend reaches this, so a job over N keys spends at most about N times max_budget; in-flight samples can overshoot the cap by one sampling cache window","default":10.0}},"type":"object","required":["api_key_ids","router_name","shadow_percentage"],"title":"StartShadowEvalRequest","description":"Start duplicating one or more keys' traffic for blind comparison against an auto-router."},"SuccessfulKeyUpdate":{"properties":{"key":{"type":"string","title":"Key"},"key_info":{"additionalProperties":true,"type":"object","title":"Key Info"}},"type":"object","required":["key","key_info"],"title":"SuccessfulKeyUpdate","description":"Successfully updated key with its updated information"},"SupportedEndpoint":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"endpoint":{"type":"string","title":"Endpoint"},"providers":{"items":{"$ref":"#/components/schemas/EndpointProvider"},"type":"array","title":"Providers"}},"type":"object","required":["key","label","endpoint","providers"],"title":"SupportedEndpoint"},"SupportedEndpointsResponse":{"properties":{"endpoints":{"items":{"$ref":"#/components/schemas/SupportedEndpoint"},"type":"array","title":"Endpoints"}},"type":"object","required":["endpoints"],"title":"SupportedEndpointsResponse"},"TagActiveUsersResponse":{"properties":{"tag":{"type":"string","title":"Tag"},"active_users":{"type":"integer","title":"Active Users"},"date":{"type":"string","title":"Date"},"period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["tag","active_users","date"],"title":"TagActiveUsersResponse","description":"Response for tag active users metrics"},"TagDeleteRequest":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"TagDeleteRequest"},"TagInfoRequest":{"properties":{"names":{"items":{"type":"string"},"type":"array","title":"Names"}},"type":"object","required":["names"],"title":"TagInfoRequest"},"TagNewRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"},"model_info":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Model Info"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"}},"type":"object","required":["name"],"title":"TagNewRequest"},"TagSummaryMetrics":{"properties":{"tag":{"type":"string","title":"Tag"},"unique_users":{"type":"integer","title":"Unique Users"},"total_requests":{"type":"integer","title":"Total Requests"},"successful_requests":{"type":"integer","title":"Successful Requests"},"failed_requests":{"type":"integer","title":"Failed Requests"},"total_tokens":{"type":"integer","title":"Total Tokens"},"total_spend":{"type":"number","title":"Total Spend"}},"type":"object","required":["tag","unique_users","total_requests","successful_requests","failed_requests","total_tokens","total_spend"],"title":"TagSummaryMetrics","description":"Summary metrics for a tag"},"TagSummaryResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/TagSummaryMetrics"},"type":"array","title":"Results"}},"type":"object","required":["results"],"title":"TagSummaryResponse","description":"Response for tag summary analytics"},"TagUpdateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"},"model_info":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Model Info"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"}},"type":"object","required":["name"],"title":"TagUpdateRequest"},"TeamAddMemberResponse":{"properties":{"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_id":{"type":"string","title":"Team Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"admins":{"items":{},"type":"array","title":"Admins","default":[]},"members":{"items":{},"type":"array","title":"Members","default":[]},"members_with_roles":{"items":{"$ref":"#/components/schemas/Member"},"type":"array","title":"Members With Roles","default":[]},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"models":{"items":{},"type":"array","title":"Models","default":[]},"blocked":{"type":"boolean","title":"Blocked","default":false},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"model_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Id"},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"allow_team_guardrail_config":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Team Guardrail Config","default":false},"litellm_model_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ModelTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_users":{"items":{"$ref":"#/components/schemas/LiteLLM_UserTable"},"type":"array","title":"Updated Users"},"updated_team_memberships":{"items":{"$ref":"#/components/schemas/LiteLLM_TeamMembership"},"type":"array","title":"Updated Team Memberships"}},"type":"object","required":["team_id","updated_users","updated_team_memberships"],"title":"TeamAddMemberResponse"},"TeamCallbackDeleteResponse":{"properties":{"status":{"type":"string","const":"success","title":"Status"},"message":{"type":"string","title":"Message"},"data":{"$ref":"#/components/schemas/TeamCallbackDeleteResponseData"}},"type":"object","required":["status","message","data"],"title":"TeamCallbackDeleteResponse"},"TeamCallbackDeleteResponseData":{"properties":{"team_id":{"type":"string","title":"Team Id"},"success_callbacks":{"items":{"type":"string"},"type":"array","title":"Success Callbacks"},"failure_callbacks":{"items":{"type":"string"},"type":"array","title":"Failure Callbacks"}},"type":"object","required":["team_id","success_callbacks","failure_callbacks"],"title":"TeamCallbackDeleteResponseData"},"TeamListItem":{"properties":{"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_id":{"type":"string","title":"Team Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"admins":{"items":{},"type":"array","title":"Admins","default":[]},"members":{"items":{},"type":"array","title":"Members","default":[]},"members_with_roles":{"items":{"$ref":"#/components/schemas/Member"},"type":"array","title":"Members With Roles","default":[]},"team_member_permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Team Member Permissions"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"models":{"items":{},"type":"array","title":"Models","default":[]},"blocked":{"type":"boolean","title":"Blocked","default":false},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"model_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Id"},"model_spend":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Spend","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"allow_team_guardrail_config":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Team Guardrail Config","default":false},"litellm_model_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ModelTable"},{"type":"null"}]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"members_count":{"type":"integer","title":"Members Count","default":0},"keys_count":{"type":"integer","title":"Keys Count","default":0},"access_group_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Models"},"access_group_mcp_server_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Mcp Server Ids"},"access_group_agent_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Agent Ids"}},"type":"object","required":["team_id"],"title":"TeamListItem","description":"A team item in the paginated list response, enriched with computed fields."},"TeamListResponse":{"properties":{"teams":{"items":{"anyOf":[{"$ref":"#/components/schemas/TeamListItem"},{"$ref":"#/components/schemas/LiteLLM_TeamTable"},{"$ref":"#/components/schemas/LiteLLM_DeletedTeamTable"}]},"type":"array","title":"Teams"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["teams","total","page","page_size","total_pages"],"title":"TeamListResponse","description":"Response to get the list of teams"},"TeamMappings":{"properties":{"team_ids_jwt_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Ids Jwt Field","description":"The field name in the SSO/JWT token that contains the team IDs array (e.g., 'groups', 'teams'). Supports dot notation for nested fields."}},"type":"object","title":"TeamMappings","description":"Configuration for mapping SSO JWT fields to team IDs.\n\nThis allows configuring team_ids_jwt_field via the database instead of\nrequiring config file changes and restarts."},"TeamMemberAddRequest":{"properties":{"member":{"anyOf":[{"items":{"$ref":"#/components/schemas/Member"},"type":"array"},{"$ref":"#/components/schemas/Member"}],"title":"Member","description":"Member object or list of member objects to add. Each member must include either user_id or user_email, and a role"},"team_id":{"type":"string","title":"Team Id","description":"The ID of the team to add the member to"},"max_budget_in_team":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Team","description":"Maximum budget allocated to this user within the team. If not set, user has unlimited budget within team limits"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Duration after which this team member's budget resets (e.g. '1h', '24h', '7d', '30d'). If not set, the budget never resets."},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models","description":"List of models this team member can access. If not set, inherits the team's default_team_member_models or all team models."}},"type":"object","required":["member","team_id"],"title":"TeamMemberAddRequest","description":"Request body for adding members to a team.\n\nExample:\n```json\n{\n    \"team_id\": \"45e3e396-ee08-4a61-a88e-16b3ce7e0849\",\n    \"member\": {\n        \"role\": \"user\",\n        \"user_id\": \"user123\"\n    },\n    \"max_budget_in_team\": 100.0\n}\n```"},"TeamMemberAddResult":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"success":{"type":"boolean","title":"Success"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"updated_user":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Updated User"},"updated_team_membership":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Updated Team Membership"}},"type":"object","required":["success"],"title":"TeamMemberAddResult","description":"Result of a single team member add operation"},"TeamMemberDeleteRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"team_id":{"type":"string","title":"Team Id"}},"type":"object","required":["team_id"],"title":"TeamMemberDeleteRequest"},"TeamMemberInfoResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"team_id":{"type":"string","title":"Team Id"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","default":0.0},"total_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Spend","default":0.0},"litellm_budget_table":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_BudgetTableFull"},{"$ref":"#/components/schemas/LiteLLM_BudgetTable"},{"type":"null"}],"title":"Litellm Budget Table"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"}},"type":"object","required":["user_id","team_id"],"title":"TeamMemberInfoResponse","description":"Response for GET /team/{team_id}/members/me — caller's own membership row."},"TeamMemberUpdateRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"team_id":{"type":"string","title":"Team Id"},"max_budget_in_team":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Team"},"role":{"anyOf":[{"type":"string","enum":["admin","user"]},{"type":"null"}],"title":"Role"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit","description":"Tokens per minute limit for this team member"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit","description":"Requests per minute limit for this team member"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Duration after which this team member's budget resets (e.g. '1h', '24h', '7d', '30d'). If not set, the budget never resets."},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models","description":"List of models this team member can access. Pass an empty list to remove per-member model restrictions."}},"type":"object","required":["team_id"],"title":"TeamMemberUpdateRequest"},"TeamMemberUpdateResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"team_id":{"type":"string","title":"Team Id"},"max_budget_in_team":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget In Team"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"}},"type":"object","required":["user_id","team_id"],"title":"TeamMemberUpdateResponse"},"TeamMetadataFieldSchema":{"properties":{"key":{"type":"string","minLength":1,"title":"Key"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"additionalProperties":false,"type":"object","required":["key"],"title":"TeamMetadataFieldSchema","description":"One declared team metadata field from ``general_settings.team_metadata_schema``.\n\nAdvisory only: the UI uses it to prepopulate the team metadata form.\nEnforcement stays with ``custom_team_metadata_validate``."},"TeamMetadataSchemaResponse":{"properties":{"fields":{"items":{"$ref":"#/components/schemas/TeamMetadataFieldSchema"},"type":"array","title":"Fields"}},"type":"object","required":["fields"],"title":"TeamMetadataSchemaResponse","description":"Response for GET /team/metadata_schema; ``fields`` is empty when no schema is configured."},"TeamModelAddRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"models":{"items":{"type":"string"},"type":"array","title":"Models"}},"type":"object","required":["team_id","models"],"title":"TeamModelAddRequest","description":"Request to add models to a team"},"TeamModelDeleteRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"models":{"items":{"type":"string"},"type":"array","title":"Models"}},"type":"object","required":["team_id","models"],"title":"TeamModelDeleteRequest","description":"Request to delete models from a team"},"TierDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Tier name; becomes a value the LLM classifier can return and a key of `tiers`"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"What belongs in this tier; rendered as this tier's bullet in the classifier rubric. Required unless the name is a built-in tier (SIMPLE/MEDIUM/COMPLEX/REASONING), which inherits the built-in criteria when omitted"}},"type":"object","required":["name"],"title":"TierDefinition","description":"An operator-defined tier: the name the LLM classifier must return and its rubric description."},"TokenCountDetailsResponse":{"properties":{"totalTokens":{"type":"integer","title":"Totaltokens"},"promptTokensDetails":{"items":{"$ref":"#/components/schemas/PromptTokensDetails"},"type":"array","title":"Prompttokensdetails"}},"type":"object","required":["totalTokens","promptTokensDetails"],"title":"TokenCountDetailsResponse","description":"Response structure for token count details with modality breakdown.\n\nExample:\n    {'totalTokens': 12, 'promptTokensDetails': [{'modality': 'TEXT', 'tokenCount': 12}]}"},"TokenCountRequest":{"properties":{"model":{"type":"string","title":"Model"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Messages"},"contents":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Contents"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tools"},"system":{"anyOf":[{},{"type":"null"}],"title":"System"}},"type":"object","required":["model"],"title":"TokenCountRequest"},"TokenCountResponse":{"properties":{"total_tokens":{"type":"integer","title":"Total Tokens"},"request_model":{"type":"string","title":"Request Model"},"model_used":{"type":"string","title":"Model Used"},"tokenizer_type":{"type":"string","title":"Tokenizer Type"},"original_response":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Original Response"},"error":{"type":"boolean","title":"Error","default":false},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"}},"type":"object","required":["total_tokens","request_model","model_used","tokenizer_type"],"title":"TokenCountResponse"},"TopLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"}},"additionalProperties":true,"type":"object","required":["token","logprob"],"title":"TopLogprob"},"TransformRequestBody":{"properties":{"call_type":{"$ref":"#/components/schemas/CallTypes"},"request_body":{"additionalProperties":true,"type":"object","title":"Request Body"}},"type":"object","required":["call_type","request_body"],"title":"TransformRequestBody"},"UISettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"}},"type":"object","required":["values","field_schema"],"title":"UISettingsResponse","description":"Response model for UI settings"},"UIThemeConfig":{"properties":{"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"URL or path to custom logo image. Can be a local file path or HTTP/HTTPS URL"},"logo_url_dark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url Dark","description":"URL or path to a custom logo image for dark mode. Can be a local file path or HTTP/HTTPS URL. Leave unset to reuse logo_url in dark mode"},"favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon Url","description":"URL to custom favicon image. Must be an HTTP/HTTPS URL to a .ico, .png, or .svg file"}},"type":"object","title":"UIThemeConfig","description":"Configuration for UI theme customization"},"UIThemeSettingsResponse":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"field_schema":{"additionalProperties":true,"type":"object","title":"Field Schema"}},"type":"object","required":["values","field_schema"],"title":"UIThemeSettingsResponse","description":"Response model for UI theme settings"},"UiDiscoveryEndpoints":{"properties":{"server_root_path":{"type":"string","title":"Server Root Path"},"proxy_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Base Url"},"auto_redirect_to_sso":{"type":"boolean","title":"Auto Redirect To Sso"},"admin_ui_disabled":{"type":"boolean","title":"Admin Ui Disabled"},"sso_configured":{"type":"boolean","title":"Sso Configured"},"hide_default_credentials_hint":{"type":"boolean","title":"Hide Default Credentials Hint","default":false},"is_control_plane":{"type":"boolean","title":"Is Control Plane","default":false},"workers":{"items":{"$ref":"#/components/schemas/WorkerRegistryEntry"},"type":"array","title":"Workers","default":[]}},"type":"object","required":["server_root_path","proxy_base_url","auto_redirect_to_sso","admin_ui_disabled","sso_configured"],"title":"UiDiscoveryEndpoints"},"UnblockUsersResponse":{"properties":{"blocked_users":{"items":{"type":"string"},"type":"array","title":"Blocked Users","description":"User IDs that remain blocked after this unblock call"}},"type":"object","required":["blocked_users"],"title":"UnblockUsersResponse"},"UpdateCustomerRequest":{"properties":{"user_id":{"type":"string","title":"User Id"},"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"blocked":{"type":"boolean","title":"Blocked","default":false},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"allowed_model_region":{"anyOf":[{"type":"string","enum":["eu","us"]},{"type":"null"}],"title":"Allowed Model Region"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]}},"type":"object","required":["user_id"],"title":"UpdateCustomerRequest","description":"Update a Customer, use this to update customer budgets etc"},"UpdateKeyRequest":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"enable_prompt_caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Caching"},"throttle_on_budget_exceeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Throttle On Budget Exceeded"},"enforced_params":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enforced Params"},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"rpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Rpm Limit Type"},"tpm_limit_type":{"anyOf":[{"type":"string","enum":["guaranteed_throughput","best_effort_throughput","dynamic"]},{"type":"null"}],"title":"Tpm Limit Type"},"router_settings":{"anyOf":[{"$ref":"#/components/schemas/UpdateRouterConfig"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"temp_budget_increase":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temp Budget Increase"},"temp_budget_expiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Temp Budget Expiry"},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate"},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"}},"type":"object","title":"UpdateKeyRequest"},"UpdateModelGroupRequest":{"properties":{"model_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Names"},"model_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Ids"}},"type":"object","title":"UpdateModelGroupRequest"},"UpdateProjectRequest":{"properties":{"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"allowed_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Models"},"project_id":{"type":"string","title":"Project Id"},"project_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Alias"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"model_itpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Itpm Limit"},"model_otpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Otpm Limit"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]}},"type":"object","required":["project_id"],"title":"UpdateProjectRequest","description":"Request model for POST /project/update"},"UpdatePublicModelGroupsRequest":{"properties":{"model_groups":{"items":{"type":"string"},"type":"array","title":"Model Groups","description":"List of model group names to make public"}},"additionalProperties":false,"type":"object","required":["model_groups"],"title":"UpdatePublicModelGroupsRequest","description":"Request model for updating public model groups"},"UpdateRouterConfig":{"properties":{"routing_strategy_args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Routing Strategy Args"},"routing_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Routing Strategy"},"routing_groups":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoutingGroup"},"type":"array"},{"type":"null"}],"title":"Routing Groups"},"retry_policy":{"anyOf":[{"$ref":"#/components/schemas/RetryPolicy"},{"type":"null"}]},"model_group_retry_policy":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/RetryPolicy"},"type":"object"},{"type":"null"}],"title":"Model Group Retry Policy"},"model_group_affinity_config":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Model Group Affinity Config"},"allowed_fails":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allowed Fails"},"cooldown_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cooldown Time"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Retries"},"timeout":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeout"},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"retry_after":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retry After"},"fallbacks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Fallbacks"},"context_window_fallbacks":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Context Window Fallbacks"},"model_group_alias":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"object"},{"type":"null"}],"title":"Model Group Alias","default":{}},"enable_tag_filtering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Tag Filtering"},"tag_routing_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag Routing Prefix"}},"type":"object","title":"UpdateRouterConfig","description":"Set of params that you can modify via `router.update_settings()`."},"UpdateTeamMemberPermissionsRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"team_member_permissions":{"items":{"type":"string"},"type":"array","title":"Team Member Permissions"}},"type":"object","required":["team_id","team_member_permissions"],"title":"UpdateTeamMemberPermissionsRequest","description":"Request to update the team member permissions for a team"},"UpdateTeamRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"tags":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tags"},"model_aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Aliases"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"disable_global_guardrails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Global Guardrails"},"team_member_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Member Budget"},"team_member_budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Budget Duration"},"team_member_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Rpm Limit"},"team_member_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Tpm Limit"},"team_member_key_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Member Key Duration"},"allowed_passthrough_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Passthrough Routes"},"secret_manager_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Secret Manager Settings"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"model_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"default_estimated_output_tokens":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Default Estimated Output Tokens"},"default_estimated_output_tokens_per_model":{"anyOf":[{"additionalProperties":{"type":"integer","exclusiveMinimum":0.0},"type":"object"},{"type":"null"}],"title":"Default Estimated Output Tokens Per Model"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"allowed_vector_store_indexes":{"anyOf":[{"items":{"$ref":"#/components/schemas/AllowedVectorStoreIndexItem"},"type":"array"},{"type":"null"}],"title":"Allowed Vector Store Indexes"},"enforced_batch_output_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced Batch Output Expires After"},"enforced_file_expires_after":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Enforced File Expires After"},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"default_team_member_models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Team Member Models"}},"type":"object","required":["team_id"],"title":"UpdateTeamRequest","description":"UpdateTeamRequest, used by /team/update when you need to update a team\n\nteam_id: str\nteam_alias: Optional[str] = None\norganization_id: Optional[str] = None\nmetadata: Optional[dict] = None\ntpm_limit: Optional[int] = None\nrpm_limit: Optional[int] = None\nmax_budget: Optional[float] = None\nmodels: Optional[list] = None\nblocked: Optional[bool] = None\nbudget_duration: Optional[str] = None\nguardrails: Optional[List[str]] = None\npolicies: Optional[List[str]] = None"},"UpdateUsefulLinksRequest":{"properties":{"useful_links":{"additionalProperties":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"object","title":"Useful Links"}},"type":"object","required":["useful_links"],"title":"UpdateUsefulLinksRequest"},"UpdateUserBannerResponse":{"properties":{"message":{"type":"string","title":"Message"},"banner":{"$ref":"#/components/schemas/UserBanner"}},"type":"object","required":["message","banner"],"title":"UpdateUserBannerResponse"},"UpdateUserRequest":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"user_role":{"anyOf":[{"type":"string","enum":["proxy_admin","proxy_admin_viewer","internal_user","internal_user_viewer"]},{"type":"null"}],"title":"User Role"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"}},"type":"object","title":"UpdateUserRequest"},"UpdateUserRequestNoUserIDorEmail":{"properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"models":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Models","default":[]},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/BudgetLimitEntry"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","default":{}},"permissions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget","default":{}},"budget_fallbacks":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Budget Fallbacks"},"model_rpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Rpm Limit"},"model_tpm_limit":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Tpm Limit"},"mcp_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Mcp Rpm Limit"},"tag_rpm_limit":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tag Rpm Limit"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Guardrails"},"policies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Policies"},"prompts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompts"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Aliases","default":{}},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionBase"},{"type":"null"}]},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"user_role":{"anyOf":[{"type":"string","enum":["proxy_admin","proxy_admin_viewer","internal_user","internal_user_viewer"]},{"type":"null"}],"title":"User Role"}},"type":"object","title":"UpdateUserRequestNoUserIDorEmail"},"UserAPIKeyAuth":{"properties":{"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Name"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"spend":{"type":"number","title":"Spend","default":0.0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"expires":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires"},"models":{"items":{},"type":"array","title":"Models","default":[]},"aliases":{"additionalProperties":true,"type":"object","title":"Aliases","default":{}},"config":{"additionalProperties":true,"type":"object","title":"Config","default":{}},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"max_parallel_requests":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Parallel Requests"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"allowed_cache_controls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Cache Controls","default":[]},"allowed_routes":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Allowed Routes","default":[]},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type"},"permissions":{"additionalProperties":true,"type":"object","title":"Permissions","default":{}},"model_spend":{"additionalProperties":true,"type":"object","title":"Model Spend","default":{}},"model_max_budget":{"additionalProperties":true,"type":"object","title":"Model Max Budget","default":{}},"budget_fallbacks":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Budget Fallbacks","default":{}},"soft_budget_cooldown":{"type":"boolean","title":"Soft Budget Cooldown","default":false},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"},"litellm_budget_table":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Budget Table"},"budget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Id"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"settings_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settings Updated At"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Permission Id"},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"access_group_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Group Ids"},"rotation_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rotation Count","default":0},"auto_rotate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Rotate","default":false},"rotation_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rotation Interval"},"last_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Rotation At"},"key_rotation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Key Rotation At"},"router_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Router Settings"},"budget_limits":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Budget Limits"},"team_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Spend"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Alias"},"team_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Tpm Limit"},"team_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Rpm Limit"},"team_max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Max Budget"},"team_soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Soft Budget"},"team_models":{"items":{},"type":"array","title":"Team Models","default":[]},"team_blocked":{"type":"boolean","title":"Team Blocked","default":false},"soft_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Soft Budget"},"team_model_aliases":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Team Model Aliases"},"team_member":{"anyOf":[{"$ref":"#/components/schemas/Member"},{"type":"null"}]},"team_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Team Metadata"},"team_object_permission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Object Permission Id"},"team_member_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Team Member Spend"},"team_member_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Tpm Limit"},"team_member_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Member Rpm Limit"},"end_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End User Id"},"end_user_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End User Tpm Limit"},"end_user_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End User Rpm Limit"},"end_user_max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End User Max Budget"},"end_user_model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"End User Model Max Budget"},"organization_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Alias"},"organization_max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organization Max Budget"},"organization_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Tpm Limit"},"organization_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Rpm Limit"},"organization_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Organization Metadata"},"project_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Alias"},"project_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Project Metadata"},"last_refreshed_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Refreshed At"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"user_role":{"anyOf":[{"$ref":"#/components/schemas/LitellmUserRoles"},{"type":"null"}]},"allowed_model_region":{"anyOf":[{"type":"string","enum":["eu","us"]},{"type":"null"}],"title":"Allowed Model Region"},"parent_otel_span":{"anyOf":[{},{"type":"null"}],"title":"Parent Otel Span"},"rpm_limit_per_model":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Rpm Limit Per Model"},"tpm_limit_per_model":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Tpm Limit Per Model"},"user_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Tpm Limit"},"user_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Rpm Limit"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"User Spend"},"user_max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"User Max Budget"},"user_model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"User Model Max Budget"},"request_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Route"},"is_session_token":{"type":"boolean","title":"Is Session Token","default":false},"user":{"anyOf":[{},{"type":"null"}],"title":"User"},"created_by_user":{"anyOf":[{},{"type":"null"}],"title":"Created By User"},"end_user_object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"team_object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"jwt_claims":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Jwt Claims"}},"type":"object","title":"UserAPIKeyAuth","description":"Return the row in the db"},"UserBanner":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"If true, the banner is shown to all authenticated dashboard users.","default":false},"message":{"type":"string","maxLength":4000,"title":"Message","description":"Banner text shown to dashboard users. Markdown is supported.","default":""},"severity":{"type":"string","enum":["info","warning","error"],"title":"Severity","description":"Visual style of the banner.","default":"info"},"revision":{"type":"string","title":"Revision","description":"Server-stamped opaque publish identity; a fresh value is generated on every update so clients re-surface dismissed banners on republish.","default":""}},"type":"object","title":"UserBanner"},"UserBannerUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"If true, the banner is shown to all authenticated dashboard users.","default":false},"message":{"type":"string","maxLength":4000,"title":"Message","description":"Banner text shown to dashboard users. Markdown is supported.","default":""},"severity":{"type":"string","enum":["info","warning","error"],"title":"Severity","description":"Visual style of the banner.","default":"info"}},"type":"object","title":"UserBannerUpdate"},"UserInfoResponse":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"$ref":"#/components/schemas/BaseModel"},{"type":"null"}],"title":"User Info"},"keys":{"items":{},"type":"array","title":"Keys"},"teams":{"items":{},"type":"array","title":"Teams"}},"type":"object","required":["user_id","user_info","keys","teams"],"title":"UserInfoResponse"},"UserInfoV2Response":{"properties":{"user_id":{"type":"string","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Alias"},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"spend":{"type":"number","title":"Spend","default":0.0},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"models":{"items":{"type":"string"},"type":"array","title":"Models","default":[]},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"budget_reset_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Budget Reset At"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"sso_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sso User Id"},"teams":{"items":{"type":"string"},"type":"array","title":"Teams","default":[]},"object_permission":{"anyOf":[{"$ref":"#/components/schemas/LiteLLM_ObjectPermissionTable"},{"type":"null"}]},"model_max_budget":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget"},"model_max_budget_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Max Budget Usage"}},"type":"object","required":["user_id"],"title":"UserInfoV2Response","description":"Response model for GET /v2/user/info\n\nReturns ONLY the user object - no keys, no teams objects.\nThis is a lightweight alternative to UserInfoResponse."},"UserListResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/LiteLLM_UserTableWithKeyCount"},"type":"array","title":"Users"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["users","total","page","page_size","total_pages"],"title":"UserListResponse","description":"Response model for the user list endpoint"},"UserUpdateResult":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"success":{"type":"boolean","title":"Success"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"updated_user":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Updated User"}},"type":"object","required":["success"],"title":"UserUpdateResult","description":"Result of a single user update operation"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkerRegistryEntry":{"properties":{"worker_id":{"type":"string","title":"Worker Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"}},"type":"object","required":["worker_id","name","url"],"title":"WorkerRegistryEntry"},"WorkflowEventCreateRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"},"step_name":{"type":"string","title":"Step Name"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"}},"type":"object","required":["event_type","step_name"],"title":"WorkflowEventCreateRequest"},"WorkflowMessageCreateRequest":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["role","content"],"title":"WorkflowMessageCreateRequest"},"WorkflowRunCreateRequest":{"properties":{"workflow_type":{"type":"string","title":"Workflow Type"},"input":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Input"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["workflow_type"],"title":"WorkflowRunCreateRequest"},"WorkflowRunUpdateRequest":{"properties":{"status":{"anyOf":[{"type":"string","enum":["pending","running","paused","completed","failed"]},{"type":"null"}],"title":"Status"},"output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Output"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","title":"WorkflowRunUpdateRequest"},"updateDeployment":{"properties":{"model_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Name"},"litellm_params":{"anyOf":[{"$ref":"#/components/schemas/updateLiteLLMParams"},{"type":"null"}]},"model_info":{"anyOf":[{"$ref":"#/components/schemas/ModelInfo"},{"type":"null"}]},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocked"}},"type":"object","title":"updateDeployment"},"updateLiteLLMParams":{"properties":{"input_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token"},"output_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token"},"input_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character"},"output_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character"},"cache_read_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost"},"cache_creation_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost"},"tiered_pricing":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tiered Pricing"},"input_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Second"},"output_cost_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Second"},"output_cost_per_second_1080p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Second 1080P"},"input_cost_per_pixel":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Pixel"},"output_cost_per_pixel":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Pixel"},"input_cost_per_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Flex"},"input_cost_per_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Priority"},"input_cost_per_token_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Ultrafast"},"cache_creation_input_token_cost_above_1hr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 1Hr"},"cache_creation_input_token_cost_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 200K Tokens"},"cache_creation_input_token_cost_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens"},"cache_creation_input_token_cost_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens Priority"},"cache_creation_input_token_cost_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Above 272K Tokens Flex"},"cache_creation_input_token_cost_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Flex"},"cache_creation_input_token_cost_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Priority"},"cache_creation_input_token_cost_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost Ultrafast"},"cache_creation_input_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Audio Token Cost"},"cache_read_input_token_cost_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Flex"},"cache_read_input_token_cost_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Priority"},"cache_read_input_token_cost_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Ultrafast"},"cache_read_input_token_cost_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 200K Tokens"},"cache_read_input_token_cost_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 200K Tokens Priority"},"cache_read_input_token_cost_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens Priority"},"cache_read_input_token_cost_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens Flex"},"cache_read_input_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Audio Token Cost"},"input_cost_per_character_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character Above 128K Tokens"},"input_cost_per_audio_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Token"},"input_cost_per_token_cache_hit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Cache Hit"},"input_cost_per_token_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 128K Tokens"},"input_cost_per_token_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 200K Tokens"},"input_cost_per_token_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 200K Tokens Priority"},"input_cost_per_token_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens Priority"},"input_cost_per_token_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens Flex"},"input_cost_per_query":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Query"},"input_cost_per_image":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image"},"input_cost_per_image_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image Above 128K Tokens"},"input_cost_per_audio_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Per Second"},"input_cost_per_audio_per_second_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Audio Per Second Above 128K Tokens"},"input_cost_per_video_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second"},"input_cost_per_video_per_second_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 128K Tokens"},"input_cost_per_video_per_second_above_15s_interval":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 15S Interval"},"input_cost_per_video_per_second_above_8s_interval":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Per Second Above 8S Interval"},"input_cost_per_token_batches":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Batches"},"output_cost_per_token_batches":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Batches"},"output_cost_per_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Flex"},"output_cost_per_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Priority"},"output_cost_per_token_ultrafast":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Ultrafast"},"output_cost_per_audio_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Audio Token"},"output_cost_per_token_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 128K Tokens"},"output_cost_per_token_above_200k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 200K Tokens"},"output_cost_per_token_above_200k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 200K Tokens Priority"},"output_cost_per_token_above_272k_tokens_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens Priority"},"output_cost_per_token_above_272k_tokens_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens Flex"},"output_cost_per_character_above_128k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character Above 128K Tokens"},"output_cost_per_image":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Image"},"output_cost_per_image_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Image Token"},"output_cost_per_video_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Video Token"},"output_cost_per_reasoning_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token"},"output_cost_per_reasoning_token_flex":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token Flex"},"output_cost_per_reasoning_token_priority":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token Priority"},"output_cost_per_video_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Video Per Second"},"output_cost_per_audio_per_second":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Audio Per Second"},"search_context_cost_per_query":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Search Context Cost Per Query"},"citation_cost_per_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Citation Cost Per Token"},"cache_read_input_token_cost_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 272K Tokens"},"cache_read_input_token_cost_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Token Cost Above 512K Tokens"},"input_cost_per_image_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Image Token"},"input_cost_per_video_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Video Token"},"input_cost_per_token_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 272K Tokens"},"input_cost_per_token_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Token Above 512K Tokens"},"output_cost_per_token_above_272k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 272K Tokens"},"output_cost_per_token_above_512k_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Token Above 512K Tokens"},"output_vector_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Vector Size"},"ocr_cost_per_page":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ocr Cost Per Page"},"ocr_cost_per_credit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ocr Cost Per Credit"},"annotation_cost_per_page":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annotation Cost Per Page"},"regional_processing_uplift_multiplier_eu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Processing Uplift Multiplier Eu"},"regional_processing_uplift_multiplier_us":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Processing Uplift Multiplier Us"},"regional_endpoint_uplift_multiplier":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regional Endpoint Uplift Multiplier"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Version"},"azure_ad_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Azure Ad Token"},"vertex_project":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertex Project"},"vertex_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertex Location"},"vertex_credentials":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vertex Credentials"},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name"},"gcs_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gcs Bucket Name"},"aws_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Access Key Id"},"aws_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Secret Access Key"},"aws_session_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Token"},"aws_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Region Name"},"aws_session_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Name"},"aws_profile_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Profile Name"},"aws_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Role Name"},"aws_web_identity_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Web Identity Token"},"aws_sts_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Sts Endpoint"},"aws_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws External Id"},"aws_bedrock_runtime_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Bedrock Runtime Endpoint"},"aws_bedrock_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Bedrock Project Id"},"s3_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Bucket Name"},"s3_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Region Name"},"s3_encryption_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Encryption Key Id"},"aws_batch_role_arn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Batch Role Arn"},"s3_output_bucket_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Output Bucket Name"},"bedrock_tags":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Bedrock Tags"},"watsonx_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watsonx Region Name"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"},"tpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm"},"rpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm"},"itpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Itpm"},"otpm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Otpm"},"timeout":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Timeout"},"stream_timeout":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Stream Timeout"},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"configurable_clientside_auth_params":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ConfigurableClientsideParamsCustomAuth-Input"}]},"type":"array"},{"type":"null"}],"title":"Configurable Clientside Auth Params"},"litellm_credential_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Credential Name"},"litellm_trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Trace Id"},"max_file_size_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max File Size Mb"},"default_api_key_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Api Key Tpm Limit"},"default_api_key_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Api Key Rpm Limit"},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration"},"keepalive_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Keepalive Seconds"},"allow_client_keepalive_override":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Client Keepalive Override","default":false},"use_in_pass_through":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use In Pass Through","default":false},"use_litellm_proxy":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Litellm Proxy","default":false},"use_chat_completions_api":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Chat Completions Api"},"use_xai_oauth":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Xai Oauth","description":"Use stored xAI OAuth credentials when no xAI API key is configured.","default":false},"merge_reasoning_content_in_choices":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Merge Reasoning Content In Choices","default":false},"model_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Info"},"mock_response":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ModelResponse"},{},{"type":"null"}],"title":"Mock Response"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"tag_regex":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tag Regex"},"auto_router_config_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Config Path"},"auto_router_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Config"},"auto_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Default Model"},"auto_router_embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Router Embedding Model"},"auto_router_max_input_chars":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Router Max Input Chars"},"complexity_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Complexity Router Config"},"complexity_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complexity Router Default Model"},"adaptive_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adaptive Router Default Model"},"adaptive_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Adaptive Router Config"},"quality_router_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Quality Router Config"},"quality_router_default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality Router Default Model"},"vector_store_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Id"},"milvus_text_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Milvus Text Field"},"milvus_db_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Milvus Db Name"},"milvus_partition_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Milvus Partition Names"},"valkey_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Host"},"valkey_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Valkey Port"},"valkey_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Password"},"valkey_ssl":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Valkey Ssl"},"valkey_text_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Text Field"},"valkey_embedding_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valkey Embedding Field"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},"additionalProperties":true,"type":"object","title":"updateLiteLLMParams"},"ProxyChatCompletionRequest":{"description":"Pydantic model for chat completion requests that includes both OpenAI standard fields\nand LiteLLM-specific parameters. This replaces the previous TypedDict version.","properties":{"model":{"title":"Model","type":"string"},"messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Messages","type":"array"},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Penalty"},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"title":"Logit Bias"},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Logprobs"},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Top Logprobs"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Max Tokens"},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"N"},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Presence Penalty"},"response_format":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Response Format"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Seed"},"service_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Service Tier"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Stop"},"stream_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Stream Options"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Top P"},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Tool Choice"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Parallel Tool Calls"},"function_call":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Function Call"},"functions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"title":"Functions"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Stream"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Metadata"},"guardrails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Guardrails"},"caching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Caching"},"num_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Num Retries"},"context_window_fallback_dict":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"title":"Context Window Fallback Dict"},"fallbacks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Fallbacks"}},"required":["model","messages"],"title":"ProxyChatCompletionRequest","type":"object"},"ChatCompletionAssistantMessage":{"properties":{"role":{"const":"assistant","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionTextObject"},{"$ref":"#/components/schemas/ChatCompletionThinkingBlock"},{"$ref":"#/components/schemas/ChatCompletionRedactedThinkingBlock"},{"$ref":"#/components/schemas/ChatCompletionImageObject"}]},"type":"array"},{"type":"null"}],"title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionAssistantToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"function_call":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionToolCallFunctionChunk"},{"type":"null"}]},"reasoning_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning Content"},"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"},"thinking_blocks":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionThinkingBlock"},{"$ref":"#/components/schemas/ChatCompletionRedactedThinkingBlock"}]},"type":"array"},{"type":"null"}],"title":"Thinking Blocks"},"reasoning_items":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionReasoningItem"},"type":"array"},{"type":"null"}],"title":"Reasoning Items"}},"required":["role"],"title":"ChatCompletionAssistantMessage","type":"object"},"ChatCompletionAssistantToolCall":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"type":{"const":"function","title":"Type","type":"string"},"function":{"$ref":"#/components/schemas/ChatCompletionToolCallFunctionChunk"}},"required":["id","type","function"],"title":"ChatCompletionAssistantToolCall","type":"object"},"ChatCompletionAudioObject":{"properties":{"input_audio":{"$ref":"#/components/schemas/InputAudio"},"type":{"const":"input_audio","title":"Type","type":"string"}},"required":["input_audio","type"],"title":"ChatCompletionAudioObject","type":"object"},"ChatCompletionDeveloperMessage":{"properties":{"role":{"const":"developer","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"}],"title":"Content"},"name":{"title":"Name","type":"string"},"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"}},"required":["role","content"],"title":"ChatCompletionDeveloperMessage","type":"object"},"ChatCompletionDocumentObject":{"properties":{"type":{"const":"document","title":"Type","type":"string"},"source":{"$ref":"#/components/schemas/DocumentObject"},"title":{"title":"Title","type":"string"},"context":{"title":"Context","type":"string"},"citations":{"anyOf":[{"$ref":"#/components/schemas/CitationsObject"},{"type":"null"}]}},"required":["type","source","title","context","citations"],"title":"ChatCompletionDocumentObject","type":"object"},"ChatCompletionFileObject":{"properties":{"type":{"const":"file","title":"Type","type":"string"},"file":{"$ref":"#/components/schemas/ChatCompletionFileObjectFile"}},"required":["type","file"],"title":"ChatCompletionFileObject","type":"object"},"ChatCompletionFileObjectFile":{"properties":{"file_data":{"title":"File Data","type":"string"},"file_id":{"title":"File Id","type":"string"},"filename":{"title":"Filename","type":"string"},"format":{"title":"Format","type":"string"},"detail":{"title":"Detail","type":"string"},"video_metadata":{"additionalProperties":true,"title":"Video Metadata","type":"object"}},"title":"ChatCompletionFileObjectFile","type":"object"},"ChatCompletionFunctionMessage":{"properties":{"role":{"const":"function","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/ChatCompletionTextObject"},"type":"array"},{"type":"null"}],"title":"Content"},"name":{"title":"Name","type":"string"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"}},"required":["role","content","name","tool_call_id"],"title":"ChatCompletionFunctionMessage","type":"object"},"ChatCompletionImageObject":{"properties":{"type":{"const":"image_url","title":"Type","type":"string"},"image_url":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ChatCompletionImageUrlObject"}],"title":"Image Url"}},"required":["type","image_url"],"title":"ChatCompletionImageObject","type":"object"},"ChatCompletionImageUrlObject":{"properties":{"url":{"title":"Url","type":"string"},"detail":{"title":"Detail","type":"string"},"format":{"title":"Format","type":"string"}},"required":["url"],"title":"ChatCompletionImageUrlObject","type":"object"},"ChatCompletionSystemMessage":{"properties":{"role":{"const":"system","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"}],"title":"Content"},"name":{"title":"Name","type":"string"},"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"}},"required":["role","content"],"title":"ChatCompletionSystemMessage","type":"object"},"ChatCompletionTextObject":{"properties":{"type":{"const":"text","title":"Type","type":"string"},"text":{"title":"Text","type":"string"},"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"}},"required":["type","text"],"title":"ChatCompletionTextObject","type":"object"},"ChatCompletionToolCallFunctionChunk":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"arguments":{"title":"Arguments","type":"string"},"provider_specific_fields":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider Specific Fields"}},"title":"ChatCompletionToolCallFunctionChunk","type":"object"},"ChatCompletionToolMessage":{"properties":{"role":{"const":"tool","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionTextObject"},{"$ref":"#/components/schemas/ChatCompletionImageObject"}]},"type":"array"}],"title":"Content"},"tool_call_id":{"title":"Tool Call Id","type":"string"}},"required":["role","content","tool_call_id"],"title":"ChatCompletionToolMessage","type":"object"},"ChatCompletionUserMessage":{"properties":{"role":{"const":"user","title":"Role","type":"string"},"content":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionTextObject"},{"$ref":"#/components/schemas/ChatCompletionImageObject"},{"$ref":"#/components/schemas/ChatCompletionAudioObject"},{"$ref":"#/components/schemas/ChatCompletionDocumentObject"},{"$ref":"#/components/schemas/ChatCompletionVideoObject"},{"$ref":"#/components/schemas/ChatCompletionFileObject"}]},"type":"array"}],"title":"Content"},"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"}},"required":["role","content"],"title":"ChatCompletionUserMessage","type":"object"},"ChatCompletionVideoObject":{"properties":{"type":{"const":"video_url","title":"Type","type":"string"},"video_url":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/ChatCompletionVideoUrlObject"}],"title":"Video Url"}},"required":["type","video_url"],"title":"ChatCompletionVideoObject","type":"object"},"ChatCompletionVideoUrlObject":{"properties":{"url":{"title":"Url","type":"string"},"detail":{"title":"Detail","type":"string"}},"required":["url"],"title":"ChatCompletionVideoUrlObject","type":"object"},"CitationsObject":{"properties":{"enabled":{"title":"Enabled","type":"boolean"}},"required":["enabled"],"title":"CitationsObject","type":"object"},"DocumentObject":{"properties":{"type":{"const":"text","title":"Type","type":"string"},"media_type":{"title":"Media Type","type":"string"},"data":{"title":"Data","type":"string"}},"required":["type","media_type","data"],"title":"DocumentObject","type":"object"},"InputAudio":{"properties":{"data":{"title":"Data","type":"string"},"format":{"enum":["wav","mp3"],"title":"Format","type":"string"}},"required":["data","format"],"title":"InputAudio","type":"object"},"EmbeddingRequest":{"additionalProperties":true,"properties":{"model":{"title":"Model","type":"string"},"input":{"default":[],"items":{"type":"string"},"title":"Input","type":"array"},"timeout":{"default":600,"title":"Timeout","type":"integer"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Base"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Version"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Key"},"api_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Api Type"},"caching":{"default":false,"title":"Caching","type":"boolean"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"User"},"custom_llm_provider":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Custom Llm Provider"},"litellm_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Litellm Call Id"},"litellm_logging_obj":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Litellm Logging Obj"},"logger_fn":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Logger Fn"}},"required":["model"],"title":"EmbeddingRequest","type":"object"},"ApplyGuardrailRequest":{"properties":{"entities":{"anyOf":[{"items":{"$ref":"#/components/schemas/PiiEntityType"},"type":"array"},{"type":"null"}],"title":"Entities"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"input_type":{"default":"request","title":"Input Type","type":"string"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Messages"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"text":{"title":"Text","type":"string"}},"required":["guardrail_name","text"],"title":"ApplyGuardrailRequest","type":"object"},"ApplyGuardrailResponse":{"properties":{"response_text":{"title":"Response Text","type":"string"}},"required":["response_text"],"title":"ApplyGuardrailResponse","type":"object"},"BaseLitellmParams-Input":{"additionalProperties":true,"properties":{"additional_provider_specific_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Additional provider-specific parameters for generic guardrail APIs","title":"Additional Provider Specific Params"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the guardrail service API","title":"Api Base"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional custom API endpoint for Model Armor","title":"Api Endpoint"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for the guardrail service","title":"Api Key"},"blocked_words":{"anyOf":[{"items":{"$ref":"#/components/schemas/BlockedWord"},"type":"array"},{"type":"null"}],"description":"List of blocked words with individual actions","title":"Blocked Words"},"blocked_words_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to YAML file containing blocked_words list","title":"Blocked Words File"},"categories":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterCategoryConfig"},"type":"array"},{"type":"null"}],"description":"List of prebuilt categories to enable (harmful_*, bias_*)","title":"Categories"},"category_thresholds":{"anyOf":[{"$ref":"#/components/schemas/LakeraCategoryThresholds"},{"type":"null"}],"description":"Threshold configuration for Lakera guardrail categories"},"credentials":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to Google Cloud credentials JSON file or JSON string","title":"Credentials"},"custom_code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Python-like code containing the apply_guardrail function for custom guardrail logic","title":"Custom Code"},"default_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the guardrail is enabled by default","title":"Default On"},"detect_secrets_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Configuration for detect-secrets guardrail","title":"Detect Secrets Config"},"end_session_after_n_fails":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"For /v1/realtime sessions: automatically close the session after this many guardrail violations.","title":"End Session After N Fails"},"experimental_use_latest_role_message_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"When True, guardrails only receive the latest message for the relevant role (e.g., newest user input pre-call, newest assistant output post-call)","title":"Experimental Use Latest Role Message Only"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Header names to forward from the client request to the guardrail (e.g. x-request-id). Only these headers' values are sent; others may be omitted or sent as [present]. Used by generic_guardrail_api (similar to MCP extra_headers).","title":"Extra Headers"},"fail_on_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to fail the request if Model Armor encounters an error","title":"Fail On Error"},"guard_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the guardrail in guardrails.ai","title":"Guard Name"},"keyword_redaction_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tag to use for keyword redaction","title":"Keyword Redaction Tag"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Google Cloud location/region (e.g., us-central1)","title":"Location"},"mask_request_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask request content if guardrail makes any changes","title":"Mask Request Content"},"mask_response_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask response content if guardrail makes any changes","title":"Mask Response Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional field if guardrail requires a 'model' parameter","title":"Model"},"on_violation":{"anyOf":[{"enum":["warn","end_session"],"type":"string"},{"type":"null"}],"description":"For /v1/realtime sessions: 'warn' speaks the violation message and continues; 'end_session' speaks the message and closes the connection.","title":"On Violation"},"pangea_input_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for input (LLM request)","title":"Pangea Input Recipe"},"pangea_output_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for output (LLM response)","title":"Pangea Output Recipe"},"pattern_redaction_format":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Format string for pattern redaction (use {pattern_name} placeholder)","title":"Pattern Redaction Format"},"patterns":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterPattern"},"type":"array"},{"type":"null"}],"description":"List of patterns (prebuilt or custom regex) to detect","title":"Patterns"},"realtime_violation_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The message the bot speaks aloud when a /v1/realtime guardrail fires. Falls back to violation_message_template if not set.","title":"Realtime Violation Message"},"severity_threshold":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Minimum severity to block (high, medium, low)","title":"Severity Threshold"},"skip_system_message_in_guardrail":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When True, unified guardrails skip system-role messages when building evaluation inputs (texts and structured_messages). When False, system messages are included even if litellm_settings sets a global skip. When None, use the global litellm.skip_system_message_in_guardrail setting.","title":"Skip System Message In Guardrail"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ID of your Model Armor template","title":"Template Id"},"unreachable_fallback":{"default":"fail_closed","description":"Behavior when a guardrail endpoint is unreachable due to network errors. NOTE: This is currently only implemented by guardrail='generic_guardrail_api'. 'fail_closed' raises an error (default). 'fail_open' logs a critical error and allows the request to proceed.","enum":["fail_closed","fail_open"],"title":"Unreachable Fallback","type":"string"},"violation_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom message when a guardrail blocks an action. Supports placeholders like {tool_name}, {rule_id}, and {default_message}.","title":"Violation Message Template"}},"title":"BaseLitellmParams","type":"object"},"BaseLitellmParams-Output":{"additionalProperties":true,"properties":{"additional_provider_specific_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Additional provider-specific parameters for generic guardrail APIs","title":"Additional Provider Specific Params"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the guardrail service API","title":"Api Base"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional custom API endpoint for Model Armor","title":"Api Endpoint"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for the guardrail service","title":"Api Key"},"blocked_words":{"anyOf":[{"items":{"$ref":"#/components/schemas/BlockedWord"},"type":"array"},{"type":"null"}],"description":"List of blocked words with individual actions","title":"Blocked Words"},"blocked_words_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to YAML file containing blocked_words list","title":"Blocked Words File"},"categories":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterCategoryConfig"},"type":"array"},{"type":"null"}],"description":"List of prebuilt categories to enable (harmful_*, bias_*)","title":"Categories"},"category_thresholds":{"anyOf":[{"$ref":"#/components/schemas/LakeraCategoryThresholds"},{"type":"null"}],"description":"Threshold configuration for Lakera guardrail categories"},"credentials":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to Google Cloud credentials JSON file or JSON string","title":"Credentials"},"custom_code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Python-like code containing the apply_guardrail function for custom guardrail logic","title":"Custom Code"},"default_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the guardrail is enabled by default","title":"Default On"},"detect_secrets_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Configuration for detect-secrets guardrail","title":"Detect Secrets Config"},"end_session_after_n_fails":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"For /v1/realtime sessions: automatically close the session after this many guardrail violations.","title":"End Session After N Fails"},"experimental_use_latest_role_message_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"When True, guardrails only receive the latest message for the relevant role (e.g., newest user input pre-call, newest assistant output post-call)","title":"Experimental Use Latest Role Message Only"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Header names to forward from the client request to the guardrail (e.g. x-request-id). Only these headers' values are sent; others may be omitted or sent as [present]. Used by generic_guardrail_api (similar to MCP extra_headers).","title":"Extra Headers"},"fail_on_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to fail the request if Model Armor encounters an error","title":"Fail On Error"},"guard_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the guardrail in guardrails.ai","title":"Guard Name"},"keyword_redaction_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tag to use for keyword redaction","title":"Keyword Redaction Tag"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Google Cloud location/region (e.g., us-central1)","title":"Location"},"mask_request_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask request content if guardrail makes any changes","title":"Mask Request Content"},"mask_response_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask response content if guardrail makes any changes","title":"Mask Response Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional field if guardrail requires a 'model' parameter","title":"Model"},"on_violation":{"anyOf":[{"enum":["warn","end_session"],"type":"string"},{"type":"null"}],"description":"For /v1/realtime sessions: 'warn' speaks the violation message and continues; 'end_session' speaks the message and closes the connection.","title":"On Violation"},"pangea_input_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for input (LLM request)","title":"Pangea Input Recipe"},"pangea_output_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for output (LLM response)","title":"Pangea Output Recipe"},"pattern_redaction_format":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Format string for pattern redaction (use {pattern_name} placeholder)","title":"Pattern Redaction Format"},"patterns":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterPattern"},"type":"array"},{"type":"null"}],"description":"List of patterns (prebuilt or custom regex) to detect","title":"Patterns"},"realtime_violation_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The message the bot speaks aloud when a /v1/realtime guardrail fires. Falls back to violation_message_template if not set.","title":"Realtime Violation Message"},"severity_threshold":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Minimum severity to block (high, medium, low)","title":"Severity Threshold"},"skip_system_message_in_guardrail":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When True, unified guardrails skip system-role messages when building evaluation inputs (texts and structured_messages). When False, system messages are included even if litellm_settings sets a global skip. When None, use the global litellm.skip_system_message_in_guardrail setting.","title":"Skip System Message In Guardrail"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ID of your Model Armor template","title":"Template Id"},"unreachable_fallback":{"default":"fail_closed","description":"Behavior when a guardrail endpoint is unreachable due to network errors. NOTE: This is currently only implemented by guardrail='generic_guardrail_api'. 'fail_closed' raises an error (default). 'fail_open' logs a critical error and allows the request to proceed.","enum":["fail_closed","fail_open"],"title":"Unreachable Fallback","type":"string"},"violation_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom message when a guardrail blocks an action. Supports placeholders like {tool_name}, {rule_id}, and {default_message}.","title":"Violation Message Template"}},"title":"BaseLitellmParams","type":"object"},"BlockedWord":{"description":"Represents a blocked word with its action and optional description","properties":{"action":{"$ref":"#/components/schemas/ContentFilterAction","description":"Action to take when keyword is detected (BLOCK or MASK)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional description explaining why this keyword is sensitive","title":"Description"},"keyword":{"description":"The keyword to block or mask","title":"Keyword","type":"string"}},"required":["keyword","action"],"title":"BlockedWord","type":"object"},"ContentFilterAction":{"description":"Action to take when content filter detects a match","enum":["BLOCK","MASK"],"title":"ContentFilterAction","type":"string"},"ContentFilterCategoryConfig":{"additionalProperties":true,"description":"category: \"harmful_self_harm\"\n              enabled: true\n              action: \"BLOCK\"\n              severity_threshold: \"medium\"\n              category_file: \"/path/to/custom_file.yaml\"  # optional override","properties":{"action":{"description":"The action to take when the category is detected","enum":["BLOCK","MASK"],"title":"Action","type":"string"},"category":{"description":"The category to detect","title":"Category","type":"string"},"category_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional override. Use your own category file instead of the default one.","title":"Category File"},"enabled":{"default":true,"description":"Whether the category is enabled","title":"Enabled","type":"boolean"},"severity_threshold":{"default":"medium","description":"The severity threshold to detect the category","enum":["high","medium","low"],"title":"Severity Threshold","type":"string"}},"required":["category","action"],"title":"ContentFilterCategoryConfig","type":"object"},"ContentFilterPattern":{"description":"Represents a content filter pattern (prebuilt or custom regex)","properties":{"action":{"$ref":"#/components/schemas/ContentFilterAction","description":"Action to take when pattern matches (BLOCK or MASK)"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name for this pattern (used in logging and error messages)","title":"Name"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom regex pattern. Required if pattern_type is 'regex'","title":"Pattern"},"pattern_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of prebuilt pattern (e.g., 'us_ssn', 'credit_card'). Required if pattern_type is 'prebuilt'","title":"Pattern Name"},"pattern_type":{"description":"Type of pattern: 'prebuilt' for predefined patterns or 'regex' for custom","enum":["prebuilt","regex"],"title":"Pattern Type","type":"string"}},"required":["pattern_type","action"],"title":"ContentFilterPattern","type":"object"},"CreateGuardrailRequest":{"properties":{"guardrail":{"$ref":"#/components/schemas/Guardrail"}},"required":["guardrail"],"title":"CreateGuardrailRequest","type":"object"},"GUARDRAIL_DEFINITION_LOCATION":{"enum":["db","config"],"title":"GUARDRAIL_DEFINITION_LOCATION","type":"string"},"GraySwanGuardrailConfigModelOptionalParams":{"description":"Optional parameters for the Gray Swan guardrail.","properties":{"categories":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"description":"Default Gray Swan category definitions to send with each request.","title":"Categories"},"fail_open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"If true (default), errors contacting Gray Swan are logged and the request proceeds. If false, errors propagate and block the request.","title":"Fail Open"},"guardrail_timeout":{"anyOf":[{"type":"number"},{"type":"null"}],"default":30.0,"description":"Timeout in seconds for calling the Gray Swan guardrail service.","title":"Guardrail Timeout"},"on_flagged_action":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"passthrough","description":"Action when a violation is detected: 'block' rejects the call (400 error), 'monitor' logs only, 'passthrough' replaces response content with violation message (200 status).","title":"On Flagged Action"},"policy_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Gray Swan policy identifier to apply during monitoring.","title":"Policy Id"},"reasoning_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Gray Swan reasoning mode override. Accepted values: 'off', 'hybrid', 'thinking'.","title":"Reasoning Mode"},"violation_threshold":{"anyOf":[{"maximum":1.0,"minimum":0.0,"type":"number"},{"type":"null"}],"default":0.5,"description":"Threshold between 0 and 1 at which Gray Swan violations trigger the configured action.","title":"Violation Threshold"}},"title":"GraySwanGuardrailConfigModelOptionalParams","type":"object"},"Guardrail":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"guardrail_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Id"},"guardrail_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guardrail Info"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"litellm_params":{"$ref":"#/components/schemas/LitellmParams"},"policy_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Template"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["guardrail_name","litellm_params"],"title":"Guardrail","type":"object"},"GuardrailInfoResponse":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"guardrail_definition_location":{"$ref":"#/components/schemas/GUARDRAIL_DEFINITION_LOCATION","default":"config"},"guardrail_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Id"},"guardrail_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guardrail Info"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"litellm_params":{"anyOf":[{"$ref":"#/components/schemas/BaseLitellmParams-Output"},{"type":"null"}]},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["guardrail_name"],"title":"GuardrailInfoResponse","type":"object"},"GuardrailSubmissionItem":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"guardrail_id":{"title":"Guardrail Id","type":"string"},"guardrail_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guardrail Info"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"litellm_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Params"},"reviewed_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Reviewed At"},"status":{"title":"Status","type":"string"},"submitted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Submitted At"},"submitted_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted By Email"},"submitted_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submitted By User Id"},"team_guardrail":{"default":false,"title":"Team Guardrail","type":"boolean"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["guardrail_id","guardrail_name","status"],"title":"GuardrailSubmissionItem","type":"object"},"GuardrailSubmissionSummary":{"properties":{"active":{"title":"Active","type":"integer"},"pending_review":{"title":"Pending Review","type":"integer"},"rejected":{"title":"Rejected","type":"integer"},"total":{"title":"Total","type":"integer"}},"required":["total","pending_review","active","rejected"],"title":"GuardrailSubmissionSummary","type":"object"},"LakeraCategoryThresholds":{"additionalProperties":true,"properties":{"jailbreak":{"title":"Jailbreak","type":"number"},"prompt_injection":{"title":"Prompt Injection","type":"number"}},"title":"LakeraCategoryThresholds","type":"object"},"ListGuardrailSubmissionsResponse":{"properties":{"submissions":{"items":{"$ref":"#/components/schemas/GuardrailSubmissionItem"},"title":"Submissions","type":"array"},"summary":{"$ref":"#/components/schemas/GuardrailSubmissionSummary"}},"required":["submissions","summary"],"title":"ListGuardrailSubmissionsResponse","type":"object"},"ListGuardrailsResponse":{"properties":{"guardrails":{"items":{"$ref":"#/components/schemas/GuardrailInfoResponse"},"title":"Guardrails","type":"array"}},"required":["guardrails"],"title":"ListGuardrailsResponse","type":"object"},"LitellmParams":{"additionalProperties":true,"properties":{"action":{"default":"block","description":"'block' raises an error; 'mask' replaces the code block with a placeholder.","enum":["block","mask"],"title":"Action","type":"string"},"additional_provider_specific_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Additional provider-specific parameters for generic guardrail APIs","title":"Additional Provider Specific Params"},"akto_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Akto account ID for multi-tenant deployments. Env: AKTO_ACCOUNT_ID. Default: '1000000'.","title":"Akto Account Id"},"akto_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for Akto. Env: AKTO_API_KEY.","title":"Akto Api Key"},"akto_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Akto Guardrail API Base URL. Env: AKTO_GUARDRAIL_API_BASE.","examples":["http://localhost:9090","https://akto-ingestion.example.com"],"title":"Akto Base Url"},"akto_vxlan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Akto VXLAN ID. Env: AKTO_VXLAN_ID. Default: '0'.","title":"Akto Vxlan Id"},"anonymize_input":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"If True, replaces sensitive content with anonymized version when only PII/PCI/secrets are detected. Only applies in blocking mode. Defaults to False if not provided","title":"Anonymize Input"},"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the Lakera AI API","title":"Api Base"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional custom API endpoint for Model Armor","title":"Api Endpoint"},"api_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The Hiddenlayer API Id for the Hiddenlayer API. If not provided, the `HIDDENLAYER_CLIENT_ID` environment variable is checked or https://api.hiddenlayer.ai is used.","title":"Api Id"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key for the Lakera AI service","title":"Api Key"},"api_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"v1","description":"API version for Javelin service","title":"Api Version"},"application":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Application name for Javelin service","title":"Application"},"application_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Application ID for Noma Security. Defaults to 'litellm' if not provided","title":"Application Id"},"assertions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Custom assertions to validate against the output. Each assertion is a string describing a condition.","title":"Assertions"},"async_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Set to True to request asynchronous analysis (sets `plr_async` header). Defaults to provider behaviour when omitted.","title":"Async Mode"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Authorization bearer token for IBM Guardrails API. Reads from IBM_GUARDRAILS_AUTH_TOKEN env var if None.","title":"Auth Token"},"aws_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS access key ID for authentication","title":"Aws Access Key Id"},"aws_bedrock_runtime_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS Bedrock runtime endpoint URL","title":"Aws Bedrock Runtime Endpoint"},"aws_profile_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS profile name for credential retrieval","title":"Aws Profile Name"},"aws_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS region where your guardrail is deployed","title":"Aws Region Name"},"aws_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS role name for assuming roles","title":"Aws Role Name"},"aws_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS secret access key for authentication","title":"Aws Secret Access Key"},"aws_session_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the AWS session","title":"Aws Session Name"},"aws_session_token":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS session token for temporary credentials","title":"Aws Session Token"},"aws_sts_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"AWS STS endpoint URL","title":"Aws Sts Endpoint"},"aws_web_identity_token":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Web identity token for AWS role assumption","title":"Aws Web Identity Token"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the IBM Guardrails server","title":"Base Url"},"block_failures":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"If True, blocks requests on API failures. Defaults to True if not provided","title":"Block Failures"},"block_on_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether to block the request when the PromptGuard API is unreachable. Defaults to true (fail-closed). Set to false for fail-open behaviour.","title":"Block On Error"},"block_on_violation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to block requests when violations are detected. Defaults to True.","title":"Block On Violation"},"blocked_languages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Language tags to block (e.g. python, javascript, bash). Empty or None = block all fenced code blocks.","options":["python","javascript","typescript","bash","ruby","go","java","csharp","php","c","cpp","rust","sql"],"title":"Blocked Languages","ui_type":"multiselect"},"blocked_words":{"anyOf":[{"items":{"$ref":"#/components/schemas/BlockedWord"},"type":"array"},{"type":"null"}],"description":"List of blocked words with individual actions","title":"Blocked Words"},"blocked_words_file":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to YAML file containing blocked_words list","title":"Blocked Words File"},"breakdown":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to include breakdown in the response","title":"Breakdown"},"categories":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterCategoryConfig"},"type":"array"},{"type":"null"}],"description":"List of prebuilt categories to enable (harmful_*, bias_*)","title":"Categories"},"category_thresholds":{"anyOf":[{"$ref":"#/components/schemas/LakeraCategoryThresholds"},{"type":"null"}],"description":"Threshold configuration for Lakera guardrail categories"},"confidence_threshold":{"default":0.5,"default_value":0.5,"description":"Only block or mask when detection confidence >= this value; below threshold, allow or log_only.","max":1.0,"maximum":1.0,"min":0.0,"minimum":0.0,"step":0.1,"title":"Confidence Threshold","type":"number","ui_type":"percentage"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Additional configuration for the guardrail","title":"Config"},"content_moderation_check":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable content moderation to check for harmful content (harassment, hate speech, etc.).","title":"Content Moderation Check"},"credentials":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to Google Cloud credentials JSON file or JSON string","title":"Credentials"},"custom_code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Python-like code containing the apply_guardrail function for custom guardrail logic","title":"Custom Code"},"default_action":{"default":"deny","description":"Fallback decision when no rule matches","enum":["allow","deny"],"title":"Default Action","type":"string"},"default_on":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the guardrail is enabled by default","title":"Default On"},"deployment_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The EnkryptAI deployment name to use. Sent via X-Enkrypt-Deployment header.","title":"Deployment Name"},"detect_execution_intent":{"default":true,"description":"When True, block only when user intent is to run/execute; allow when intent is explain/refactor/don't run. Also block text-only execution requests (e.g. 'run `ls`', 'read /etc/passwd').","title":"Detect Execution Intent","type":"boolean"},"detect_secrets_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Configuration for detect-secrets guardrail","title":"Detect Secrets Config"},"detector_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the detector inside the server (e.g., 'jailbreak-detector')","title":"Detector Id"},"detectors":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Dictionary of detector configurations (e.g., {'nsfw': {'enabled': True}, 'toxicity': {'enabled': True}}).","title":"Detectors"},"dev_info":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to include developer information in the response","title":"Dev Info"},"disable_exception_on_block":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"If True, will not raise an exception when the guardrail is blocked. Useful for OpenWebUI where exceptions can end the chat flow.","title":"Disable Exception On Block"},"end_session_after_n_fails":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"For /v1/realtime sessions: automatically close the session after this many guardrail violations.","title":"End Session After N Fails"},"evaluation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pre-configured evaluation ID from Qualifire dashboard. When provided, uses invoke_evaluation() instead of evaluate().","title":"Evaluation Id"},"experimental_use_latest_role_message_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"When True, guardrails only receive the latest message for the relevant role (e.g., newest user input pre-call, newest assistant output post-call)","title":"Experimental Use Latest Role Message Only"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Header names to forward from the client request to the guardrail (e.g. x-request-id). Only these headers' values are sent; others may be omitted or sent as [present]. Used by generic_guardrail_api (similar to MCP extra_headers).","title":"Extra Headers"},"fail_on_error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to fail the request if Model Armor encounters an error","title":"Fail On Error"},"grounding_check":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable grounding verification to ensure output is grounded in provided context.","title":"Grounding Check"},"grounding_strictness":{"anyOf":[{"enum":["BALANCED","STRICT"],"type":"string"},{"type":"null"}],"description":"Strictness level for XecGuard context-grounding validation. 'BALANCED' (default) treats INCOMPLETE answers as SAFE; 'STRICT' flags them as UNSAFE. Grounding only runs in post_call when `metadata.xecguard_grounding_documents` is provided.","title":"Grounding Strictness"},"guard_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the Javelin guard to use","title":"Guard Name"},"guardrail":{"description":"The type of guardrail integration to use","title":"Guardrail","type":"string"},"guardrailIdentifier":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ID of your guardrail on Bedrock","title":"Guardrailidentifier"},"guardrailVersion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The version of your Bedrock guardrail (e.g., DRAFT or version number)","title":"Guardrailversion"},"guardrail_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"HTTP timeout in seconds. Default: 5.","title":"Guardrail Timeout"},"hallucinations_check":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable hallucination detection to detect factual inaccuracies.","title":"Hallucinations Check"},"include_evidence":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Include detailed evidence payloads in responses (sets `plr_evidence` header).","title":"Include Evidence"},"include_scanners":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Include scanner category summaries in responses (sets `plr_scanners` header).","title":"Include Scanners"},"is_detector_server":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Boolean flag to determine if calling a detector server (True) or the FMS Orchestrator (False). Defaults to True.","title":"Is Detector Server"},"keyword_redaction_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tag to use for keyword redaction","title":"Keyword Redaction Tag"},"lasso_conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Conversation ID for the Lasso guardrail","title":"Lasso Conversation Id"},"lasso_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"User ID for the Lasso guardrail","title":"Lasso User Id"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Google Cloud location/region (e.g., us-central1)","title":"Location"},"mask":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Enable content masking using Lasso classifix API","title":"Mask"},"mask_request_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask request content if guardrail makes any changes","title":"Mask Request Content"},"mask_response_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Will mask response content if guardrail makes any changes","title":"Mask Response Content"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Additional metadata to include in the request","title":"Metadata"},"mock_redacted_text":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Mock redacted text for testing","title":"Mock Redacted Text"},"mode":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"$ref":"#/components/schemas/Mode"}],"description":"When to apply the guardrail (pre_call, post_call, during_call, logging_only)","title":"Mode"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional field if guardrail requires a 'model' parameter","title":"Model"},"monitor_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"If True, logs violations without blocking. Defaults to False if not provided","title":"Monitor Mode"},"on_disallowed_action":{"default":"block","description":"Choose whether disallowed tools block the request or get rewritten out of the payload","enum":["block","rewrite"],"title":"On Disallowed Action","type":"string"},"on_flagged":{"anyOf":[{"enum":["block","monitor"],"type":"string"},{"type":"null"}],"default":"block","description":"Action to take when content is flagged: 'block' (raise exception) or 'monitor' (log only)","title":"On Flagged"},"on_flagged_action":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"monitor","description":"Action to take when content is flagged: 'block' (raise exception) or 'monitor' (log only)","title":"On Flagged Action"},"on_violation":{"anyOf":[{"enum":["warn","end_session"],"type":"string"},{"type":"null"}],"description":"For /v1/realtime sessions: 'warn' speaks the violation message and continues; 'end_session' speaks the message and closes the connection.","title":"On Violation"},"optional_params":{"anyOf":[{"$ref":"#/components/schemas/GraySwanGuardrailConfigModelOptionalParams"},{"type":"null"}],"description":"Optional parameters for the guardrail"},"output_parse_pii":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When True, LiteLLM will replace the masked text with the original text in the response","title":"Output Parse Pii","ui_type":"bool"},"pangea_input_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for input (LLM request)","title":"Pangea Input Recipe"},"pangea_output_recipe":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Recipe for output (LLM response)","title":"Pangea Output Recipe"},"pattern_redaction_format":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Format string for pattern redaction (use {pattern_name} placeholder)","title":"Pattern Redaction Format"},"patterns":{"anyOf":[{"items":{"$ref":"#/components/schemas/ContentFilterPattern"},"type":"array"},{"type":"null"}],"description":"List of patterns (prebuilt or custom regex) to detect","title":"Patterns"},"payload":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to include payload in the response","title":"Payload"},"persist_session":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Controls Pillar session persistence (sets `plr_persist` header). Set to False to disable persistence.","title":"Persist Session"},"pii_check":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable PII (Personally Identifiable Information) detection.","title":"Pii Check"},"pii_entities_config":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/PiiAction"},"type":"object"},{"type":"null"}],"description":"Configuration for PII entity types and actions","title":"Pii Entities Config"},"policy_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Policy ID for Zscaler AI Guard. Can also be set via ZSCALER_AI_GUARD_POLICY_ID environment variable","title":"Policy Id"},"policy_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The EnkryptAI policy name to use. Sent via x-enkrypt-policy header.","title":"Policy Name"},"policy_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"XecGuard policies to apply on each scan. Select one or more of the built-in default policies; if none are selected, the guardrail defaults to System Prompt Enforcement + Harmful Content Protection.","options":["Default_Policy_SystemPromptEnforcement","Default_Policy_GeneralPromptAttackProtection","Default_Policy_ContentBiasProtection","Default_Policy_HarmfulContentProtection","Default_Policy_SkillsProtection","Default_Policy_PIISensitiveDataProtection"],"title":"Policy Names","ui_type":"multiselect"},"presidio_ad_hoc_recognizers":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Path to a JSON file containing ad-hoc recognizers for Presidio","title":"Presidio Ad Hoc Recognizers"},"presidio_analyzer_api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the Presidio analyzer API","title":"Presidio Analyzer Api Base"},"presidio_anonymizer_api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base URL for the Presidio anonymizer API","title":"Presidio Anonymizer Api Base"},"presidio_entities_deny_list":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/PiiEntityType"},{"type":"string"}]},"type":"array"},{"type":"null"}],"description":"List of entity types to exclude from Presidio detection results. Detections of these types will be silently dropped. Useful for suppressing false positives (e.g., US_DRIVER_LICENSE on coding routes).","title":"Presidio Entities Deny List"},"presidio_filter_scope":{"anyOf":[{"enum":["input","output","both"],"type":"string"},{"type":"null"}],"description":"Where to apply Presidio checks: 'input' (user -> model), 'output' (model -> user), or 'both' (default).","title":"Presidio Filter Scope"},"presidio_language":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"en","description":"Language code for Presidio PII analysis (e.g., 'en', 'de', 'es', 'fr')","title":"Presidio Language"},"presidio_run_on":{"anyOf":[{"enum":["input","output","both"],"type":"string"},{"type":"null"}],"description":"Where to apply Presidio checks: input, output, or both (default).","title":"Presidio Run On"},"presidio_score_thresholds":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"description":"Optional per-entity minimum confidence scores for Presidio detections. Entities below the threshold are ignored.","title":"Presidio Score Thresholds"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Project ID for the Lakera AI project","title":"Project Id"},"prompt_injections":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable prompt injection detection. Default check if no evaluation_id and no other checks are specified.","title":"Prompt Injections"},"realtime_violation_message":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The message the bot speaks aloud when a /v1/realtime guardrail fires. Falls back to violation_message_template if not set.","title":"Realtime Violation Message"},"rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolPermissionRule"},"type":"array"},{"type":"null"}],"description":"Ordered allow/deny rules. Patterns use regex for tool names/types and optional regex constraints on tool arguments.","title":"Rules"},"send_user_api_key_alias":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Whether to send user_API_key_alias in headers","title":"Send User Api Key Alias"},"send_user_api_key_team_id":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Whether to send user_API_key_team_id in headers","title":"Send User Api Key Team Id"},"send_user_api_key_user_id":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Whether to send user_API_key_user_id in headers","title":"Send User Api Key User Id"},"severity_threshold":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Minimum severity to block (high, medium, low)","title":"Severity Threshold"},"skip_system_message_in_guardrail":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When True, unified guardrails skip system-role messages when building evaluation inputs (texts and structured_messages). When False, system messages are included even if litellm_settings sets a global skip. When None, use the global litellm.skip_system_message_in_guardrail setting.","title":"Skip System Message In Guardrail"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The ID of your Model Armor template","title":"Template Id"},"tool_selection_quality_check":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Enable tool selection quality check to evaluate quality of tool/function calls.","title":"Tool Selection Quality Check"},"unreachable_fallback":{"default":"fail_closed","description":"What to do when Akto is unreachable. 'fail_open' = allow, 'fail_closed' = block.","enum":["fail_closed","fail_open"],"title":"Unreachable Fallback","type":"string"},"use_v2":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"If True and guardrail='noma', route to the new Noma v2 implementation instead of the legacy implementation.","title":"Use V2"},"verify_ssl":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Whether to verify SSL certificates. Defaults to True.","title":"Verify Ssl"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":2,"description":"Hiddenlayer guardrail version to use.","title":"Version"},"violation_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom message when a guardrail blocks an action. Supports placeholders like {tool_name}, {rule_id}, and {default_message}.","title":"Violation Message Template"},"xecguard_model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"XecGuard scanning model identifier. Defaults to 'xecguard_v2'.","title":"Xecguard Model"}},"required":["guardrail","mode"],"title":"LitellmParams","type":"object"},"Mode":{"properties":{"default":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Default mode when no tags match","title":"Default"},"tags":{"additionalProperties":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]},"description":"Tags for the guardrail mode","title":"Tags","type":"object"}},"required":["tags"],"title":"Mode","type":"object"},"PatchGuardrailRequest":{"properties":{"guardrail_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guardrail Info"},"guardrail_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guardrail Name"},"litellm_params":{"anyOf":[{"$ref":"#/components/schemas/BaseLitellmParams-Input"},{"type":"null"}]}},"title":"PatchGuardrailRequest","type":"object"},"PiiAction":{"enum":["BLOCK","MASK"],"title":"PiiAction","type":"string"},"PiiEntityType":{"enum":["CREDIT_CARD","CRYPTO","DATE_TIME","EMAIL_ADDRESS","IBAN_CODE","IP_ADDRESS","NRP","LOCATION","PERSON","PHONE_NUMBER","MEDICAL_LICENSE","URL","US_BANK_NUMBER","US_DRIVER_LICENSE","US_ITIN","US_PASSPORT","US_SSN","UK_NHS","UK_NINO","ES_NIF","ES_NIE","IT_FISCAL_CODE","IT_DRIVER_LICENSE","IT_VAT_CODE","IT_PASSPORT","IT_IDENTITY_CARD","PL_PESEL","SG_NRIC_FIN","SG_UEN","AU_ABN","AU_ACN","AU_TFN","AU_MEDICARE","IN_PAN","IN_AADHAAR","IN_VEHICLE_REGISTRATION","IN_VOTER","IN_PASSPORT","FI_PERSONAL_IDENTITY_CODE"],"title":"PiiEntityType","type":"string"},"RegisterGuardrailRequest":{"description":"Request body for POST /guardrails/register. Follows Generic Guardrail API config.","properties":{"guardrail_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guardrail Info"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"litellm_params":{"additionalProperties":true,"title":"Litellm Params","type":"object"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"}},"required":["guardrail_name","litellm_params"],"title":"RegisterGuardrailRequest","type":"object"},"RegisterGuardrailResponse":{"properties":{"guardrail_id":{"title":"Guardrail Id","type":"string"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"status":{"title":"Status","type":"string"},"submitted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Submitted At"}},"required":["guardrail_id","guardrail_name","status"],"title":"RegisterGuardrailResponse","type":"object"},"TestCustomCodeGuardrailRequest":{"description":"Request model for testing custom code guardrails.","properties":{"custom_code":{"title":"Custom Code","type":"string"},"input_type":{"default":"request","title":"Input Type","type":"string"},"request_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Data"},"test_input":{"additionalProperties":true,"title":"Test Input","type":"object"}},"required":["custom_code","test_input"],"title":"TestCustomCodeGuardrailRequest","type":"object"},"TestCustomCodeGuardrailResponse":{"description":"Response model for testing custom code guardrails.","properties":{"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Type"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"success":{"title":"Success","type":"boolean"}},"required":["success"],"title":"TestCustomCodeGuardrailResponse","type":"object"},"ToolPermissionRule":{"description":"A rule defining permission for a specific tool or tool pattern","properties":{"allowed_param_patterns":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"description":"Optional regex map enforcing nested parameter values using dot/[] paths","title":"Allowed Param Patterns"},"decision":{"description":"Whether to allow or deny this tool usage","enum":["allow","deny"],"title":"Decision","type":"string"},"id":{"description":"Unique identifier for the rule","title":"Id","type":"string"},"tool_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Regex pattern applied to the tool's function name","title":"Tool Name"},"tool_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Regex pattern applied to the tool type (e.g., function)","title":"Tool Type"}},"required":["id","decision"],"title":"ToolPermissionRule","type":"object"},"UpdateGuardrailRequest":{"properties":{"guardrail":{"$ref":"#/components/schemas/Guardrail"}},"required":["guardrail"],"title":"UpdateGuardrailRequest","type":"object"},"UsageChartPoint":{"properties":{"blocked":{"title":"Blocked","type":"integer"},"date":{"title":"Date","type":"string"},"passed":{"title":"Passed","type":"integer"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"}},"required":["date","passed","blocked"],"title":"UsageChartPoint","type":"object"},"UsageDetailResponse":{"properties":{"avgLatency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avglatency"},"avgScore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avgscore"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"failRate":{"title":"Failrate","type":"number"},"guardrail_id":{"title":"Guardrail Id","type":"string"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"provider":{"title":"Provider","type":"string"},"requestsEvaluated":{"title":"Requestsevaluated","type":"integer"},"status":{"title":"Status","type":"string"},"time_series":{"items":{"$ref":"#/components/schemas/UsageChartPoint"},"title":"Time Series","type":"array"},"trend":{"title":"Trend","type":"string"},"type":{"title":"Type","type":"string"},"usage_units":{"additionalProperties":{"type":"integer"},"title":"Usage Units","type":"object"},"usage_units_by_key":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"title":"Usage Units By Key","type":"object"},"usage_units_by_team":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"title":"Usage Units By Team","type":"object"},"usage_units_daily":{"items":{"$ref":"#/components/schemas/UsageUnitsDailyPoint"},"title":"Usage Units Daily","type":"array"}},"required":["guardrail_id","guardrail_name","type","provider","requestsEvaluated","failRate","avgScore","avgLatency","status","trend","description","time_series","usage_units","usage_units_daily","usage_units_by_team","usage_units_by_key"],"title":"UsageDetailResponse","type":"object"},"UsageLogEntry":{"properties":{"action":{"title":"Action","type":"string"},"id":{"title":"Id","type":"string"},"input_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Snippet"},"latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latency Ms"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"output_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Snippet"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"timestamp":{"title":"Timestamp","type":"string"}},"required":["id","timestamp","action","score","latency_ms","model","input_snippet","output_snippet","reason"],"title":"UsageLogEntry","type":"object"},"UsageLogsResponse":{"properties":{"logs":{"items":{"$ref":"#/components/schemas/UsageLogEntry"},"title":"Logs","type":"array"},"page":{"title":"Page","type":"integer"},"page_size":{"title":"Page Size","type":"integer"},"total":{"title":"Total","type":"integer"}},"required":["logs","total","page","page_size"],"title":"UsageLogsResponse","type":"object"},"UsageOverviewResponse":{"properties":{"chart":{"items":{"$ref":"#/components/schemas/UsageChartPoint"},"title":"Chart","type":"array"},"passRate":{"title":"Passrate","type":"number"},"rows":{"items":{"$ref":"#/components/schemas/UsageOverviewRow"},"title":"Rows","type":"array"},"totalBlocked":{"title":"Totalblocked","type":"integer"},"totalRequests":{"title":"Totalrequests","type":"integer"},"totalUsageUnits":{"additionalProperties":{"type":"integer"},"title":"Totalusageunits","type":"object"}},"required":["rows","chart","totalRequests","totalBlocked","passRate","totalUsageUnits"],"title":"UsageOverviewResponse","type":"object"},"UsageOverviewRow":{"properties":{"avgLatency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avglatency"},"avgScore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avgscore"},"failRate":{"title":"Failrate","type":"number"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"provider":{"title":"Provider","type":"string"},"requestsEvaluated":{"title":"Requestsevaluated","type":"integer"},"status":{"title":"Status","type":"string"},"trend":{"title":"Trend","type":"string"},"type":{"title":"Type","type":"string"},"usageUnits":{"additionalProperties":{"type":"integer"},"title":"Usageunits","type":"object"}},"required":["id","name","type","provider","requestsEvaluated","failRate","avgScore","avgLatency","status","trend","usageUnits"],"title":"UsageOverviewRow","type":"object"},"UsageUnitsDailyPoint":{"properties":{"date":{"title":"Date","type":"string"},"units":{"additionalProperties":{"type":"integer"},"title":"Units","type":"object"}},"required":["date","units"],"title":"UsageUnitsDailyPoint","type":"object"},"ChatCompletionToolCallChunk":{"properties":{"function":{"$ref":"#/components/schemas/ChatCompletionToolCallFunctionChunk"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"index":{"title":"Index","type":"integer"},"type":{"const":"function","title":"Type","type":"string"}},"required":["id","type","function","index"],"title":"ChatCompletionToolCallChunk","type":"object"},"ChatCompletionToolParam":{"properties":{"cache_control":{"$ref":"#/components/schemas/ChatCompletionCachedContent"},"function":{"$ref":"#/components/schemas/ChatCompletionToolParamFunctionChunk"},"type":{"anyOf":[{"const":"function","type":"string"},{"type":"string"}],"title":"Type"}},"required":["type","function"],"title":"ChatCompletionToolParam","type":"object"},"ChatCompletionToolParamFunctionChunk":{"properties":{"description":{"title":"Description","type":"string"},"name":{"title":"Name","type":"string"},"parameters":{"additionalProperties":true,"title":"Parameters","type":"object"},"strict":{"title":"Strict","type":"boolean"}},"required":["name"],"title":"ChatCompletionToolParamFunctionChunk","type":"object"},"EnrichTemplateRequest":{"properties":{"competitors":{"anyOf":[{"items":{"type":"string"},"maxItems":100,"type":"array"},{"type":"null"}],"description":"Optional list of competitor names","title":"Competitors"},"instruction":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Refinement instruction for modifying the competitor list (e.g. 'add 10 more from Asia')","title":"Instruction"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"parameters":{"additionalProperties":true,"title":"Parameters","type":"object"},"template_id":{"title":"Template Id","type":"string"}},"required":["template_id","parameters"],"title":"EnrichTemplateRequest","type":"object"},"GenericGuardrailAPIInputs":{"properties":{"images":{"items":{"type":"string"},"title":"Images","type":"array"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"structured_messages":{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionUserMessage"},{"$ref":"#/components/schemas/ChatCompletionAssistantMessage"},{"$ref":"#/components/schemas/ChatCompletionToolMessage"},{"$ref":"#/components/schemas/ChatCompletionSystemMessage"},{"$ref":"#/components/schemas/ChatCompletionFunctionMessage"},{"$ref":"#/components/schemas/ChatCompletionDeveloperMessage"}]},"title":"Structured Messages","type":"array"},"texts":{"items":{"type":"string"},"title":"Texts","type":"array"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionToolCallChunk"},"type":"array"},{"items":{"$ref":"#/components/schemas/ChatCompletionMessageToolCall"},"type":"array"}],"title":"Tool Calls"},"tools":{"items":{"$ref":"#/components/schemas/ChatCompletionToolParam"},"title":"Tools","type":"array"}},"title":"GenericGuardrailAPIInputs","type":"object"},"GuardrailTestResultEntry":{"properties":{"action":{"title":"Action","type":"string"},"details":{"title":"Details","type":"string"},"guardrail_name":{"title":"Guardrail Name","type":"string"},"output_text":{"title":"Output Text","type":"string"}},"required":["guardrail_name","action","output_text","details"],"title":"GuardrailTestResultEntry","type":"object"},"PolicyGuardrailsResponse":{"description":"Guardrails configuration for a policy.","properties":{"add":{"items":{"type":"string"},"title":"Add","type":"array"},"remove":{"items":{"type":"string"},"title":"Remove","type":"array"}},"title":"PolicyGuardrailsResponse","type":"object"},"PolicyInfoResponse":{"description":"Response for /policy/info/{policy_name} endpoint.","properties":{"guardrails":{"$ref":"#/components/schemas/PolicyGuardrailsResponse"},"inherit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inherit"},"inheritance_chain":{"items":{"type":"string"},"title":"Inheritance Chain","type":"array"},"policy_name":{"title":"Policy Name","type":"string"},"resolved_guardrails":{"items":{"type":"string"},"title":"Resolved Guardrails","type":"array"},"scope":{"$ref":"#/components/schemas/PolicyScopeResponse"}},"required":["policy_name","scope","guardrails","resolved_guardrails","inheritance_chain"],"title":"PolicyInfoResponse","type":"object"},"PolicyListResponse":{"description":"Response for /policy/list endpoint.","properties":{"policies":{"additionalProperties":{"$ref":"#/components/schemas/PolicySummaryItem"},"title":"Policies","type":"object"},"total_count":{"title":"Total Count","type":"integer"}},"required":["policies","total_count"],"title":"PolicyListResponse","type":"object"},"PolicyMatchContext":{"additionalProperties":false,"description":"Context used to match a request against policies.\n\nContains the team alias, key alias, and model from the incoming request.","properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key alias from the request.","title":"Key Alias"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Model name from the request.","title":"Model"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Tags from key/team metadata.","title":"Tags"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Team alias from the request.","title":"Team Alias"}},"title":"PolicyMatchContext","type":"object"},"PolicyScopeResponse":{"description":"Scope configuration for a policy.","properties":{"keys":{"items":{"type":"string"},"title":"Keys","type":"array"},"models":{"items":{"type":"string"},"title":"Models","type":"array"},"tags":{"items":{"type":"string"},"title":"Tags","type":"array"},"teams":{"items":{"type":"string"},"title":"Teams","type":"array"}},"title":"PolicyScopeResponse","type":"object"},"PolicySummaryItem":{"description":"Summary of a single policy for list endpoint.","properties":{"guardrails":{"$ref":"#/components/schemas/PolicyGuardrailsResponse"},"inherit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inherit"},"inheritance_chain":{"items":{"type":"string"},"title":"Inheritance Chain","type":"array"},"resolved_guardrails":{"items":{"type":"string"},"title":"Resolved Guardrails","type":"array"},"scope":{"$ref":"#/components/schemas/PolicyScopeResponse"}},"required":["scope","guardrails","resolved_guardrails","inheritance_chain"],"title":"PolicySummaryItem","type":"object"},"PolicyTestResponse":{"description":"Response for /policy/test endpoint.","properties":{"context":{"$ref":"#/components/schemas/PolicyMatchContext"},"matching_policies":{"items":{"type":"string"},"title":"Matching Policies","type":"array"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"resolved_guardrails":{"items":{"type":"string"},"title":"Resolved Guardrails","type":"array"}},"required":["context","matching_policies","resolved_guardrails"],"title":"PolicyTestResponse","type":"object"},"PolicyValidateRequest":{"additionalProperties":false,"description":"Request body for the /policy/validate endpoint.","properties":{"policies":{"additionalProperties":true,"description":"Policy configuration to validate. Map of policy names to policy definitions.","title":"Policies","type":"object"}},"required":["policies"],"title":"PolicyValidateRequest","type":"object"},"PolicyValidationError":{"additionalProperties":false,"description":"Represents a validation error or warning for a policy.","properties":{"error_type":{"$ref":"#/components/schemas/PolicyValidationErrorType","description":"Type of validation error."},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific field that caused the error (e.g., 'guardrails.add', 'scope.teams').","title":"Field"},"message":{"description":"Human-readable error message.","title":"Message","type":"string"},"policy_name":{"description":"Name of the policy with the issue.","title":"Policy Name","type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The invalid value that caused the error.","title":"Value"}},"required":["policy_name","error_type","message"],"title":"PolicyValidationError","type":"object"},"PolicyValidationErrorType":{"description":"Types of validation errors that can occur.","enum":["invalid_guardrail","invalid_team","invalid_key","invalid_model","invalid_inheritance","circular_inheritance","invalid_scope","invalid_syntax"],"title":"PolicyValidationErrorType","type":"string"},"PolicyValidationResponse":{"additionalProperties":false,"description":"Response from policy validation.\n\n- `valid`: True if no blocking errors were found\n- `errors`: List of blocking errors (prevent policy from being applied)\n- `warnings`: List of non-blocking warnings (policy can still be applied)","properties":{"errors":{"description":"List of blocking validation errors.","items":{"$ref":"#/components/schemas/PolicyValidationError"},"title":"Errors","type":"array"},"valid":{"description":"True if the policy configuration is valid.","title":"Valid","type":"boolean"},"warnings":{"description":"List of non-blocking validation warnings.","items":{"$ref":"#/components/schemas/PolicyValidationError"},"title":"Warnings","type":"array"}},"required":["valid"],"title":"PolicyValidationResponse","type":"object"},"SuggestTemplatesRequest":{"properties":{"attack_examples":{"items":{"type":"string"},"title":"Attack Examples","type":"array"},"description":{"default":"","title":"Description","type":"string"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},"title":"SuggestTemplatesRequest","type":"object"},"TestPoliciesAndGuardrailsRequest":{"description":"Request body for POST /utils/test_policies_and_guardrails.","properties":{"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"When set, call chat completion with this model/agent for each input and include the response in the result.","title":"Agent Id"},"guardrail_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Guardrail names to apply directly","title":"Guardrail Names"},"input_type":{"default":"request","description":"Whether inputs are request or response","enum":["request","response"],"title":"Input Type","type":"string"},"inputs_list":{"default":[],"description":"List of GenericGuardrailAPIInputs; each item processed separately (for batch compliance testing).","items":{"$ref":"#/components/schemas/GenericGuardrailAPIInputs"},"title":"Inputs List","type":"array"},"policy_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Policy names to resolve guardrails from","title":"Policy Names"},"request_data":{"additionalProperties":true,"description":"Request context (model, user_id, etc.)","title":"Request Data","type":"object"}},"title":"TestPoliciesAndGuardrailsRequest","type":"object"},"TestPolicyTemplateRequest":{"properties":{"guardrail_definitions":{"description":"All guardrailDefinitions from the policy template","items":{"additionalProperties":true,"type":"object"},"title":"Guardrail Definitions","type":"array"},"text":{"description":"Test input text to run guardrails against","title":"Text","type":"string"}},"required":["guardrail_definitions","text"],"title":"TestPolicyTemplateRequest","type":"object"},"TestPolicyTemplateResponse":{"properties":{"overall_action":{"title":"Overall Action","type":"string"},"results":{"items":{"$ref":"#/components/schemas/GuardrailTestResultEntry"},"title":"Results","type":"array"}},"required":["overall_action","results"],"title":"TestPolicyTemplateResponse","type":"object"},"AttachmentImpactResponse":{"description":"Response for estimating the impact of a policy attachment.","properties":{"affected_keys_count":{"default":0,"description":"Number of keys that would be affected (named + unnamed).","title":"Affected Keys Count","type":"integer"},"affected_teams_count":{"default":0,"description":"Number of teams that would be affected (named + unnamed).","title":"Affected Teams Count","type":"integer"},"sample_keys":{"description":"Sample of affected key aliases (up to 10).","items":{"type":"string"},"title":"Sample Keys","type":"array"},"sample_teams":{"description":"Sample of affected team aliases (up to 10).","items":{"type":"string"},"title":"Sample Teams","type":"array"},"unnamed_keys_count":{"default":0,"description":"Number of affected keys without an alias.","title":"Unnamed Keys Count","type":"integer"},"unnamed_teams_count":{"default":0,"description":"Number of affected teams without an alias.","title":"Unnamed Teams Count","type":"integer"}},"title":"AttachmentImpactResponse","type":"object"},"PipelineTestRequest":{"description":"Request body for testing a guardrail pipeline with sample messages.","properties":{"pipeline":{"additionalProperties":true,"description":"Pipeline definition with 'mode' and 'steps'.","title":"Pipeline","type":"object"},"test_messages":{"description":"Test messages to run through the pipeline, e.g. [{'role': 'user', 'content': '...'}].","items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Test Messages","type":"array"}},"required":["pipeline","test_messages"],"title":"PipelineTestRequest","type":"object"},"PolicyAttachmentCreateRequest":{"description":"Request body for creating a policy attachment.","properties":{"keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Key aliases or patterns this attachment applies to.","title":"Keys"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Model names or patterns this attachment applies to.","title":"Models"},"policy_name":{"description":"Name of the policy to attach.","title":"Policy Name","type":"string"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use '*' for global scope (applies to all requests).","title":"Scope"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Tag patterns this attachment applies to. Supports wildcards (e.g., health-*).","title":"Tags"},"teams":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Team aliases or patterns this attachment applies to.","title":"Teams"}},"required":["policy_name"],"title":"PolicyAttachmentCreateRequest","type":"object"},"PolicyAttachmentDBResponse":{"description":"Response for a policy attachment from the database.","properties":{"attachment_id":{"description":"Unique ID of the attachment.","title":"Attachment Id","type":"string"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When the attachment was created.","title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Who created the attachment.","title":"Created By"},"definition_location":{"default":"db","description":"Where this attachment is defined: 'db' (database) or 'config' (config.yaml).","enum":["db","config"],"title":"Definition Location","type":"string"},"keys":{"description":"Key patterns.","items":{"type":"string"},"title":"Keys","type":"array"},"models":{"description":"Model patterns.","items":{"type":"string"},"title":"Models","type":"array"},"policy_name":{"description":"Name of the attached policy.","title":"Policy Name","type":"string"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Scope of the attachment.","title":"Scope"},"tags":{"description":"Tag patterns.","items":{"type":"string"},"title":"Tags","type":"array"},"teams":{"description":"Team patterns.","items":{"type":"string"},"title":"Teams","type":"array"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When the attachment was last updated.","title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Who last updated the attachment.","title":"Updated By"}},"required":["attachment_id","policy_name"],"title":"PolicyAttachmentDBResponse","type":"object"},"PolicyAttachmentListResponse":{"description":"Response for listing policy attachments.","properties":{"attachments":{"description":"List of policy attachments.","items":{"$ref":"#/components/schemas/PolicyAttachmentDBResponse"},"title":"Attachments","type":"array"},"total_count":{"default":0,"description":"Total number of attachments.","title":"Total Count","type":"integer"}},"title":"PolicyAttachmentListResponse","type":"object"},"PolicyConditionRequest":{"description":"Condition for when a policy applies.","properties":{"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Model name pattern (exact match or regex) for when policy applies.","title":"Model"}},"title":"PolicyConditionRequest","type":"object"},"PolicyCreateRequest":{"description":"Request body for creating a new policy.","properties":{"condition":{"anyOf":[{"$ref":"#/components/schemas/PolicyConditionRequest"},{"type":"null"}],"description":"Condition for when this policy applies."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable description of the policy.","title":"Description"},"guardrails_add":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of guardrail names to add.","title":"Guardrails Add"},"guardrails_remove":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of guardrail names to remove (from inherited).","title":"Guardrails Remove"},"inherit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of parent policy to inherit from.","title":"Inherit"},"pipeline":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Optional guardrail pipeline for ordered execution. Contains 'mode' and 'steps'.","title":"Pipeline"},"policy_name":{"description":"Unique name for the policy.","title":"Policy Name","type":"string"}},"required":["policy_name"],"title":"PolicyCreateRequest","type":"object"},"PolicyDBResponse":{"description":"Response for a policy from the database.","properties":{"condition":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Policy condition.","title":"Condition"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When the policy was created.","title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Who created the policy.","title":"Created By"},"definition_location":{"default":"db","description":"Where this policy is defined: 'db' (database) or 'config' (config.yaml).","enum":["db","config"],"title":"Definition Location","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Policy description.","title":"Description"},"guardrails_add":{"description":"Guardrails to add.","items":{"type":"string"},"title":"Guardrails Add","type":"array"},"guardrails_remove":{"description":"Guardrails to remove.","items":{"type":"string"},"title":"Guardrails Remove","type":"array"},"inherit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parent policy name.","title":"Inherit"},"is_latest":{"default":true,"description":"True if this is the latest version by version_number.","title":"Is Latest","type":"boolean"},"parent_version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Policy ID this version was cloned from.","title":"Parent Version Id"},"pipeline":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Optional guardrail pipeline.","title":"Pipeline"},"policy_id":{"description":"Unique ID of the policy.","title":"Policy Id","type":"string"},"policy_name":{"description":"Name of the policy.","title":"Policy Name","type":"string"},"production_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When this version was promoted to production.","title":"Production At"},"published_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When this version was published.","title":"Published At"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"When the policy was last updated.","title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Who last updated the policy.","title":"Updated By"},"version_number":{"default":1,"description":"Version number of this policy.","title":"Version Number","type":"integer"},"version_status":{"default":"production","description":"One of: draft, published, production.","title":"Version Status","type":"string"}},"required":["policy_id","policy_name"],"title":"PolicyDBResponse","type":"object"},"PolicyListDBResponse":{"description":"Response for listing policies from the database.","properties":{"policies":{"description":"List of policies.","items":{"$ref":"#/components/schemas/PolicyDBResponse"},"title":"Policies","type":"array"},"total_count":{"default":0,"description":"Total number of policies.","title":"Total Count","type":"integer"}},"title":"PolicyListDBResponse","type":"object"},"PolicyMatchDetail":{"description":"Details about why a specific policy matched.","properties":{"guardrails_added":{"description":"Guardrails this policy contributes.","items":{"type":"string"},"title":"Guardrails Added","type":"array"},"matched_via":{"description":"How the policy was matched (e.g., 'tag:healthcare', 'team:health-team', 'scope:*').","title":"Matched Via","type":"string"},"policy_name":{"description":"Name of the matched policy.","title":"Policy Name","type":"string"}},"required":["policy_name","matched_via"],"title":"PolicyMatchDetail","type":"object"},"PolicyResolveRequest":{"description":"Request body for resolving effective policies/guardrails for a context.","properties":{"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Key alias to resolve for.","title":"Key Alias"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Model name to resolve for.","title":"Model"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Tags to resolve for.","title":"Tags"},"team_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Team alias to resolve for.","title":"Team Alias"}},"title":"PolicyResolveRequest","type":"object"},"PolicyResolveResponse":{"description":"Response for resolving effective policies/guardrails for a context.","properties":{"effective_guardrails":{"description":"Final list of guardrails that would be applied.","items":{"type":"string"},"title":"Effective Guardrails","type":"array"},"matched_policies":{"description":"Details about each matched policy and why it matched.","items":{"$ref":"#/components/schemas/PolicyMatchDetail"},"title":"Matched Policies","type":"array"}},"title":"PolicyResolveResponse","type":"object"},"PolicyUpdateRequest":{"description":"Request body for updating a policy.","properties":{"condition":{"anyOf":[{"$ref":"#/components/schemas/PolicyConditionRequest"},{"type":"null"}],"description":"Condition for when this policy applies."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable description of the policy.","title":"Description"},"guardrails_add":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of guardrail names to add.","title":"Guardrails Add"},"guardrails_remove":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"List of guardrail names to remove (from inherited).","title":"Guardrails Remove"},"inherit":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of parent policy to inherit from.","title":"Inherit"},"pipeline":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Optional guardrail pipeline for ordered execution. Contains 'mode' and 'steps'.","title":"Pipeline"},"policy_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"New name for the policy.","title":"Policy Name"}},"title":"PolicyUpdateRequest","type":"object"},"PolicyVersionCompareResponse":{"description":"Response for comparing two policy versions.","properties":{"field_diffs":{"additionalProperties":{"additionalProperties":true,"type":"object"},"description":"Field name -> {version_a: val, version_b: val} for differing fields.","title":"Field Diffs","type":"object"},"version_a":{"$ref":"#/components/schemas/PolicyDBResponse","description":"First version."},"version_b":{"$ref":"#/components/schemas/PolicyDBResponse","description":"Second version."}},"required":["version_a","version_b"],"title":"PolicyVersionCompareResponse","type":"object"},"PolicyVersionCreateRequest":{"description":"Request body for creating a new policy version (draft).","properties":{"source_policy_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Policy ID to clone from. If None, clone from current production version.","title":"Source Policy Id"}},"title":"PolicyVersionCreateRequest","type":"object"},"PolicyVersionListResponse":{"description":"Response for listing all versions of a policy.","properties":{"policy_name":{"description":"Name of the policy.","title":"Policy Name","type":"string"},"total_count":{"default":0,"description":"Total number of versions.","title":"Total Count","type":"integer"},"versions":{"description":"All versions ordered by version_number desc.","items":{"$ref":"#/components/schemas/PolicyDBResponse"},"title":"Versions","type":"array"}},"required":["policy_name"],"title":"PolicyVersionListResponse","type":"object"},"PolicyVersionStatusUpdateRequest":{"description":"Request body for updating a policy version's status.","properties":{"version_status":{"description":"New status: 'published' or 'production'.","title":"Version Status","type":"string"}},"required":["version_status"],"title":"PolicyVersionStatusUpdateRequest","type":"object"},"AgentConfig":{"properties":{"agent_card_params":{"$ref":"#/components/schemas/AgentCard"},"agent_name":{"title":"Agent Name","type":"string"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Headers"},"litellm_params":{"additionalProperties":true,"title":"Litellm Params","type":"object"},"object_permission":{"$ref":"#/components/schemas/AgentObjectPermission"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"session_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Rpm Limit"},"session_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Tpm Limit"},"static_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Static Headers"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"}},"required":["agent_name","agent_card_params"],"title":"AgentConfig","type":"object"},"AgentMakePublicResponse":{"properties":{"message":{"title":"Message","type":"string"},"public_agent_groups":{"items":{"type":"string"},"title":"Public Agent Groups","type":"array"},"updated_by":{"title":"Updated By","type":"string"}},"required":["message","public_agent_groups","updated_by"],"title":"AgentMakePublicResponse","type":"object"},"AgentObjectPermission":{"properties":{"agents":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Agents"},"mcp_access_groups":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Access Groups"},"mcp_servers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Mcp Servers"},"mcp_tool_permissions":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Mcp Tool Permissions"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"}},"title":"AgentObjectPermission","type":"object"},"AgentResponse":{"properties":{"agent_card_params":{"additionalProperties":true,"title":"Agent Card Params","type":"object"},"agent_id":{"title":"Agent Id","type":"string"},"agent_name":{"title":"Agent Name","type":"string"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Headers"},"litellm_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Params"},"object_permission":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Object Permission"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"session_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Rpm Limit"},"session_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Tpm Limit"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"static_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Static Headers"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"required":["agent_id","agent_name","agent_card_params"],"title":"AgentResponse","type":"object"},"MakeAgentsPublicRequest":{"properties":{"agent_ids":{"items":{"type":"string"},"title":"Agent Ids","type":"array"}},"required":["agent_ids"],"title":"MakeAgentsPublicRequest","type":"object"},"PatchAgentRequest":{"properties":{"agent_card_params":{"$ref":"#/components/schemas/AgentCard"},"agent_name":{"title":"Agent Name","type":"string"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Headers"},"litellm_params":{"additionalProperties":true,"title":"Litellm Params","type":"object"},"object_permission":{"$ref":"#/components/schemas/AgentObjectPermission"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit"},"session_rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Rpm Limit"},"session_tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Tpm Limit"},"static_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Static Headers"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit"}},"title":"PatchAgentRequest","type":"object"},"IndexCreateLiteLLMParams":{"properties":{"vector_store_index":{"title":"Vector Store Index","type":"string"},"vector_store_name":{"title":"Vector Store Name","type":"string"}},"required":["vector_store_index","vector_store_name"],"title":"IndexCreateLiteLLMParams","type":"object"},"IndexCreateRequest":{"properties":{"index_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Index Info"},"index_name":{"title":"Index Name","type":"string"},"litellm_params":{"$ref":"#/components/schemas/IndexCreateLiteLLMParams"}},"required":["index_name","litellm_params"],"title":"IndexCreateRequest","type":"object"},"LiteLLM_ManagedVectorStore":{"description":"LiteLLM managed vector store object - this is is the object stored in the database","properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"custom_llm_provider":{"title":"Custom Llm Provider","type":"string"},"litellm_credential_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Credential Name"},"litellm_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Params"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"vector_store_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Description"},"vector_store_id":{"title":"Vector Store Id","type":"string"},"vector_store_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Vector Store Metadata"},"vector_store_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Name"}},"title":"LiteLLM_ManagedVectorStore","type":"object"},"LiteLLM_ManagedVectorStoreListResponse":{"description":"Response format for listing vector stores","properties":{"current_page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Page"},"data":{"items":{"$ref":"#/components/schemas/LiteLLM_ManagedVectorStore"},"title":"Data","type":"array"},"object":{"const":"list","title":"Object","type":"string"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"}},"title":"LiteLLM_ManagedVectorStoreListResponse","type":"object"},"LiteLLM_ManagedVectorStoresTable":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"custom_llm_provider":{"title":"Custom Llm Provider","type":"string"},"litellm_credential_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Litellm Credential Name"},"litellm_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Litellm Params"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"vector_store_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Description"},"vector_store_id":{"title":"Vector Store Id","type":"string"},"vector_store_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vector Store Metadata"},"vector_store_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Name"}},"required":["vector_store_id","custom_llm_provider","vector_store_name","vector_store_description","vector_store_metadata","created_at","updated_at","litellm_credential_name","litellm_params","team_id","user_id"],"title":"LiteLLM_ManagedVectorStoresTable","type":"object"},"ResponseLiteLLM_ManagedVectorStore":{"properties":{"vector_store":{"$ref":"#/components/schemas/LiteLLM_ManagedVectorStoresTable"}},"title":"ResponseLiteLLM_ManagedVectorStore","type":"object"},"VectorStoreDeleteRequest":{"properties":{"vector_store_id":{"title":"Vector Store Id","type":"string"}},"required":["vector_store_id"],"title":"VectorStoreDeleteRequest","type":"object"},"VectorStoreInfoRequest":{"properties":{"vector_store_id":{"title":"Vector Store Id","type":"string"}},"required":["vector_store_id"],"title":"VectorStoreInfoRequest","type":"object"},"VectorStoreUpdateRequest":{"properties":{"custom_llm_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Llm Provider"},"vector_store_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Description"},"vector_store_id":{"title":"Vector Store Id","type":"string"},"vector_store_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Vector Store Metadata"},"vector_store_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vector Store Name"}},"required":["vector_store_id"],"title":"VectorStoreUpdateRequest","type":"object"},"LiteLLM_ToolTableRow":{"properties":{"assignments":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Assignments"},"call_count":{"default":0,"title":"Call Count","type":"integer"},"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"input_policy":{"default":"untrusted","enum":["trusted","untrusted","blocked"],"title":"Input Policy","type":"string"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"key_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Hash"},"last_used_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Last Used At"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"},"output_policy":{"default":"untrusted","enum":["trusted","untrusted"],"title":"Output Policy","type":"string"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"tool_id":{"title":"Tool Id","type":"string"},"tool_name":{"title":"Tool Name","type":"string"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"}},"required":["tool_id","tool_name"],"title":"LiteLLM_ToolTableRow","type":"object"},"ToolDetailResponse":{"properties":{"overrides":{"items":{"$ref":"#/components/schemas/ToolPolicyOverrideRow"},"title":"Overrides","type":"array"},"tool":{"$ref":"#/components/schemas/LiteLLM_ToolTableRow"}},"required":["tool"],"title":"ToolDetailResponse","type":"object"},"ToolListResponse":{"properties":{"tools":{"items":{"$ref":"#/components/schemas/LiteLLM_ToolTableRow"},"title":"Tools","type":"array"},"total":{"title":"Total","type":"integer"}},"required":["tools","total"],"title":"ToolListResponse","type":"object"},"ToolPolicyOption":{"properties":{"description":{"title":"Description","type":"string"},"label":{"title":"Label","type":"string"},"value":{"title":"Value","type":"string"}},"required":["value","label","description"],"title":"ToolPolicyOption","type":"object"},"ToolPolicyOptionsResponse":{"properties":{"input_policies":{"items":{"$ref":"#/components/schemas/ToolPolicyOption"},"title":"Input Policies","type":"array"},"output_policies":{"items":{"$ref":"#/components/schemas/ToolPolicyOption"},"title":"Output Policies","type":"array"}},"required":["input_policies","output_policies"],"title":"ToolPolicyOptionsResponse","type":"object"},"ToolPolicyOverrideRow":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"input_policy":{"default":"blocked","enum":["trusted","untrusted","blocked"],"title":"Input Policy","type":"string"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"key_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Hash"},"override_id":{"title":"Override Id","type":"string"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"tool_name":{"title":"Tool Name","type":"string"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["override_id","tool_name"],"title":"ToolPolicyOverrideRow","type":"object"},"ToolPolicyUpdateRequest":{"properties":{"input_policy":{"anyOf":[{"enum":["trusted","untrusted","blocked"],"type":"string"},{"type":"null"}],"title":"Input Policy"},"key_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Alias"},"key_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Hash"},"output_policy":{"anyOf":[{"enum":["trusted","untrusted"],"type":"string"},{"type":"null"}],"title":"Output Policy"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"tool_name":{"title":"Tool Name","type":"string"}},"required":["tool_name"],"title":"ToolPolicyUpdateRequest","type":"object"},"ToolPolicyUpdateResponse":{"properties":{"input_policy":{"anyOf":[{"enum":["trusted","untrusted","blocked"],"type":"string"},{"type":"null"}],"title":"Input Policy"},"key_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Hash"},"output_policy":{"anyOf":[{"enum":["trusted","untrusted"],"type":"string"},{"type":"null"}],"title":"Output Policy"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"tool_name":{"title":"Tool Name","type":"string"},"updated":{"title":"Updated","type":"boolean"}},"required":["tool_name","updated"],"title":"ToolPolicyUpdateResponse","type":"object"},"ToolSpendDailyEntry":{"description":"Spend attributed to one tool on one UTC day.","properties":{"call_count":{"default":0,"title":"Call Count","type":"integer"},"date":{"title":"Date","type":"string"},"spend":{"default":0.0,"title":"Spend","type":"number"},"tool_name":{"title":"Tool Name","type":"string"}},"required":["date","tool_name"],"title":"ToolSpendDailyEntry","type":"object"},"ToolSpendEntry":{"description":"Total spend attributed to one tool over the requested window.","properties":{"call_count":{"default":0,"title":"Call Count","type":"integer"},"spend":{"default":0.0,"description":"Attributed spend: a request that used several tools counts its full spend toward each of them","title":"Spend","type":"number"},"tool_name":{"title":"Tool Name","type":"string"},"total_tokens":{"default":0,"title":"Total Tokens","type":"integer"}},"required":["tool_name"],"title":"ToolSpendEntry","type":"object"},"ToolSpendResponse":{"properties":{"by_tool":{"items":{"$ref":"#/components/schemas/ToolSpendEntry"},"title":"By Tool","type":"array"},"daily":{"items":{"$ref":"#/components/schemas/ToolSpendDailyEntry"},"title":"Daily","type":"array"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},"title":"ToolSpendResponse","type":"object"},"ToolUsageLogEntry":{"description":"One spend log row for a tool call (for UI \"recent logs\" table).","properties":{"id":{"title":"Id","type":"string"},"input_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Snippet"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend"},"timestamp":{"title":"Timestamp","type":"string"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens"}},"required":["id","timestamp"],"title":"ToolUsageLogEntry","type":"object"},"ToolUsageLogsResponse":{"properties":{"logs":{"items":{"$ref":"#/components/schemas/ToolUsageLogEntry"},"title":"Logs","type":"array"},"page":{"title":"Page","type":"integer"},"page_size":{"title":"Page Size","type":"integer"},"total":{"title":"Total","type":"integer"}},"required":["logs","total","page","page_size"],"title":"ToolUsageLogsResponse","type":"object"},"CreateSearchToolRequest":{"properties":{"search_tool":{"$ref":"#/components/schemas/SearchTool"}},"required":["search_tool"],"title":"CreateSearchToolRequest","type":"object"},"ListSearchToolsResponse":{"description":"Response model for listing search tools.","properties":{"search_tools":{"items":{"$ref":"#/components/schemas/SearchToolInfoResponse"},"title":"Search Tools","type":"array"}},"required":["search_tools"],"title":"ListSearchToolsResponse","type":"object"},"SearchTool":{"description":"Search tool configuration.\n\nExample:\n    {\n        \"search_tool_id\": \"123e4567-e89b-12d3-a456-426614174000\",\n        \"search_tool_name\": \"litellm-search\",\n        \"litellm_params\": {\n            \"search_provider\": \"perplexity\",\n            \"api_key\": \"sk-...\"\n        },\n        \"search_tool_info\": {\n            \"description\": \"Perplexity search tool\"\n        }\n    }","properties":{"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"litellm_params":{"$ref":"#/components/schemas/SearchToolLiteLLMParams"},"search_tool_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Id"},"search_tool_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Search Tool Info"},"search_tool_name":{"title":"Search Tool Name","type":"string"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["search_tool_name","litellm_params"],"title":"SearchTool","type":"object"},"SearchToolInfoResponse":{"description":"Response model for search tool information.","properties":{"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"is_from_config":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is From Config"},"litellm_params":{"additionalProperties":true,"title":"Litellm Params","type":"object"},"search_tool_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Tool Id"},"search_tool_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Search Tool Info"},"search_tool_name":{"title":"Search Tool Name","type":"string"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"title":"SearchToolInfoResponse","type":"object"},"SearchToolLiteLLMParams":{"description":"LiteLLM params for search tools configuration.","properties":{"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"search_provider":{"title":"Search Provider","type":"string"},"timeout":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timeout"}},"required":["search_provider"],"title":"SearchToolLiteLLMParams","type":"object"},"TestSearchToolConnectionRequest":{"properties":{"litellm_params":{"additionalProperties":true,"title":"Litellm Params","type":"object"}},"required":["litellm_params"],"title":"TestSearchToolConnectionRequest","type":"object"},"UpdateSearchToolRequest":{"properties":{"search_tool":{"$ref":"#/components/schemas/SearchTool"}},"required":["search_tool"],"title":"UpdateSearchToolRequest","type":"object"},"MCPCredentials":{"properties":{"auth_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Value"},"aws_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Access Key Id"},"aws_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Region Name"},"aws_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Role Name"},"aws_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Secret Access Key"},"aws_service_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Service Name"},"aws_session_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Name"},"aws_session_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Session Token"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"}},"title":"MCPCredentials","type":"object"},"NewMCPServerRequest":{"properties":{"alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"},"allow_all_keys":{"default":false,"title":"Allow All Keys","type":"boolean"},"allowed_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Tools"},"approval_status":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server-managed: set by the endpoint; caller values are overridden.","title":"Approval Status"},"args":{"items":{"type":"string"},"title":"Args","type":"array"},"auth_type":{"anyOf":[{"enum":["none","api_key","bearer_token","basic","authorization","oauth2","aws_sigv4","token"],"type":"string"},{"type":"null"}],"title":"Auth Type"},"authorization_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization Url"},"available_on_public_internet":{"default":true,"title":"Available On Public Internet","type":"boolean"},"byok_api_key_help_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Byok Api Key Help Url"},"byok_description":{"items":{"type":"string"},"title":"Byok Description","type":"array"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"credentials":{"anyOf":[{"$ref":"#/components/schemas/MCPCredentials"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"env":{"additionalProperties":{"type":"string"},"title":"Env","type":"object"},"extra_headers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Headers"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"is_byok":{"default":false,"title":"Is Byok","type":"boolean"},"mcp_access_groups":{"items":{"type":"string"},"title":"Mcp Access Groups","type":"array"},"mcp_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Mcp Info"},"oauth2_flow":{"anyOf":[{"enum":["client_credentials","authorization_code"],"type":"string"},{"type":"null"}],"title":"Oauth2 Flow"},"registration_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Url"},"server_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Id"},"server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Name"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"spec_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Path"},"static_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Static Headers"},"submitted_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"Server-managed: set by the endpoint; caller values are overridden.","title":"Submitted At"},"submitted_by":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Server-managed: set by the endpoint; caller values are overridden.","title":"Submitted By"},"token_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Url"},"tool_name_to_description":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Tool Name To Description"},"tool_name_to_display_name":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Tool Name To Display Name"},"transport":{"default":"sse","enum":["sse","http","stdio"],"title":"Transport","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"title":"NewMCPServerRequest","type":"object"},"RealtimeClientSecretResponse":{"description":"Response from POST /v1/realtime/client_secrets.\n\nBoth the top-level `value` and `session.client_secret.value`\nwill contain the encrypted token instead of the raw ephemeral key.\nThe `session` field is kept as a raw dict so unknown fields pass through.","properties":{"expires_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires At"},"session":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Session"},"value":{"title":"Value","type":"string"}},"required":["value"],"title":"RealtimeClientSecretResponse","type":"object"},"DeleteSkillResponse":{"description":"Response from deleting a skill","properties":{"id":{"title":"Id","type":"string"},"type":{"default":"skill_deleted","title":"Type","type":"string"}},"required":["id"],"title":"DeleteSkillResponse","type":"object"},"ListSkillsResponse":{"description":"Response from listing skills","properties":{"data":{"items":{"$ref":"#/components/schemas/Skill"},"title":"Data","type":"array"},"has_more":{"default":false,"title":"Has More","type":"boolean"},"next_page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Page"}},"required":["data"],"title":"ListSkillsResponse","type":"object"},"Skill":{"description":"Represents a skill from the Anthropic Skills API","properties":{"created_at":{"title":"Created At","type":"string"},"display_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Title"},"id":{"title":"Id","type":"string"},"latest_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Version"},"source":{"title":"Source","type":"string"},"type":{"default":"skill","title":"Type","type":"string"},"updated_at":{"title":"Updated At","type":"string"}},"required":["id","created_at","source","updated_at"],"title":"Skill","type":"object"},"CancelEvalResponse":{"description":"Response from cancelling an evaluation","properties":{"id":{"title":"Id","type":"string"},"object":{"default":"eval","title":"Object","type":"string"},"status":{"const":"cancelled","title":"Status","type":"string"}},"required":["id","status"],"title":"CancelEvalResponse","type":"object"},"CancelRunResponse":{"description":"Response from cancelling a run","properties":{"id":{"title":"Id","type":"string"},"object":{"default":"eval.run","title":"Object","type":"string"},"status":{"const":"cancelled","title":"Status","type":"string"}},"required":["id","status"],"title":"CancelRunResponse","type":"object"},"DeleteEvalResponse":{"description":"Response from deleting an evaluation","properties":{"deleted":{"title":"Deleted","type":"boolean"},"eval_id":{"title":"Eval Id","type":"string"},"object":{"default":"eval.deleted","title":"Object","type":"string"}},"required":["eval_id","deleted"],"title":"DeleteEvalResponse","type":"object"},"Eval":{"description":"Represents an evaluation from the OpenAI Evals API","properties":{"created_at":{"title":"Created At","type":"integer"},"data_source_config":{"additionalProperties":true,"title":"Data Source Config","type":"object"},"id":{"title":"Id","type":"string"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"object":{"default":"eval","title":"Object","type":"string"},"testing_criteria":{"items":{"additionalProperties":true,"type":"object"},"title":"Testing Criteria","type":"array"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"}},"required":["id","created_at","data_source_config","testing_criteria"],"title":"Eval","type":"object"},"ListEvalsResponse":{"description":"Response from listing evaluations","properties":{"data":{"items":{"$ref":"#/components/schemas/Eval"},"title":"Data","type":"array"},"first_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Id"},"has_more":{"default":false,"title":"Has More","type":"boolean"},"last_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Id"},"object":{"default":"list","title":"Object","type":"string"}},"required":["data"],"title":"ListEvalsResponse","type":"object"},"ListRunsResponse":{"description":"Response from listing runs","properties":{"data":{"items":{"$ref":"#/components/schemas/Run"},"title":"Data","type":"array"},"first_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Id"},"has_more":{"default":false,"title":"Has More","type":"boolean"},"last_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Id"},"object":{"default":"list","title":"Object","type":"string"}},"required":["data"],"title":"ListRunsResponse","type":"object"},"PerTestingCriteriaResult":{"description":"Results for a specific testing criteria","properties":{"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"},"result_counts":{"$ref":"#/components/schemas/ResultCounts"},"testing_criteria_index":{"title":"Testing Criteria Index","type":"integer"}},"required":["testing_criteria_index","result_counts"],"title":"PerTestingCriteriaResult","type":"object"},"ResultCounts":{"description":"Result counts for a run","properties":{"error":{"default":0,"title":"Error","type":"integer"},"failed":{"default":0,"title":"Failed","type":"integer"},"passed":{"default":0,"title":"Passed","type":"integer"},"total":{"title":"Total","type":"integer"}},"required":["total"],"title":"ResultCounts","type":"object"},"Run":{"description":"Represents a run from the OpenAI Evals API","properties":{"completed_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completed At"},"created_at":{"title":"Created At","type":"integer"},"data_source":{"additionalProperties":true,"title":"Data Source","type":"object"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Error"},"eval_id":{"title":"Eval Id","type":"string"},"id":{"title":"Id","type":"string"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"object":{"default":"eval.run","title":"Object","type":"string"},"per_model_usage":{"anyOf":[{},{"type":"null"}],"title":"Per Model Usage"},"per_testing_criteria_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PerTestingCriteriaResult"},"type":"array"},{"type":"null"}],"title":"Per Testing Criteria Results"},"report_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Url"},"result_counts":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Result Counts"},"shared_with_openai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shared With Openai"},"started_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Started At"},"status":{"enum":["queued","running","completed","failed","cancelled"],"title":"Status","type":"string"}},"required":["id","created_at","status","data_source","eval_id"],"title":"Run","type":"object"},"RunDeleteResponse":{"description":"Response from deleting a run","properties":{"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"title":"Deleted"},"object":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"eval.run.deleted","title":"Object"},"run_id":{"title":"Run Id","type":"string"}},"required":["run_id"],"title":"RunDeleteResponse","type":"object"},"ListPluginsResponse":{"description":"Response from listing plugins.","properties":{"count":{"title":"Count","type":"integer"},"plugins":{"items":{"$ref":"#/components/schemas/PluginListItem"},"title":"Plugins","type":"array"}},"required":["plugins","count"],"title":"ListPluginsResponse","type":"object"},"PluginAuthor":{"description":"Plugin author information.","properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Author email","title":"Email"},"name":{"description":"Author name","title":"Name","type":"string"}},"required":["name"],"title":"PluginAuthor","type":"object"},"PluginListItem":{"description":"Plugin item in list responses.","properties":{"author":{"anyOf":[{"$ref":"#/components/schemas/PluginAuthor"},{"type":"null"}]},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"enabled":{"title":"Enabled","type":"boolean"},"homepage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homepage"},"id":{"title":"Id","type":"string"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords"},"name":{"title":"Name","type":"string"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Namespace"},"source":{"additionalProperties":{"type":"string"},"title":"Source","type":"object"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}},"required":["id","name","version","description","source","enabled","created_at","updated_at"],"title":"PluginListItem","type":"object"},"PluginResponse":{"description":"Plugin information in API responses.","properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin description","title":"Description"},"enabled":{"description":"Whether plugin is enabled","title":"Enabled","type":"boolean"},"id":{"description":"Plugin unique ID","title":"Id","type":"string"},"name":{"description":"Plugin name","title":"Name","type":"string"},"source":{"additionalProperties":{"type":"string"},"description":"Git source reference","title":"Source","type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin version","title":"Version"}},"required":["id","name","source","enabled"],"title":"PluginResponse","type":"object"},"RegisterPluginRequest":{"description":"Request body for registering a plugin in the marketplace.\n\nLiteLLM acts as a registry/discovery layer. Plugins are hosted on\nGitHub/GitLab/Bitbucket and referenced by their git source.","properties":{"author":{"anyOf":[{"$ref":"#/components/schemas/PluginAuthor"},{"type":"null"}],"description":"Plugin author"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin category","title":"Category"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin description","title":"Description"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Skill domain (e.g., 'Productivity')","title":"Domain"},"homepage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin homepage URL","title":"Homepage"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Search keywords","title":"Keywords"},"name":{"description":"Plugin name (kebab-case, e.g., 'my-plugin')","pattern":"^[a-z0-9-]+$","title":"Name","type":"string"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Skill namespace within domain (e.g., 'workflows')","title":"Namespace"},"source":{"additionalProperties":{"type":"string"},"description":"Git source reference. Supported formats:\n- GitHub: {'source': 'github', 'repo': 'org/repo'}\n- Git URL: {'source': 'url', 'url': 'https://github.com/org/repo.git'}\n- Git Subdir: {'source': 'git-subdir', 'url': 'https://github.com/org/repo.git', 'path': 'plugins/plugin-name'}","title":"Source","type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"1.0.0","description":"Semantic version","title":"Version"}},"required":["source","name"],"title":"RegisterPluginRequest","type":"object"},"RegisterPluginResponse":{"description":"Response from plugin registration.","properties":{"action":{"description":"Action taken (created/updated)","title":"Action","type":"string"},"plugin":{"$ref":"#/components/schemas/PluginResponse","description":"Plugin information"},"status":{"description":"Operation status","title":"Status","type":"string"}},"required":["status","action","plugin"],"title":"RegisterPluginResponse","type":"object"},"UpdatePluginRequest":{"description":"Request body for replacing an existing plugin.\n\nThe plugin name is the resource identity and is supplied as the path\nparameter, so it cannot be changed here. This is a full replace: omitted\nfields reset to their defaults, so version is cleared rather than\ndefaulting to the create-time \"1.0.0\".","properties":{"author":{"anyOf":[{"$ref":"#/components/schemas/PluginAuthor"},{"type":"null"}],"description":"Plugin author"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin category","title":"Category"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin description","title":"Description"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Skill domain (e.g., 'Productivity')","title":"Domain"},"homepage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Plugin homepage URL","title":"Homepage"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"description":"Search keywords","title":"Keywords"},"namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Skill namespace within domain (e.g., 'workflows')","title":"Namespace"},"source":{"additionalProperties":{"type":"string"},"description":"Git source reference. Supported formats:\n- GitHub: {'source': 'github', 'repo': 'org/repo'}\n- Git URL: {'source': 'url', 'url': 'https://github.com/org/repo.git'}\n- Git Subdir: {'source': 'git-subdir', 'url': 'https://github.com/org/repo.git', 'path': 'plugins/plugin-name'}","title":"Source","type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Semantic version; cleared if omitted","title":"Version"}},"required":["source"],"title":"UpdatePluginRequest","type":"object"},"SCIMFeature":{"properties":{"maxOperations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maxoperations"},"maxPayloadSize":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maxpayloadsize"},"maxResults":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maxresults"},"supported":{"title":"Supported","type":"boolean"}},"required":["supported"],"title":"SCIMFeature","type":"object"},"SCIMGroup":{"properties":{"displayName":{"title":"Displayname","type":"string"},"externalId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Externalid"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"members":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMMember"},"type":"array"},{"type":"null"}],"title":"Members"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"},"schemas":{"items":{"type":"string"},"title":"Schemas","type":"array"}},"required":["schemas","displayName"],"title":"SCIMGroup","type":"object"},"SCIMListResponse":{"properties":{"Resources":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMUser"},"type":"array"},{"items":{"$ref":"#/components/schemas/SCIMGroup"},"type":"array"}],"title":"Resources"},"itemsPerPage":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":10,"title":"Itemsperpage"},"schemas":{"default":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],"items":{"type":"string"},"title":"Schemas","type":"array"},"startIndex":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":1,"title":"Startindex"},"totalResults":{"title":"Totalresults","type":"integer"}},"required":["totalResults","Resources"],"title":"SCIMListResponse","type":"object"},"SCIMMember":{"properties":{"display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display"},"value":{"title":"Value","type":"string"}},"required":["value"],"title":"SCIMMember","type":"object"},"SCIMPatchOp":{"properties":{"Operations":{"items":{"$ref":"#/components/schemas/SCIMPatchOperation"},"title":"Operations","type":"array"},"schemas":{"default":["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"items":{"type":"string"},"title":"Schemas","type":"array"}},"required":["Operations"],"title":"SCIMPatchOp","type":"object"},"SCIMPatchOperation":{"properties":{"op":{"title":"Op","type":"string"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"value":{"anyOf":[{},{"type":"null"}],"title":"Value"}},"required":["op"],"title":"SCIMPatchOperation","type":"object"},"SCIMServiceProviderConfig":{"properties":{"authenticationSchemes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Authenticationschemes"},"bulk":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":false}},"changePassword":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":false}},"etag":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":false}},"filter":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":false}},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"},"patch":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":true}},"schemas":{"default":["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],"items":{"type":"string"},"title":"Schemas","type":"array"},"sort":{"$ref":"#/components/schemas/SCIMFeature","default":{"supported":false}}},"title":"SCIMServiceProviderConfig","type":"object"},"SCIMUser":{"properties":{"active":{"default":true,"title":"Active","type":"boolean"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMUserEmail"},"type":"array"},{"type":"null"}],"title":"Emails"},"externalId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Externalid"},"groups":{"anyOf":[{"items":{"$ref":"#/components/schemas/SCIMUserGroup"},"type":"array"},{"type":"null"}],"title":"Groups"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"},"name":{"anyOf":[{"$ref":"#/components/schemas/SCIMUserName"},{"type":"null"}]},"schemas":{"items":{"type":"string"},"title":"Schemas","type":"array"},"userName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"}},"required":["schemas"],"title":"SCIMUser","type":"object"},"SCIMUserEmail":{"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"value":{"format":"email","title":"Value","type":"string"}},"required":["value"],"title":"SCIMUserEmail","type":"object"},"SCIMUserGroup":{"properties":{"display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"direct","title":"Type"},"value":{"title":"Value","type":"string"}},"required":["value"],"title":"SCIMUserGroup","type":"object"},"SCIMUserName":{"properties":{"familyName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Familyname"},"formatted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Formatted"},"givenName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Givenname"},"honorificPrefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Honorificprefix"},"honorificSuffix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Honorificsuffix"},"middleName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Middlename"}},"title":"SCIMUserName","type":"object"},"ChatMessage":{"properties":{"content":{"title":"Content","type":"string"},"role":{"enum":["user","assistant"],"title":"Role","type":"string"}},"required":["role","content"],"title":"ChatMessage","type":"object"},"UsageAIChatRequest":{"properties":{"messages":{"description":"Chat messages (user/assistant history)","items":{"$ref":"#/components/schemas/ChatMessage"},"title":"Messages","type":"array"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Model to use for AI chat","title":"Model"}},"required":["messages"],"title":"UsageAIChatRequest","type":"object"},"Body_convert_prompt_file_to_json_utils_dotprompt_json_converter_post":{"properties":{"file":{"format":"binary","title":"File","type":"string"}},"required":["file"],"title":"Body_convert_prompt_file_to_json_utils_dotprompt_json_converter_post","type":"object"},"ListPromptsResponse":{"properties":{"prompts":{"items":{"$ref":"#/components/schemas/PromptSpec"},"title":"Prompts","type":"array"}},"required":["prompts"],"title":"ListPromptsResponse","type":"object"},"PatchPromptRequest":{"properties":{"litellm_params":{"anyOf":[{"$ref":"#/components/schemas/PromptLiteLLMParams"},{"type":"null"}]},"prompt_info":{"anyOf":[{"$ref":"#/components/schemas/PromptInfo"},{"type":"null"}]}},"title":"PatchPromptRequest","type":"object"},"Prompt":{"properties":{"litellm_params":{"$ref":"#/components/schemas/PromptLiteLLMParams"},"prompt_id":{"title":"Prompt Id","type":"string"},"prompt_info":{"anyOf":[{"$ref":"#/components/schemas/PromptInfo"},{"type":"null"}]}},"required":["prompt_id","litellm_params"],"title":"Prompt","type":"object"},"PromptInfo":{"additionalProperties":true,"properties":{"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"development","title":"Environment"},"prompt_type":{"enum":["config","db"],"title":"Prompt Type","type":"string"}},"required":["prompt_type"],"title":"PromptInfo","type":"object"},"PromptInfoResponse":{"properties":{"environments":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Environments"},"prompt_spec":{"$ref":"#/components/schemas/PromptSpec"},"raw_prompt_template":{"anyOf":[{"$ref":"#/components/schemas/PromptTemplateBase"},{"type":"null"}]}},"required":["prompt_spec"],"title":"PromptInfoResponse","type":"object"},"PromptLiteLLMParams":{"additionalProperties":true,"properties":{"api_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"dotprompt_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dotprompt Content"},"ignore_prompt_manager_model":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Ignore Prompt Manager Model"},"ignore_prompt_manager_optional_params":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Ignore Prompt Manager Optional Params"},"prompt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Id"},"prompt_integration":{"title":"Prompt Integration","type":"string"},"provider_specific_query_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider Specific Query Params"}},"required":["prompt_integration"],"title":"PromptLiteLLMParams","type":"object"},"PromptSpec":{"properties":{"created_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Created At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"development","title":"Environment"},"litellm_params":{"$ref":"#/components/schemas/PromptLiteLLMParams"},"prompt_id":{"title":"Prompt Id","type":"string"},"prompt_info":{"$ref":"#/components/schemas/PromptInfo"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},"required":["prompt_id","litellm_params","prompt_info"],"title":"PromptSpec","type":"object"},"PromptTemplateBase":{"properties":{"content":{"title":"Content","type":"string"},"litellm_prompt_id":{"title":"Litellm Prompt Id","type":"string"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"required":["litellm_prompt_id","content"],"title":"PromptTemplateBase","type":"object"},"TestPromptRequest":{"properties":{"conversation_history":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Conversation History"},"dotprompt_content":{"title":"Dotprompt Content","type":"string"},"prompt_variables":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Variables"}},"required":["dotprompt_content"],"title":"TestPromptRequest","type":"object"},"CreateJWTKeyMappingRequest":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"jwt_claim_name":{"title":"Jwt Claim Name","type":"string"},"jwt_claim_value":{"title":"Jwt Claim Value","type":"string"},"key":{"title":"Key","type":"string"}},"required":["jwt_claim_name","jwt_claim_value","key"],"title":"CreateJWTKeyMappingRequest","type":"object"},"DeleteJWTKeyMappingRequest":{"properties":{"id":{"title":"Id","type":"string"}},"required":["id"],"title":"DeleteJWTKeyMappingRequest","type":"object"},"JWTKeyMappingResponse":{"properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"title":"Id","type":"string"},"is_active":{"title":"Is Active","type":"boolean"},"jwt_claim_name":{"title":"Jwt Claim Name","type":"string"},"jwt_claim_value":{"title":"Jwt Claim Value","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"required":["id","jwt_claim_name","jwt_claim_value","is_active","created_at","updated_at"],"title":"JWTKeyMappingResponse","type":"object"},"UpdateJWTKeyMappingRequest":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"title":"Id","type":"string"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},"required":["id"],"title":"UpdateJWTKeyMappingRequest","type":"object"},"ComplianceCheckRequest":{"description":"Request payload for compliance check endpoints.\n\nMirrors the spend log fields needed for compliance evaluation.","properties":{"guardrail_information":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Guardrail Information"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"request_id":{"title":"Request Id","type":"string"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},"required":["request_id"],"title":"ComplianceCheckRequest","type":"object"},"ComplianceCheckResult":{"description":"Result of a single compliance check.","properties":{"article":{"title":"Article","type":"string"},"check_name":{"title":"Check Name","type":"string"},"detail":{"title":"Detail","type":"string"},"passed":{"title":"Passed","type":"boolean"}},"required":["check_name","article","passed","detail"],"title":"ComplianceCheckResult","type":"object"},"ComplianceResponse":{"description":"Response from a compliance check endpoint.","properties":{"checks":{"items":{"$ref":"#/components/schemas/ComplianceCheckResult"},"title":"Checks","type":"array"},"compliant":{"title":"Compliant","type":"boolean"},"regulation":{"title":"Regulation","type":"string"}},"required":["compliant","regulation","checks"],"title":"ComplianceResponse","type":"object"},"AccessGroupCreateRequest":{"properties":{"access_agent_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Agent Ids"},"access_group_name":{"title":"Access Group Name","type":"string"},"access_mcp_server_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Mcp Server Ids"},"access_model_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Model Names"},"assigned_key_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assigned Key Ids"},"assigned_team_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assigned Team Ids"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"required":["access_group_name"],"title":"AccessGroupCreateRequest","type":"object"},"AccessGroupResponse":{"properties":{"access_agent_ids":{"items":{"type":"string"},"title":"Access Agent Ids","type":"array"},"access_group_id":{"title":"Access Group Id","type":"string"},"access_group_name":{"title":"Access Group Name","type":"string"},"access_mcp_server_ids":{"items":{"type":"string"},"title":"Access Mcp Server Ids","type":"array"},"access_model_names":{"items":{"type":"string"},"title":"Access Model Names","type":"array"},"assigned_key_ids":{"items":{"type":"string"},"title":"Assigned Key Ids","type":"array"},"assigned_team_ids":{"items":{"type":"string"},"title":"Assigned Team Ids","type":"array"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"}},"required":["access_group_id","access_group_name","access_model_names","access_mcp_server_ids","access_agent_ids","assigned_team_ids","assigned_key_ids","created_at","updated_at"],"title":"AccessGroupResponse","type":"object"},"AccessGroupUpdateRequest":{"properties":{"access_agent_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Agent Ids"},"access_group_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Group Name"},"access_mcp_server_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Mcp Server Ids"},"access_model_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Access Model Names"},"assigned_key_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assigned Key Ids"},"assigned_team_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assigned Team Ids"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"title":"AccessGroupUpdateRequest","type":"object"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","description":"Bearer token","in":"header","name":"x-litellm-api-key"}}}}