> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# User ACU Caps

> Read and set per-user ACU limit overrides via the service-key API on Devin federal deployments.

<Info>
  This documentation is for the federal deployments of Devin. [Back to Devin Docs](/get-started/devin-intro)
</Info>

Read and manage manual per-user ACU overrides. An override replaces the user's group ACU limits, but the team ACU limit still caps the team's total usage — see [ACU Limits](/federal/acu-limits). These endpoints are available only on multi-tenant federal deployments. They use **Teams Read-Only** for reads and **Teams Update** for writes.

Both endpoints select the user with a `user` object containing exactly one of:

<ParamField body="user.email" type="string">
  The user's email address.
</ParamField>

<ParamField body="user.user_id" type="string">
  The user's stable ID, as returned by the API (for example in [group member](/federal/api/group-management#list-group-members) or [ACU consumption](/federal/api/acu-consumption) rows).
</ParamField>

Group-scoped service keys can only select current members of their assigned group; other users return `not_found`. See the [API overview](/federal/api/overview) for authentication and errors.

The cap object returned by both endpoints:

| Field | Description |
| - | - |
| `user_id` | The user's stable ID. |
| `email` | The user's email. |
| `configured_cycle_acu_limit` | The direct per-user override, if one is set. A value of `0` means the user is blocked. Omitted when no override exists. |
| `effective_cycle_acu_limit` | The per-user limit enforced for the user: their override if one is set, otherwise their highest group ACU limit. Omitted when no limit applies. Does not include the team ACU limit, which is checked separately against total team usage. |

***

## Get a user's ACU cap

```
POST /api/v1/GetUserAcuCap
```

```bash theme={null}
curl -X POST https://<your-server>/api/v1/GetUserAcuCap \
  -H "Content-Type: application/json" \
  -d '{
    "service_key": "your_service_key",
    "user": {"email": "dev@agency.gov"}
  }'
```

```json theme={null}
{
  "cap": {
    "userId": "user_abc",
    "email": "dev@agency.gov",
    "configuredCycleAcuLimit": 25,
    "effectiveCycleAcuLimit": 25
  }
}
```

## Set or clear a user's ACU cap

```
POST /api/v1/UpdateUserAcuCap
```

Exactly one of the following must be provided:

<ParamField body="set_cycle_acu_limit" type="number">
  Sets the user's per-cycle ACU override. Must be non-negative; `0` blocks the user from consuming any ACUs.
</ParamField>

<ParamField body="clear_cycle_acu_limit" type="boolean">
  Removes the user's override so their group ACU limits apply again.
</ParamField>

```bash theme={null}
curl -X POST https://<your-server>/api/v1/UpdateUserAcuCap \
  -H "Content-Type: application/json" \
  -d '{
    "service_key": "your_service_key",
    "user": {"email": "dev@agency.gov"},
    "set_cycle_acu_limit": 25
  }'
```

The response contains the updated `cap` object.

<Note>
  A user override of `0` **blocks** the user. The service-key group API does not accept a zero group cap: `set_cycle_acu_limit` must be positive and `clear_cycle_acu_limit` removes the group override. The portal's separate group-limit operation treats `0` as clearing. See [ACU Limits](/federal/acu-limits).
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.