openapi: 3.2.0 info: title: LiteLLM Internal User management API description: "Enterprise Edition \n\nProxy Server to call 100+ LLMs in the OpenAI format. [**Customize Swagger Docs**](https://docs.litellm.ai/docs/proxy/enterprise#swagger-docs---custom-routes--branding)\n\n\U0001F449 [```LiteLLM Admin Panel on /ui```](/ui). Create, Edit Keys with SSO. Having issues? Try [```Fallback Login```](/fallback/login)\n\n\U0001F4B8 [```LiteLLM Model Cost Map```](https://models.litellm.ai/).\n\n\U0001F50E [```LiteLLM Model Hub```](/ui/model_hub_table). See available models on the proxy. [**Docs**](https://docs.litellm.ai/docs/proxy/ai_hub)" version: 1.95.0 x-operator: institution x-provenance: method: probed source: https://llmproxy.uva.nl/openapi.json retrieved: '2026-08-19' note: Document is generated by the LiteLLM proxy software the University of Amsterdam self-hosts; the deployment, the key issuance and the host (llmproxy.uva.nl, UvA Azure) are the institution's. servers[] added by API Evangelist because the served document omits it; nothing else altered. servers: - url: https://llmproxy.uva.nl description: University of Amsterdam / Amsterdam University of Applied Sciences shared AI gateway tags: - name: Internal User management paths: /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] Note: To get all users (+pagination), use `/user/list` endpoint. Use this to get user information. (user row + all user key info) Example request ``` curl -X GET ''http://localhost:4000/user/info?user_id=krrish7%40berri.ai'' --header ''Authorization: Bearer sk-1234'' ```' 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. This is the v2 replacement for /user/info, designed to avoid the "god endpoint" problem where the old endpoint loaded all keys and teams into memory. Access control: - Proxy admins can query any user - Team admins can query users within their teams - Internal users can only query themselves (omit user_id or pass own) - Returns 404 for non-existent users or unauthorized access Example request: ``` curl -X GET ''http://localhost:4000/v2/user/info?user_id=user123'' \ --header ''Authorization: Bearer sk-1234'' ```' 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: - Internal User management summary: Get User Daily Activity description: '[BETA] This is a beta endpoint. It will change. Meant to optimize querying spend data for analytics for a user. Returns: (by date) - spend - prompt_tokens - completion_tokens - cache_read_input_tokens - cache_creation_input_tokens - total_tokens - api_requests - 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: - Internal User management summary: Get User Daily Activity Aggregated description: 'Aggregated analytics for a user''s daily activity without pagination. Returns 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' /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: [] components: schemas: 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. Budget-write paths use `model_fields.keys()` on this class as an allowlist for user input. Keep server-managed fields (e.g. `budget_reset_at`) on `LiteLLM_BudgetTableFull` so they aren''t user-settable.' 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 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 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 total_compression_saved_tokens: type: integer title: Total Compression Saved Tokens default: 0 total_compression_savings_spend: type: number title: Total Compression Savings Spend default: 0.0 total_prompt_caching_savings_spend: type: number title: Total Prompt Caching Savings Spend default: 0.0 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 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 key_type: anyOf: - type: string - type: 'null' title: Key Type expires: anyOf: - type: string format: date-time - type: 'null' title: Expires token_id: anyOf: - type: string - type: 'null' title: Token Id organization_id: anyOf: - type: string - type: 'null' title: Organization Id project_id: anyOf: - type: string - type: 'null' title: Project Id litellm_budget_table: anyOf: - {} - type: 'null' title: Litellm Budget Table token: anyOf: - type: string - type: 'null' title: Token created_by: anyOf: - type: string - type: 'null' title: Created By updated_by: anyOf: - type: string - type: 'null' title: Updated By created_at: anyOf: - type: string format: date-time - type: 'null' title: Created At updated_at: anyOf: - type: string format: date-time - type: 'null' title: Updated At user_email: anyOf: - type: string - type: 'null' title: User Email user_role: anyOf: - type: string enum: - proxy_admin - proxy_admin_viewer - internal_user - internal_user_viewer - type: 'null' title: User Role teams: anyOf: - items: {} type: array - type: 'null' title: Teams user_alias: anyOf: - type: string - type: 'null' title: User Alias type: object required: - key title: NewUserResponse 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 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 If RateLimitErrorRetries = 3, then 3 retries will be made for RateLimitError Mapping of Exception type to number of retries https://docs.litellm.ai/docs/exception_mapping' 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 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 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 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 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 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 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 compression_saved_tokens: type: integer title: Compression Saved Tokens default: 0 compression_savings_spend: type: number title: Compression Savings Spend default: 0.0 prompt_caching_savings_spend: type: number title: Prompt Caching Savings Spend default: 0.0 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 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. 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 DeleteUserRequest: properties: user_ids: items: type: string type: array title: User Ids type: object required: - user_ids title: DeleteUserRequest 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 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 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. 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 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 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 HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError 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_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 SpendAnalyticsPaginatedResponse: properties: results: items: $ref: '#/components/schemas/DailySpendData' type: array title: Results metadata: $ref: '#/components/schemas/DailySpendMetadata' type: object required: - results title: SpendAnalyticsPaginatedResponse 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. 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 Returns ONLY the user object - no keys, no teams objects. This is a lightweight alternative to UserInfoResponse.' UpdateRouterConfig: properties: routing_strategy_args: anyOf: - additionalProperties: true type: object - type: 'null' title: Routing Strategy Args routing_strategy: anyOf: - type: string - type: 'null' title: Routing Strategy routing_groups: anyOf: - items: $ref: '#/components/schemas/RoutingGroup' type: array - type: 'null' title: Routing Groups retry_policy: anyOf: - $ref: '#/components/schemas/RetryPolicy' - type: 'null' model_group_retry_policy: anyOf: - additionalProperties: $ref: '#/components/schemas/RetryPolicy' type: object - type: 'null' title: Model Group Retry Policy model_group_affinity_config: anyOf: - additionalProperties: items: type: string type: array type: object - type: 'null' title: Model Group Affinity Config allowed_fails: anyOf: - type: integer - type: 'null' title: Allowed Fails cooldown_time: anyOf: - type: number - type: 'null' title: Cooldown Time num_retries: anyOf: - type: integer - type: 'null' title: Num Retries timeout: anyOf: - type: number - type: 'null' title: Timeout max_retries: anyOf: - type: integer - type: 'null' title: Max Retries retry_after: anyOf: - type: number - type: 'null' title: Retry After fallbacks: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Fallbacks context_window_fallbacks: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Context Window Fallbacks model_group_alias: anyOf: - additionalProperties: anyOf: - type: string - additionalProperties: true type: object type: object - type: 'null' title: Model Group Alias default: {} enable_tag_filtering: anyOf: - type: boolean - type: 'null' title: Enable Tag Filtering type: object title: UpdateRouterConfig description: Set of params that you can modify via `router.update_settings()`. 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 BaseModel: properties: {} type: object title: BaseModel securitySchemes: APIKeyHeader: type: apiKey description: Bearer token in: header name: x-litellm-api-key