---
title: "New Team"
method: POST
path: "/team/new"
tags: ["team management"]
---

# New Team

`POST /team/new`

Allow users to create a new team. Apply user permissions to their team.

👉 [Detailed Doc on setting team budgets](https://docs.litellm.ai/docs/proxy/team_budgets)


Parameters:
- team_alias: Optional[str] - User defined team alias
- team_id: Optional[str] - The team id of the user. If none passed, we'll generate it.
- members_with_roles: List[{"role": "admin" or "user", "user_id": "<user-id>"}] - A list of users and their roles in the team. Get user_id when making a new user via `/user/new`.
- team_member_permissions: Optional[List[str]] - A list of routes that non-admin team members can access. example: ["/key/generate", "/key/update", "/key/delete"]
- metadata: Optional[dict] - Metadata for team, store information for team. Example metadata = {"extra_info": "some info"}
- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit for this team - applied across all keys for this team. 
- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit for this team - applied across all keys for this team.
- tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for this team - all keys with this team_id will have at max this TPM limit
- rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for this team - all keys associated with this team_id will have at max this RPM limit
- rpm_limit_type: Optional[Literal["guaranteed_throughput", "best_effort_throughput"]] - The type of RPM limit enforcement. Use "guaranteed_throughput" to raise an error if overallocating RPM, or "best_effort_throughput" for best effort enforcement.
- tpm_limit_type: Optional[Literal["guaranteed_throughput", "best_effort_throughput"]] - The type of TPM limit enforcement. Use "guaranteed_throughput" to raise an error if overallocating TPM, or "best_effort_throughput" for best effort enforcement.
- max_budget: Optional[float] - The maximum budget allocated to the team - all keys for this team_id will have at max this max_budget
- soft_budget: Optional[float] - The soft budget threshold for the team. If max_budget is set, soft_budget must be strictly lower than max_budget. Can be set independently if max_budget is not set.
- budget_duration: Optional[str] - The duration of the budget for the team. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)
- models: Optional[list] - A list of models associated with the team - all keys for this team_id will have at most, these models. If empty, assumes all models are allowed.
- blocked: bool - Flag indicating if the team is blocked or not - will stop all calls from keys with this team_id.
- members: Optional[List] - Control team members via `/team/member/add` and `/team/member/delete`.
- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).
- prompts: Optional[List[str]] - List of prompts that the team is allowed to use.
- organization_id: Optional[str] - The organization id of the team. Default is None. Create via `/organization/new`.
- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)
- guardrails: Optional[List[str]] - Guardrails for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails)
- policies: Optional[List[str]] - Policies for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails/guardrail_policies)
- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.
- object_permission: Optional[LiteLLM_ObjectPermissionBase] - team-specific object permission. Example - {"vector_stores": ["vector_store_1", "vector_store_2"], "agents": ["agent_1", "agent_2"], "agent_access_groups": ["dev_group"]}. IF null or {} then no object permission.
- team_member_budget: Optional[float] - The maximum budget allocated to an individual team member.
- team_member_rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for individual team members.
- team_member_tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for individual team members.
- team_member_key_duration: Optional[str] - The duration for a team member's key. e.g. "1d", "1w", "1mo"
- allowed_passthrough_routes: Optional[List[str]] - List of allowed pass through routes for the team.
- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{"index_name": "my-index", "index_permissions": ["write", "read"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.
- secret_manager_settings: Optional[dict] - Secret manager settings for the team. [Docs](https://docs.litellm.ai/docs/secret_managers/overview)
- router_settings: Optional[UpdateRouterConfig] - team-specific router settings. Example - {"model_group_retry_policy": {"max_retries": 5}}. IF null or {} then no router settings.
- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the team. Access groups define which models the team can access. Example - ["access_group_1", "access_group_2"].
- enforced_file_expires_after: Optional[dict] - Enforced file expiration policy for the team. Keys created under this team will inherit this policy for file uploads. Example - {"anchor": "created_at", "days": 30}.
- enforced_batch_output_expires_after: Optional[dict] - Enforced batch output file expiration policy for the team. Keys created under this team will inherit this policy for batch output files. Example - {"anchor": "created_at", "days": 30}.

Returns:
- team_id: (str) Unique team id - used for tracking spend across multiple keys for same team id.

_deprecated_params:
- admins: list - A list of user_id's for the admin role
- users: list - A list of user_id's for the user role

Example Request:
```
curl --location 'http://0.0.0.0:4000/team/new'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{
  "team_alias": "my-new-team_2",
  "members_with_roles": [{"role": "admin", "user_id": "user-1234"},
    {"role": "user", "user_id": "user-2434"}]
}'

```

 ```
curl --location 'http://0.0.0.0:4000/team/new'     --header 'Authorization: Bearer sk-1234'     --header 'Content-Type: application/json'     --data '{
            "team_alias": "QA Prod Bot",
            "max_budget": 0.000000001,
            "budget_duration": "1d"
        }'
```

## Headers

- `litellm-changed-by` string, nullable — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability

## Request body

- NewTeamRequest
  - `team_alias` string, nullable
  - `team_id` string, nullable
  - `organization_id` string, nullable
  - `admins` unknown[]
    - unknown
  - `members` unknown[]
    - unknown
  - `members_with_roles` Member[]
    - `user_id` string, nullable — The unique ID of the user to add. Either user_id or user_email must be provided
    - `user_email` string, nullable — The email address of the user to add. Either user_id or user_email must be provided
    - `role` 'admin' | 'user', required — The role of the user within the team. 'admin' users can manage team settings and members, 'user' is a regular team member
  - `team_member_permissions` string[], nullable
  - `metadata` object, nullable
  - `tpm_limit` integer, nullable
  - `rpm_limit` integer, nullable
  - `max_budget` number, nullable
  - `soft_budget` number, nullable
  - `budget_duration` string, nullable
  - `models` unknown[]
    - unknown
  - `blocked` boolean
  - `router_settings` object, nullable
  - `access_group_ids` string[], nullable
  - `model_aliases` object, nullable
  - `tags` unknown[], nullable
    - unknown
  - `guardrails` string[], nullable
  - `policies` string[], nullable
  - `prompts` string[], nullable
  - `object_permission` LiteLLMObjectPermissionBase
    - `mcp_servers` string[], nullable
    - `mcp_access_groups` string[], nullable
    - `mcp_tool_permissions` object, nullable
    - `vector_stores` string[], nullable
    - `agents` string[], nullable
    - `agent_access_groups` string[], nullable
    - `models` string[], nullable
  - `allowed_passthrough_routes` unknown[], nullable
    - unknown
  - `secret_manager_settings` object, nullable
  - `model_rpm_limit` object, nullable
  - `rpm_limit_type` 'guaranteed_throughput' | 'best_effort_throughput', nullable
  - `tpm_limit_type` 'guaranteed_throughput' | 'best_effort_throughput', nullable
  - `model_tpm_limit` object, nullable
  - `team_member_budget` number, nullable
  - `team_member_rpm_limit` integer, nullable
  - `team_member_tpm_limit` integer, nullable
  - `team_member_key_duration` string, nullable
  - `allowed_vector_store_indexes` AllowedVectorStoreIndexItem[], nullable
    - `index_name` string, required
    - `index_permissions` string[], required
  - `enforced_batch_output_expires_after` object, nullable
  - `enforced_file_expires_after` object, nullable

## Response `200`

Successful Response

- LiteLLMTeamTableOutput
  - `team_alias` string, nullable
  - `team_id` string, required
  - `organization_id` string, nullable
  - `admins` unknown[]
    - unknown
  - `members` unknown[]
    - unknown
  - `members_with_roles` Member[]
    - `user_id` string, nullable — The unique ID of the user to add. Either user_id or user_email must be provided
    - `user_email` string, nullable — The email address of the user to add. Either user_id or user_email must be provided
    - `role` 'admin' | 'user', required — The role of the user within the team. 'admin' users can manage team settings and members, 'user' is a regular team member
  - `team_member_permissions` string[], nullable
  - `metadata` object, nullable
  - `tpm_limit` integer, nullable
  - `rpm_limit` integer, nullable
  - `max_budget` number, nullable
  - `soft_budget` number, nullable
  - `budget_duration` string, nullable
  - `models` unknown[]
    - unknown
  - `blocked` boolean
  - `router_settings` object, nullable
  - `access_group_ids` string[], nullable
  - `spend` number, nullable
  - `max_parallel_requests` integer, nullable
  - `budget_reset_at` string, date-time, nullable
  - `model_id` integer, nullable
  - `litellm_model_table` LiteLLMModelTableOutput
    - `id` integer, nullable
    - `model_aliases` union
      - object
      - string
    - `created_by` string, required
    - `updated_by` string, required
    - `team` LiteLLMTeamTableOutput — recursive
  - `object_permission` LiteLLMObjectPermissionTable — Represents a LiteLLM_ObjectPermissionTable record
    - `object_permission_id` string, required
    - `mcp_servers` string[], nullable
    - `mcp_access_groups` string[], nullable
    - `mcp_tool_permissions` object, nullable
    - `vector_stores` string[], nullable
    - `agents` string[], nullable
    - `agent_access_groups` string[], nullable
  - `updated_at` string, date-time, nullable
  - `created_at` string, date-time, nullable
  - `object_permission_id` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/sea-lion/apis/litellm-api.md) · [All operations](https://skmtc.net/sea-lion/apis/litellm-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sea-lion/litellm-api/revisions/79928a3d37d3/schema)
