---
title: "Update project member limit"
method: PUT
path: "/v2/projects/{project_id}/member_limits/{member_limit_id}"
tags: ["member_limits"]
---

# Update project member limit

`PUT /v2/projects/{project_id}/member_limits/{member_limit_id}`

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/projects/{project_id}/member_limits/{member_limit_id}`
- Auth: OAuth 2
  - Authorization code: `https://account.hubstaff.com/authorizations/new`
  - Token URL: `https://account.hubstaff.com/access_tokens` scopes: `hubstaff:read`, `hubstaff:write`
- TypeScript: <https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/docs/v2/projects/:project_id/member_limits/:member_limit_id/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates a member budget limit group for the given project.

At least one of `member_ids`, `alerts`, or a complete budget configuration must be provided.

- `member_ids` — when provided, fully replaces the group's members. Omit to leave members unchanged.
- `alerts` — when provided, updates project-level settings shared by all groups. Omit to preserve alerts.
- Budget fields — provide the full set (`type` plus `cost` or `hours`, and optional `rate`, `recurrence`, `recurrence_start`, `start_date`) or omit them entirely. Mixed budget payloads are rejected.

Users moved from another group are reassigned automatically.

Returns the updated member limit group.

## Path parameters

- `project_id` integer, required
- `member_limit_id` integer, required

## Request body

- PutV2ProjectsProjectIdMemberLimitsMemberLimitId: Update project member limit
  - `type` 'cost' | 'hours': Member limit type (`cost` or `hours`)
  - `rate` 'bill_rate' | 'pay_rate': When type is cost, specifies which rate to use (`bill_rate` or `pay_rate`)
  - `cost` number, float: Cost limit (required when type is cost)
  - `hours` number, float: Hours limit (required when type is hours)
  - `start_date` string, date: Start date for fixed budgets (mutually exclusive with recurrence)
  - `recurrence` 'weekly' | 'monthly': Makes the limit reset periodically. Omit to preserve existing recurrence
  - `recurrence_start` integer: Weekly: 0=Sunday..6=Saturday. Monthly: day of month (1-31)
  - `alerts` object: Project-level alert settings shared across all groups on the project
    - `near_limit` integer: Percentage threshold for approaching-limit notifications (1-99)
    - `notify_members` boolean: Whether to notify members when approaching the limit
  - `member_ids` integer[]: Replaces the group member list when provided

## Response `200`

Member limit updated

- object
  - `member_limit` MemberLimit: MemberLimit model
    - `id` integer, required: Member limit group ID
    - `type` 'cost' | 'hours', required: Member limit type
    - `rate` 'bill_rate' | 'pay_rate': Rate used when type is cost
    - `cost` number, float: Cost limit when type is cost
    - `hours` number, float: Hours limit when type is hours
    - `start_date` string, date: Start date for fixed (non-recurring) budgets
    - `recurrence` 'weekly' | 'monthly': Budget recurrence period
    - `recurrence_start` integer: Weekly: day of week (0=Sunday through 6=Saturday). Monthly: day of month (1-31).
    - `alerts` object, required: Project-level alert settings shared by all member limit groups on the project
    - `member_ids` integer[], required: User IDs assigned to this member limit group
    - `created_at` string, date-time, required: When the record was created
    - `updated_at` string, date-time, required: When the record was last updated

## Other responses

- `400`: Invalid parameters
- `401`: Unauthorized
- `403`: API access is only for organizations on an active plan
- `404`: Could not find record
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api.md) - [All operations](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/revisions/c6b90e4e4bdc?raw)
