---
title: "Bulk Update Team Member Budgets Action"
method: POST
path: "/management/v1/teams/{team_id}/members/bulk_update"
tags: ["team management"]
---

# Bulk Update Team Member Budgets Action

`POST /management/v1/teams/{team_id}/members/bulk_update`

## Request

- Base URL: `https://api.sea-lion.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sea-lion.ai/management/v1/teams/{team_id}/members/bulk_update`
- Auth: API key in header `x-litellm-api-key`

Set per-member limits for up to 500 members of one team in one call. Same
authorization and member addressing as `/team/member_update`: proxy admins, the team's
admins, and admins of the team's organization, with each member named by exactly one of
`user_id` or `user_email`. Unknown body fields are a 422 and an unknown team is a 404.

Each row is a merge patch of that member's limits: a field left out is untouched, a
field sent as null is cleared, and clearing the last limit drops the member back to the
team default. A budget row shared by several memberships, the team default included, is
copied for the member being patched rather than written in place, so one member's new
cap never lands on anybody else.

`data` holds one result per requested member, in request order, carrying the limits in
force after the write. A row is `success: false` with an `error` when it names nobody on
the team or repeats an earlier row. Roles are not part of this route; `/team/member_update`
still owns them.

Example curl:
```
curl --location 'http://0.0.0.0:4000/management/v1/teams/team-1/members/bulk_update'         --header "Authorization: Bearer $LITELLM_MASTER_KEY"         --header 'Content-Type: application/json'         --data '{"members": [{"user_id": "user-1", "max_budget_in_team": 10}, {"user_email": "user-2@example.com", "max_budget_in_team": 10, "budget_duration": "30d"}]}'
```

## Path parameters

- `team_id` string, required

## 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

- BulkTeamMemberBudgetUpdateRequest: Body of `POST /management/v1/teams/{team_id}/members/bulk_update`.
  - `members` TeamMemberBudgetPatch[], required
    - `user_id` string, nullable
    - `user_email` string, nullable
    - `max_budget_in_team` number, nullable
    - `tpm_limit` integer, nullable
    - `rpm_limit` integer, nullable
    - `budget_duration` string, nullable
    - `allowed_models` string[], nullable

## Response `200`

Successful Response

- BulkTeamMemberBudgetUpdateResponse: `{data: [...]}` with one `TeamMemberBudgetUpdateResult` per requested member, in request order.
  - `data` TeamMemberBudgetUpdateResult[], required
    - `user_id` string, nullable
    - `user_email` string, nullable
    - `success` boolean, required
    - `error` string, nullable
    - `budget_id` string, nullable
    - `max_budget` number, nullable
    - `max_budget_source` 'member' | 'team_default', nullable
    - `tpm_limit` integer, nullable
    - `rpm_limit` integer, nullable
    - `budget_duration` string, nullable
    - `allowed_models` string[], nullable

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-21** `f2fb14eab3f5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sea-lion/apis/litellm-api/changes/management/v1/teams/:team_id/members/bulk_update/post.md)

---

[API](https://skmtc.dev/sea-lion/apis/litellm-api.md) · [All operations](https://skmtc.dev/sea-lion/apis/litellm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sea-lion/apis/litellm-api/revisions/1ba9123c189a?raw)
