openapi: 3.2.0 info: title: LiteLLM project 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: project management paths: /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 Parameters: - project_id: *str* - The project id to fetch info for Example: ```bash curl --location ''http://0.0.0.0:4000/project/info?project_id=project-123'' \ --header ''Authorization: Bearer sk-1234'' ```' 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 Example: ```bash curl --location ''http://0.0.0.0:4000/project/list'' \ --header ''Authorization: Bearer sk-1234'' ```' 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: [] components: schemas: 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_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.' HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError 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 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 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 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 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 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 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 securitySchemes: APIKeyHeader: type: apiKey description: Bearer token in: header name: x-litellm-api-key