openapi: 3.2.0 info: title: LiteLLM project management API description: 'Proxy Server to call 100+ LLMs in the OpenAI format. **Customize Swagger Docs** 👉 ```LiteLLM Admin Panel on /ui```. Create, Edit Keys with SSO. Having issues? Try ```Fallback Login``` 💸 ```LiteLLM Model Cost Map```. 🔎 ```LiteLLM Model Hub```. See available models on the proxy. **Docs**' version: 1.102.1 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. Only admins or team admins can create projects. # Parameters - project_alias: *Optional[str]* - The name of the project. - description: *Optional[str]* - Description of the project''s purpose and use case. - team_id: *str* - The team id that this project belongs to. Required. - models: *List* - The models the project has access to. - budget_id: *Optional[str]* - The id for a budget (tpm/rpm/max budget) for the project. ### IF NO BUDGET ID - CREATE ONE WITH THESE PARAMS ### - max_budget: *Optional[float]* - Max budget for project - tpm_limit: *Optional[int]* - Max tpm limit for project - rpm_limit: *Optional[int]* - Max rpm limit for project - max_parallel_requests: *Optional[int]* - Max parallel requests for project - soft_budget: *Optional[float]* - Get a slack alert when this soft budget is reached. Don''t block requests. - model_max_budget: *Optional[dict]* - Max budget for a specific model. Example: {"gpt-4": 100.0, "gpt-3.5-turbo": 50.0} - model_rpm_limit: *Optional[dict]* - RPM limits per model. Example: {"gpt-4": 1000, "gpt-3.5-turbo": 5000} - model_tpm_limit: *Optional[dict]* - TPM limits per model. Example: {"gpt-4": 50000, "gpt-3.5-turbo": 100000} - budget_duration: *Optional[str]* - Frequency of reseting project budget - metadata: *Optional[dict]* - Metadata for project, store information for project. Example metadata - {"use_case_id": "SNOW-12345", "responsible_ai_id": "RAI-67890"} - tags: *Optional[list]* - Tags for the project. Example: ["production", "api"] - blocked: *bool* - Flag indicating if the project is blocked or not - will stop all calls from keys with this project_id. - 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. Example 1: Create new project **without** a budget_id, with model-specific limits ```bash curl --location ''http://0.0.0.0:4000/project/new'' \ --header ''Authorization: Bearer sk-1234'' \ --header ''Content-Type: application/json'' \ --data ''{ "project_alias": "flight-search-assistant", "description": "AI-powered flight search and booking assistant", "team_id": "team-123", "models": ["gpt-4", "gpt-3.5-turbo"], "max_budget": 100, "model_rpm_limit": { "gpt-4": 1000, "gpt-3.5-turbo": 5000 }, "model_tpm_limit": { "gpt-4": 50000, "gpt-3.5-turbo": 100000 }, "metadata": { "use_case_id": "SNOW-12345", "responsible_ai_id": "RAI-67890" } }'' ``` Example 2: Create new project **with** a budget_id ```bash curl --location ''http://0.0.0.0:4000/project/new'' \ --header ''Authorization: Bearer sk-1234'' \ --header ''Content-Type: application/json'' \ --data ''{ "project_alias": "hotel-recommendations", "description": "Personalized hotel recommendation engine", "team_id": "team-123", "models": ["claude-3-sonnet"], "budget_id": "428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689", "metadata": { "use_case_id": "SNOW-54321" } }'' ```' 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 Parameters: - project_id: *str* - The project id to update. Required. - project_alias: *Optional[str]* - Updated name for the project - description: *Optional[str]* - Updated description for the project - team_id: *Optional[str]* - Updated team_id for the project - metadata: *Optional[dict]* - Updated metadata for project - models: *Optional[list]* - Updated list of models for the project - blocked: *Optional[bool]* - Updated blocked status - max_budget: *Optional[float]* - Updated max budget - tpm_limit: *Optional[int]* - Updated tpm limit - rpm_limit: *Optional[int]* - Updated rpm limit - model_rpm_limit: *Optional[dict]* - Updated RPM limits per model - model_tpm_limit: *Optional[dict]* - Updated TPM limits per model - budget_duration: *Optional[str]* - Updated budget duration - tags: *Optional[list]* - Updated list of tags for the project - object_permission: Optional[LiteLLM_ObjectPermissionBase] - Updated object permission Example: ```bash curl --location ''http://0.0.0.0:4000/project/update'' \ --header ''Authorization: Bearer sk-1234'' \ --header ''Content-Type: application/json'' \ --data ''{ "project_id": "project-123", "description": "Updated flight search system with enhanced capabilities", "max_budget": 200, "model_rpm_limit": { "gpt-4": 2000, "gpt-3.5-turbo": 10000 }, "metadata": { "use_case_id": "SNOW-12345", "status": "active" } }'' ```' 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 Parameters: - project_ids: *List[str]* - List of project ids to delete Example: ```bash curl --location --request DELETE ''http://0.0.0.0:4000/project/delete'' \ --header ''Authorization: Bearer sk-1234'' \ --header ''Content-Type: application/json'' \ --data ''{ "project_ids": ["project-123", "project-456"] }'' ```' 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_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 skills: anyOf: - items: type: string type: array - type: 'null' title: Skills type: object required: - object_permission_id title: LiteLLM_ObjectPermissionTable description: Represents a LiteLLM_ObjectPermissionTable record 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 skills: anyOf: - items: type: string type: array - type: 'null' title: Skills type: object title: LiteLLM_ObjectPermissionBase NewProjectRequest: properties: budget_id: anyOf: - type: string - type: 'null' title: Budget Id soft_budget: anyOf: - type: number - type: 'null' title: Soft Budget max_budget: anyOf: - type: number - type: 'null' title: Max Budget max_parallel_requests: anyOf: - type: integer - type: 'null' title: Max Parallel Requests tpm_limit: anyOf: - type: integer - type: 'null' title: Tpm Limit rpm_limit: anyOf: - type: integer - type: 'null' title: Rpm Limit model_max_budget: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Max Budget budget_duration: anyOf: - type: string - type: 'null' title: Budget Duration allowed_models: anyOf: - items: type: string type: array - type: 'null' title: Allowed Models project_id: anyOf: - type: string - type: 'null' title: Project Id project_alias: anyOf: - type: string - type: 'null' title: Project Alias description: anyOf: - type: string - type: 'null' title: Description team_id: type: string title: Team Id metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Metadata tags: anyOf: - items: type: string type: array - type: 'null' title: Tags guardrails: anyOf: - items: type: string type: array - type: 'null' title: Guardrails policies: anyOf: - items: type: string type: array - type: 'null' title: Policies models: items: type: string type: array title: Models default: [] model_rpm_limit: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Rpm Limit model_tpm_limit: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Tpm Limit model_itpm_limit: anyOf: - additionalProperties: type: integer type: object - type: 'null' title: Model Itpm Limit model_otpm_limit: anyOf: - additionalProperties: type: integer type: object - type: 'null' title: Model Otpm Limit blocked: type: boolean title: Blocked default: false object_permission: anyOf: - $ref: '#/components/schemas/LiteLLM_ObjectPermissionBase' - type: 'null' type: object required: - team_id title: NewProjectRequest description: Request model for POST /project/new 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 UpdateProjectRequest: properties: budget_id: anyOf: - type: string - type: 'null' title: Budget Id soft_budget: anyOf: - type: number - type: 'null' title: Soft Budget max_budget: anyOf: - type: number - type: 'null' title: Max Budget max_parallel_requests: anyOf: - type: integer - type: 'null' title: Max Parallel Requests tpm_limit: anyOf: - type: integer - type: 'null' title: Tpm Limit rpm_limit: anyOf: - type: integer - type: 'null' title: Rpm Limit model_max_budget: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Max Budget budget_duration: anyOf: - type: string - type: 'null' title: Budget Duration allowed_models: anyOf: - items: type: string type: array - type: 'null' title: Allowed Models project_id: type: string title: Project Id project_alias: anyOf: - type: string - type: 'null' title: Project Alias description: anyOf: - type: string - type: 'null' title: Description team_id: anyOf: - type: string - type: 'null' title: Team Id metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Metadata tags: anyOf: - items: type: string type: array - type: 'null' title: Tags guardrails: anyOf: - items: type: string type: array - type: 'null' title: Guardrails policies: anyOf: - items: type: string type: array - type: 'null' title: Policies models: anyOf: - items: type: string type: array - type: 'null' title: Models model_rpm_limit: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Rpm Limit model_tpm_limit: anyOf: - additionalProperties: true type: object - type: 'null' title: Model Tpm Limit model_itpm_limit: anyOf: - additionalProperties: type: integer type: object - type: 'null' title: Model Itpm Limit model_otpm_limit: anyOf: - additionalProperties: type: integer type: object - type: 'null' title: Model Otpm Limit blocked: anyOf: - type: boolean - type: 'null' title: Blocked object_permission: anyOf: - $ref: '#/components/schemas/LiteLLM_ObjectPermissionBase' - type: 'null' type: object required: - project_id title: UpdateProjectRequest description: Request model for POST /project/update 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 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 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_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 securitySchemes: APIKeyHeader: type: apiKey description: Bearer token in: header name: x-litellm-api-key