{"openapi":"3.1.0","info":{"title":"LiteLLM API","description":"Proxy 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)","version":"1.93.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":"\n    Unified rate-limit error.\n\n    Every rate-limit condition surfaced by litellm — whether it originated from\n    an upstream LLM provider, a vendor batch endpoint, or one of litellm's own\n    proxy-side limiters (parallel-requests, dynamic-rate, batch-rate, budget,\n    max-iterations, etc.) — is raised as an instance of this class.\n\n    The :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"}],"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"}}}}}}},"/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":[]}]}},"/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":[]}]}},"/cursor/chat/completions":{"post":{"tags":["responses"],"summary":"Cursor Chat Completions","description":"Cursor-specific endpoint that accepts Responses API input format but returns chat completions format.\n\nThis endpoint handles requests from Cursor IDE which sends Responses API format (`input` field)\nbut expects chat completions format response (`choices`, `messages`, etc.).\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/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```","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```","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"}}}}}}},"/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"}}],"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"}}],"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"}}],"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}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/cohere/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/vllm/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/mistral/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/milvus/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/anthropic/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/bedrock/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/eu.assemblyai/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/assemblyai/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/azure/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/azure_ai/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/vertex_ai/discovery/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/vertex_ai/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/openai/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/openai_passthrough/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/cursor/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/watsonx/{endpoint}":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/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. 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- 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- 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. 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- 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: str - The key to update\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- 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- 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- 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.\nParameters:\n    key: Optional[str] = Query parameter representing the key in the request\n    user_api_key_dict: UserAPIKeyAuth = Dependency representing the user's API key\nReturns:\n    Dict containing the key and its associated information\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. 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. 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\", \"vector_store_2\"]}. 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\", \"vector_store_2\"]}. 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."}],"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."}],"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- 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}\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. `metadata` is merged with the team's stored\nmetadata rather than replacing it: an omitted key is preserved, `key: null`\ndeletes it, and any other value overwrites (recursing into nested objects).\nEvery other field behaves exactly like `POST /team/update` (omitted preserves,\na value overwrites). Returns the full updated 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"}],"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/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' equals the value OR whose 'team_alias' contains it (case-insensitive).","title":"Search"},"description":"Combined search: matches teams whose 'team_id' equals the value OR whose 'team_alias' contains it (case-insensitive)."},{"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"}}}}}}},"/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":[]}]}},"/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"}}}}}}},"/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"}}}}}}},"/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":100,"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 all SSO settings from the litellm_settings configuration.\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 for SSO users.\nThese settings will be applied to new teams created from SSO.","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":[]}]}},"/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\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}/disable_logging":{"post":{"tags":["team management"],"summary":"Disable Team Logging","description":"Disable all logging callbacks for a team\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\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":[]}]}},"/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"}}}}}}},"/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":[]}]}},"/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"}}}}}}},"/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"}}}}}}},"/toolset/{toolset_name}/mcp":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/{mcp_server_name}/mcp":{"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}},"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"}}}}}}},"/portal/api/signup/start":{"post":{"summary":"Signup Start","operationId":"signup_start_portal_api_signup_start_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/signup/verify":{"post":{"summary":"Signup Verify","operationId":"signup_verify_portal_api_signup_verify_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/login":{"post":{"summary":"Login","operationId":"login_portal_api_login_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/logout":{"post":{"summary":"Logout","operationId":"logout_portal_api_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/api/me":{"get":{"summary":"Me","operationId":"me_portal_api_me_get","parameters":[{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/keys":{"get":{"summary":"Keys List","operationId":"keys_list_portal_api_keys_get","parameters":[{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Keys Create","operationId":"keys_create_portal_api_keys_post","parameters":[{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/keys/{key_id}/revoke":{"post":{"summary":"Keys Revoke","operationId":"keys_revoke_portal_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/usage":{"get":{"summary":"Usage","operationId":"usage_portal_api_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/admin/users":{"get":{"summary":"Admin Users","operationId":"admin_users_portal_api_admin_users_get","parameters":[{"name":"compreslm_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compreslm Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/contact":{"post":{"summary":"Contact","description":"Contact form (landing page + dashboard upgrade requests) —\nrelayed to the operator via Formspree. Never blocks the caller on\ndelivery failure; we log and still return a friendly response so a\nflaky outbound call doesn't look like a broken form.","operationId":"contact_portal_api_contact_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/api/config":{"get":{"summary":"Public Config","operationId":"public_config_portal_api_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/api/health":{"get":{"summary":"Portal Health","operationId":"portal_health_portal_api_health_get","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"]}},"/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.\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. Optionally filter by version_status.\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/{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 used this tool (from SpendLogToolIndex).","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"]}},"/api/event_logging/batch":{"post":{"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":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"summary":"Event Logging Batch","tags":["anthropic_passthrough"]}},"/v1/messages":{"post":{"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":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Anthropic Response","tags":["anthropic_passthrough"]}},"/v1/messages/count_tokens":{"post":{"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":{"content":{"application/json":{"schema":{}}},"description":"Successful Response"}},"security":[{"APIKeyHeader":[]}],"summary":"Count Tokens","tags":["anthropic_passthrough"]}},"/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 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\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 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":{}}},"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"]}},"/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"},"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"},"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"},"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."},"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","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","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"}},"required":["type"],"title":"ChatCompletionCachedContent","type":"object"},"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"],"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"},"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_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},"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":["internal_user","internal_user_viewer","proxy_admin","proxy_admin_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 that new automatically created teams can access","default":[]},"max_budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget","description":"Default maximum budget (in USD) for new automatically created teams"},"budget_duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Budget Duration","description":"Default budget duration for new automatically created teams (e.g. 'daily', 'weekly', 'monthly')"},"tpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tpm Limit","description":"Default tpm limit for new automatically created teams"},"rpm_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rpm Limit","description":"Default rpm limit for new automatically created teams"},"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."}},"type":"object","title":"DefaultTeamSSOParams","description":"Default parameters to apply when a new team is 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"},"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"},"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"},"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"},"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"},"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"},"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"},"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","bearerFormat"],"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","/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."},"ListAccessGroupsResponse":{"properties":{"access_groups":{"items":{"$ref":"#/components/schemas/AccessGroupInfo"},"type":"array","title":"Access Groups"}},"type":"object","required":["access_groups"],"title":"ListAccessGroupsResponse"},"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":[]},"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"},"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_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"},"cache_creation_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost"},"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_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Audio Token Cost"},"cache_read_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input 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_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_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Audio Token Cost"},"input_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character"},"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_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_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character"},"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_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_reasoning_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token"},"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"},"tiered_pricing":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tiered Pricing"},"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_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"},"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_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Region Name"},"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"},"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"},"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"},"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"},"s3_encryption_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Encryption Key Id"},"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"},"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"}},"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":[]},"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"},"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","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":{"$ref":"#/components/schemas/ChatCompletionMessageToolCall"},"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"},"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_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","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},"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"}},"type":"object","required":["model_group","providers"],"title":"ModelGroupInfoProxy"},"ModelInfo":{"properties":{"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"}},"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"},"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"},"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"},"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"},"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"},"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","oauth2MetadataUrl"],"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"},"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."},"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"},"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"},"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"},"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"},"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"}},"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"},"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"}},"type":"object","required":["values","field_schema"],"title":"SSOSettingsResponse","description":"Response model for SSO settings"},"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},"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},"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"},"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"},"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"},"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"},"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"},"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":{"type":"string","title":"Key"},"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"},"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","required":["key"],"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"},"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":{}}},"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"},"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"},"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":[]},"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"},"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"},"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"},"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":[]}},"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_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"},"cache_creation_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Token Cost"},"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_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Creation Input Audio Token Cost"},"cache_read_input_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input 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_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_audio_token_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cache Read Input Audio Token Cost"},"input_cost_per_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Cost Per Character"},"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_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_character":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Character"},"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_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_reasoning_token":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Output Cost Per Reasoning Token"},"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"},"tiered_pricing":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tiered Pricing"},"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_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"},"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_region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Region Name"},"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"},"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"},"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"},"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"},"s3_encryption_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Encryption Key Id"},"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"},"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"},"prompt_cache_breakpoint":{"$ref":"#/components/schemas/PromptCacheBreakpoint"}},"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":{"$ref":"#/components/schemas/ChatCompletionTextObject"},"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"},"PromptCacheBreakpoint":{"description":"Marks the exact end of a reusable prompt prefix.\n\nThe breakpoint inherits its TTL from the request's `prompt_cache_options.ttl`; the boundary is not rounded to a token block.","properties":{"mode":{"const":"explicit","title":"Mode","type":"string"}},"required":["mode"],"title":"PromptCacheBreakpoint","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"},"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"},"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":{"additionalProperties":true,"type":"object"},"title":"Time Series","type":"array"},"trend":{"title":"Trend","type":"string"},"type":{"title":"Type","type":"string"}},"required":["guardrail_id","guardrail_name","type","provider","requestsEvaluated","failRate","avgScore","avgLatency","status","trend","description","time_series"],"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":{"additionalProperties":true,"type":"object"},"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"}},"required":["rows","chart","totalRequests","totalBlocked","passRate"],"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"}},"required":["id","name","type","provider","requestsEvaluated","failRate","avgScore","avgLatency","status","trend"],"title":"UsageOverviewRow","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"},"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"},"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"},"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"},"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":["name","source"],"title":"RegisterPluginRequest","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"}}}}