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

# Límites de ACU a nivel de usuario

> Limita el consumo mensual de ACU de cada usuario mediante niveles, asignaciones de grupos de IdP y anulaciones por usuario

<Note>
  Los límites a nivel de usuario están en versión beta y requieren que esta función esté habilitada para tu empresa. Para habilitarla, ponte en contacto con tu equipo de cuenta.
</Note>

Un límite a nivel de usuario restringe el uso combinado de ACU **local y en la nube** del usuario: las sesiones de Devin en la nube, Devin Desktop, Windsurf JetBrains y Devin CLI cuentan para el mismo límite. Cuando un usuario alcanza su límite, no puede iniciar trabajo nuevo en esas superficies hasta que se aumente el límite o el uso se restablezca en el siguiente período mensual.

Puedes gestionar los niveles y los límites a nivel de usuario desde la aplicación web, en **Settings de Enterprise**, dentro de **Políticas de uso** (consulta la [guía de Políticas de uso](/es/enterprise/features/usage-policies)), o mediante los [endpoints de políticas de uso](#tier-endpoints) que se indican a continuación.

Los límites a nivel de usuario se gestionan mediante **niveles**. Un nivel es un límite predeterminado para toda la cuenta, con nombre, que comparten sus miembros:

* Los usuarios pueden pertenecer a niveles de tres maneras: un Admin los **asigna explícitamente**, una [**asignación de grupo de IdP**](#idp-group-endpoints) los sitúa en un nivel (un grupo se asigna a un nivel y sus miembros heredan ese nivel, salvo que se les asigne explícitamente otro), o se les asigna el **nivel predeterminado**. Cada cuenta puede designar un nivel como predeterminado; todos los miembros de la cuenta que no tengan otra asignación pertenecen a él. No existe un «límite de usuario predeterminado» independiente; configura el nivel predeterminado en su lugar.
* Los usuarios individuales pueden tener una **anulación**: **permanente** (no vence nunca) o **temporal** (vence al final del período mensual actual). Las anulaciones se aplican a usuarios concretos: establecer una nunca cambia la asignación de nivel del usuario.
* El **límite efectivo** de un usuario se determina en este orden: anulación permanente; en caso contrario, una anulación temporal activa; en caso contrario, el `cycle_acu_limit` de su nivel asignado explícitamente; en caso contrario, el límite de su nivel asignado mediante el grupo de IdP con mayor prioridad; en caso contrario, el límite del nivel predeterminado. Un límite `null` significa que no hay límite.
* Los usuarios pueden solicitar un límite mayor; los Admin revisan estas [**solicitudes de aumento de límite**](#limit-increase-request-endpoints), y la `policy` de cada nivel controla si las solicitudes se aprueban automáticamente o se someten a revisión manual.

Los límites a nivel de usuario son independientes de los [límites a nivel de organización](/es/admin/billing/org-acu-limits): una solicitud se bloquea si se ha alcanzado cualquiera de ellos. Consulta [Límites de ACU](/es/admin/billing/acu-limits) para conocer la autenticación, los permisos y la semántica de `PATCH` compartida por todos los endpoints de esta página.

<Warning>
  Los endpoints de límites por usuario y de límite de usuario predeterminado anteriores a los niveles están obsoletos; consulta [Endpoints heredados de límites de ACU de usuario](/es/admin/billing/legacy-user-acu-limits).
</Warning>

<div id="tier-endpoints">
  ## Endpoints de nivel
</div>

<div id="list-tiers">
  ### Listar niveles
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers
```

Devuelve una lista paginada de niveles en orden de precedencia: primero la `priority` más alta y, dentro de cada prioridad, el nivel más reciente. Cada nivel tiene este aspecto:

```json theme={null}
{
  "tier_id": "tier-abc123",
  "name": "Engineers",
  "is_default": true,
  "cycle_acu_limit": 500,
  "policy": "manual",
  "max_limit": null,
  "priority": 0,
  "member_count": 42,
  "created_at": 1735689600
}
```

* `is_default`: indica si este es el nivel predeterminado de la cuenta.
* `cycle_acu_limit`: el límite predeterminado de ACU por ciclo para cada miembro; `null` significa que no hay límite.
* `policy`: cómo se gestionan las solicitudes de aumento de límite para el nivel: `unconditional` y `conditional` aprueban aumentos hasta `max_limit`, mientras que `manual` requiere la revisión de un Admin. La política `conditional` (aprobación automática basada en la eficiencia) requiere habilitación independiente; ponte en contacto con tu equipo de cuenta.
* `max_limit`: el límite máximo hasta el que se aprueban las solicitudes de aumento; `null` aprueba aumentos sin límite. Siempre es `null` cuando `cycle_acu_limit` es `null`.
* `priority`: ordena el nivel entre los niveles de un usuario asignados mediante grupos de IdP: prevalece el valor más alto; en caso de empate, prevalece el nivel más reciente. La clasificación solo determina la precedencia: un nivel con mayor prioridad puede tener un `cycle_acu_limit` menor. Una asignación explícita a un usuario anula esta clasificación, y el nivel predeterminado nunca se clasifica.
* `member_count`: el número de usuarios que están actualmente en el nivel: usuarios asignados explícitamente más usuarios incorporados mediante una asignación de grupos de IdP. Para el nivel predeterminado, cuenta a todos los miembros de la cuenta que no estén en otro nivel.

<Note>
  Configura el nivel predeterminado y la prioridad de los niveles desde la aplicación web, en **Políticas de uso**.
</Note>

<div id="create-a-tier">
  ### Crear un nivel
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/tiers
```

**Cuerpo de la solicitud**

```json theme={null}
{
  "name": "Engineers",
  "cycle_acu_limit": 500,
  "policy": "manual"
}
```

El primer nivel de la cuenta se convierte automáticamente en el nivel predeterminado. Devuelve el código HTTP `201` con el nivel creado.

<div id="get-a-tier">
  ### Obtener un nivel
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

<div id="update-a-tier">
  ### Actualizar un nivel
</div>

```http theme={null}
PATCH /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

Actualización parcial; los campos omitidos no se modifican. Para cambiar el nivel predeterminado o su prioridad, use la aplicación web en **Políticas de uso**.

```json theme={null}
{
  "name": "Engineering",
  "cycle_acu_limit": 750
}
```

<div id="delete-a-tier">
  ### Eliminar un nivel
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/tiers/{tier_id}
```

Devuelve HTTP `204` si se realiza correctamente. El nivel predeterminado no se puede eliminar (primero promocione otro nivel). Primero se deben trasladar los usuarios de un nivel que aún tenga usuarios y eliminar cualquier asignación de grupos de IdP a ese nivel.

<div id="tier-user-endpoints">
  ## Endpoints de usuario por nivel
</div>

<div id="list-a-tiers-users">
  ### Listar los usuarios de un nivel
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users
```

Devuelve una lista paginada de los usuarios del nivel con sus límites aplicables: usuarios asignados explícitamente y usuarios incluidos mediante una asignación de grupos de IdP. En el caso del nivel predeterminado, incluye a todos los miembros de la cuenta que no pertenezcan a otro nivel:

```json theme={null}
{
  "user_id": "user_abc123",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "cycle_acu_limit_override": null,
  "temporary_cycle_acu_limit": 800,
  "effective_cycle_acu_limit": 800,
  "limit_source": "temporary_override",
  "membership": "explicit"
}
```

* `cycle_acu_limit_override`: la anulación permanente del usuario, si existe.
* `temporary_cycle_acu_limit`: la anulación temporal del usuario, presente únicamente mientras esté activa durante el período de facturación mensual actual.
* `effective_cycle_acu_limit`: el límite vigente para el usuario; `null` significa que no tiene límite.
* `limit_source`: el origen del límite efectivo: `override` (permanente), `temporary_override` o `tier`.
* `membership`: el motivo por el que el usuario pertenece al nivel: `explicit` (asignado directamente), `idp_group` (mediante la asignación ganadora de su grupo de IdP) o `default` (como alternativa, el nivel predeterminado).

<div id="assign-a-user-to-a-tier">
  ### Asignar un usuario a un nivel
</div>

```http theme={null}
PUT /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users/{user_id}
```

Idempotente. Devuelve HTTP `204` cuando se realiza correctamente. Al mover a un usuario desde otro nivel, se borra cualquier anulación por usuario, por lo que empezará heredando el límite del nivel de destino.

<div id="remove-a-user-from-a-tier">
  ### Eliminar un usuario de un nivel
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/tiers/{tier_id}/users/{user_id}
```

Elimina la asignación explícita de nivel del usuario (y cualquier anulación) y lo devuelve al nivel predeterminado. Devuelve HTTP `204` si la operación se realiza correctamente.

<div id="user-override-endpoint">
  ## Endpoint de anulación por usuario
</div>

<div id="set-or-clear-a-users-override">
  ### Establecer o eliminar la anulación de un usuario
</div>

```http theme={null}
PATCH /v3beta1/enterprise/usage-policies/users/{user_id}
```

Con ámbito de usuario: el destino solo debe ser miembro de la cuenta; no interviene ningún nivel y la asignación de nivel del usuario no cambia nunca. Un usuario que solo tiene una anulación (sin una asignación explícita de nivel) permanece en el nivel predeterminado.

**Cuerpo de la solicitud: establecer una anulación temporal**

```json theme={null}
{
  "cycle_acu_limit": 800,
  "kind": "temporary"
}
```

`kind` es obligatorio al establecer un valor: `permanent` no caduca; `temporary` caduca al final del período de facturación mensual actual.

**Cuerpo de la solicitud — eliminar todas las anulaciones**

```json theme={null}
{
  "cycle_acu_limit": null
}
```

El endpoint devuelve HTTP `204` si la operación se realiza correctamente.

<div id="idp-group-endpoints">
  ## Endpoints de grupos de IdP
</div>

Asigne un grupo de IdP a un nivel para que sus miembros hereden automáticamente ese nivel. Las asignaciones se determinan en tiempo real según la pertenencia a grupos y nunca modifican la asignación explícita de nivel de un usuario: una asignación explícita siempre prevalece. Para un usuario que pertenece a varios grupos asignados, se determina el nivel asignado de mayor rango (el de mayor `priority`; en caso de empate, el nivel más reciente).

<div id="list-idp-group-mappings">
  ### Listar asignaciones de grupos de IdP
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/idp-groups
```

Devuelve una lista paginada de las asignaciones de grupos a niveles de la cuenta, ordenadas de la más antigua a la más reciente. Filtra con `?tier_id=` para listar solo los grupos asignados a un nivel:

```json theme={null}
{
  "idp_group_id": "grp_abc123",
  "idp_group_name": "Engineering",
  "tier_id": "tier-abc123"
}
```

<div id="get-an-idp-groups-mapping">
  ### Obtener la asignación de un grupo de IdP
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

Devuelve un error HTTP `404` si el grupo no tiene ninguna asignación.

<div id="map-an-idp-group-to-a-tier">
  ### Asignar un grupo de IdP a un nivel
</div>

```http theme={null}
PUT /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

**Cuerpo de la solicitud**

```json theme={null}
{
  "tier_id": "tier-abc123"
}
```

Upsert idempotente. Un grupo se puede asignar, como máximo, a un nivel; por lo tanto, al asignar un grupo ya asignado, se lo mueve al nivel indicado.

<div id="unmap-an-idp-group">
  ### Desvincular un grupo de IdP
</div>

```http theme={null}
DELETE /v3beta1/enterprise/usage-policies/idp-groups/{idp_group_name}
```

Devuelve HTTP `204` si la operación se realiza correctamente. El nivel asignado deja de aplicarse a los miembros del grupo; los usuarios sin una asignación explícita ni otro nivel asignado pasan al nivel predeterminado.

<div id="limit-increase-request-endpoints">
  ## Endpoints para solicitudes de aumento de límite
</div>

Los usuarios pueden solicitar un límite más alto por ciclo. La `policy` del nivel del solicitante determina qué ocurre: `unconditional` y `conditional` aprueban automáticamente las solicitudes hasta el `max_limit` del nivel, mientras que `manual` deja la solicitud pendiente de revisión por parte de un admin mediante estos endpoints (o en **Políticas de uso** de la web app).

<Note>
  A diferencia de los demás endpoints de esta página, consultar solicitudes de aumento de límite requiere el permiso **ManageBilling**; las solicitudes incluyen la identidad del miembro y mensajes de texto libre, que son datos del workflow del admin.
</Note>

<div id="list-limit-increase-requests">
  ### Listar solicitudes de aumento de límite
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/requests
```

Devuelve una lista paginada que se puede filtrar con `?status=` (`pending`, `approved`, `denied`) y `?user_id=`:

```json theme={null}
{
  "request_id": 42,
  "user_id": "user_abc123",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "tier_id": "tier-abc123",
  "tier_name": "Engineers",
  "current_cycle_acu_limit": 500,
  "requested_cycle_acu_limit": 800,
  "message": "Wrapping up a large migration this month",
  "status": "pending",
  "created_at": 1735689600,
  "reviewed_at": null,
  "reviewer": null
}
```

* `tier_id` / `tier_name`: el nivel del solicitante (asignación explícita, mapeo de grupos de IdP o nivel predeterminado); `null` si la cuenta no tiene niveles.
* `current_cycle_acu_limit`: el límite aplicado actualmente al solicitante; `null` indica que no tiene límite.
* `reviewer`: el Admin que revisó la solicitud; `null` mientras esté pendiente.

<div id="get-a-limit-increase-request">
  ### Obtener una solicitud de aumento de límite
</div>

```http theme={null}
GET /v3beta1/enterprise/usage-policies/requests/{request_id}
```

<div id="approve-a-limit-increase-request">
  ### Aprobar una solicitud de aumento del límite
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/requests/{request_id}/approve
```

Otorga el límite solicitado como una **anulación temporal** que vence al final del período de facturación mensual en curso. Opcionalmente, otorga un límite diferente:

```json theme={null}
{
  "cycle_acu_limit": 700
}
```

Devuelve la solicitud actualizada. Devuelve el código HTTP `409` si la solicitud ya se revisó o el solicitante ya no pertenece a la cuenta.

<div id="deny-a-limit-increase-request">
  ### Rechazar una solicitud de aumento del límite
</div>

```http theme={null}
POST /v3beta1/enterprise/usage-policies/requests/{request_id}/deny
```

Devuelve la solicitud actualizada o HTTP `409` si ya se había revisado.

<div id="example-workflows">
  ## Ejemplos de flujos de trabajo
</div>

<div id="set-up-tiers-with-a-default-limit">
  ### Configurar niveles con un límite predeterminado
</div>

Cree un nivel predeterminado para que todos los usuarios tengan un límite mensual de 500 ACU:

```bash theme={null}
curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Standard", "cycle_acu_limit": 500, "policy": "manual"}'
```

Crea un nivel con un límite más alto y asígnale un usuario:

```bash theme={null}
curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Power users", "cycle_acu_limit": 2000, "policy": "manual"}'

curl -X PUT "https://api.devin.ai/v3beta1/enterprise/usage-policies/tiers/tier-abc123/users/user_abc123" \
  -H "Authorization: Bearer <token>"
```

Otorga temporalmente a un usuario un aumento de límite durante el resto del mes:

```bash theme={null}
curl -X PATCH "https://api.devin.ai/v3beta1/enterprise/usage-policies/users/user_abc123" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"cycle_acu_limit": 800, "kind": "temporary"}'
```

Asigna un grupo de IdP al nivel con un límite más alto y revisa una solicitud de aumento de límite pendiente:

```bash theme={null}
curl -X PUT "https://api.devin.ai/v3beta1/enterprise/usage-policies/idp-groups/Engineering" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"tier_id": "tier-abc123"}'

curl -X POST "https://api.devin.ai/v3beta1/enterprise/usage-policies/requests/42/approve" \
  -H "Authorization: Bearer <token>"
```

<div id="frequently-asked-questions">
  ## Preguntas frecuentes
</div>

<AccordionGroup>
  <Accordion title="¿A qué productos se aplican los límites a nivel de usuario?">
    Uso local y en la nube: las sesiones de Devin en la nube y el uso local desde la CLI y los IDE (Devin Desktop, Windsurf JetBrains y Devin CLI) cuentan para un único límite.
  </Accordion>

  <Accordion title="¿Cómo se determina el límite efectivo de un usuario?">
    Primero prevalece una anulación permanente; después, una anulación temporal activa; luego, el límite del nivel asignado explícitamente al usuario; a continuación, el límite de su nivel con la clasificación más alta asignado mediante grupos de IdP y, por último, el límite del nivel predeterminado. Un límite `null` en todos los niveles significa que el usuario no tiene límite.
  </Accordion>

  <Accordion title="¿Las anulaciones por usuario se suman al límite del nivel?">
    No. Una anulación sustituye el límite del nivel para ese usuario. Si el límite del nivel es de 500 ACU y un usuario tiene una anulación de 200 ACU, su límite efectivo es de 200 ACU.
  </Accordion>

  <Accordion title="¿Cuál es la diferencia entre una anulación permanente y una temporal?">
    Una anulación permanente nunca vence. Una anulación temporal vence al final del período mensual de facturación actual, tras lo cual el usuario vuelve al límite de su nivel. Aprobar una solicitud de aumento de límite concede una anulación temporal.
  </Accordion>

  <Accordion title="¿Sigue existiendo un límite de usuario predeterminado?">
    No como configuración independiente. Configure en su lugar el límite del nivel predeterminado; se aplica a todos los miembros de la cuenta que no estén asignados a otro nivel. Los [endpoints heredados del límite de ACU predeterminado por usuario](/es/admin/billing/legacy-user-acu-limits#default-user-limit-endpoints) ahora leen y escriben el límite del nivel predeterminado.
  </Accordion>

  <Accordion title="¿Qué sucede cuando alguien alcanza su límite?">
    Se bloquea todo trabajo nuevo, tanto en las superficies locales como en la nube. El usuario puede ponerse en contacto con un administrador de Enterprise para ajustar el límite o esperar a que comience el próximo período mensual.
  </Accordion>
</AccordionGroup>
