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

# Límites y gasto

> Qué puede agotar su organización, los dos encabezados que lo informan y cómo leer el costo de un stream.

Sus propias claves de proveedor no tienen un límite de gasto. Las claves gestionadas (Managed Keys) utilizan un saldo prepagado, por lo que pueden agotarse.

Dos encabezados de respuesta informan lo que le queda. `GET /v1/limits` informa el panorama completo en una sola llamada.

## Sus propias claves no tienen un límite de gasto

No establecemos un límite de solicitudes ni un tope mensual. Usted no tiene un saldo que agotar. Consulte [precios y facturación](/es/billing).

Se aplica un límite. Su organización ejecuta un número fijo de flex races a la vez. Superado ese número, ejecutamos la solicitud en el nivel estándar. Usted pierde el descuento, no la respuesta. El informe llama a ese número `own_keys.flex_race_slots`.

## Qué pueden agotar las claves gestionadas (Managed Keys)

| Límite                   | Qué cuenta                                                                                                    | Al alcanzar el límite                                                                     |
| :----------------------- | :------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------- |
| Saldo prepagado          | Efectivo primero, luego créditos promocionales.                                                               | [`insufficient_balance`](/es/errors#insufficient_balance), estado `402`.                  |
| Límite de gasto diario   | Gasto liquidado hoy, más las solicitudes en curso de hoy. La ventana es un día UTC.                           | [`spend_velocity_exceeded`](/es/errors#spend_velocity_exceeded), estado `429`.            |
| Concurrencia gestionada  | Sus solicitudes gestionadas en curso.                                                                         | [`rate_limit_exceeded`](/es/errors#rate_limit_exceeded), estado `429`, con `Retry-After`. |
| Tasa del pool compartido | Solicitudes por minuto en un pool que cada organización gestionada comparte. Hoy eso es Workers AI y Foundry. | [`rate_limit_exceeded`](/es/errors#rate_limit_exceeded), estado `429`.                    |

Una revisión de riesgo puede pausar las solicitudes gestionadas además de esas cuatro. Devuelve [`account_under_review`](/es/errors#account_under_review). Sus propias rutas de clave siguen funcionando.

Cuatro límites más cubren a cada organización. Tres cuentan las solicitudes por minuto de una organización, de una clave y de una dirección IP. El cuarto cuenta los intentos de autenticación fallidos desde una dirección IP. También rechazamos un cuerpo de más de 50,000,000 bytes como [`request_too_large`](/es/errors#request_too_large).

El informe nombra cada límite por minuto con su ventana y su alcance. Omite el número, porque Cloudflare cuenta cada uno en cada ubicación donde opera y un solo número no sería un presupuesto contra el cual planificar. En su lugar, espere los segundos indicados en `Retry-After`.

## Dos encabezados de respuesta informan su gasto

Una respuesta de claves propias los incluye una vez que sus rutas se resuelven, y una respuesta gestionada los incluye desde la retención del saldo.

Tres respuestas no tienen ninguno de los encabezados: una que rechazamos antes, el catálogo de modelos y una solicitud gestionada cuyo saldo no pudimos leer. Omitimos los encabezados en lugar de adivinar.

| Encabezado                        | Qué indica                                                                                                                                                                       |
| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `x-flexinference-spend-remaining` | La palabra `unlimited` cuando no se aplica un límite de gasto. De lo contrario, un entero micro-USD con signo. Es el menor entre su saldo y lo que el límite diario aún permite. |
| `x-flexinference-spend-as-of`     | Cuándo leímos ese número, en milisegundos de época. Solo viene con un número, ya que `unlimited` no necesita una marca de frescura.                                              |

Leemos ambos al admitir esta solicitud. El número cubre lo que le quedaba antes de que esta solicitud liquidara su propio costo.

Un número negativo significa que rechazamos cada solicitud gestionada. Añadir dinero repara un saldo negativo. Un remanente diario negativo se recupera a la próxima medianoche UTC o con un límite elevado, nunca con una recarga.

Lea estos encabezados en el tráfico que ya envía. Consultar el endpoint antes de cada solicitud cuesta un viaje de ida y vuelta y no le dice más de lo que ya hizo el encabezado.

## El endpoint de límites

`GET /v1/limits` toma su clave de FlexInference. Informa los límites bajo los cuales opera su organización. Lee los registros que admiten sus solicitudes, por lo que nunca reclama espacio que rechazaríamos. Nunca almacenamos en caché la respuesta.

```bash theme={null}
curl https://api.flexinference.com/v1/limits \
  -H "Authorization: Bearer $FLEXINFERENCE_API_KEY"
```

```json theme={null}
{
  "object": "limits",
  "as_of": 1769558400123,
  "own_keys": {
    "unlimited": true,
    "flex_race_slots": {
      "limit": 40,
      "scope": "organization",
      "on_exceed": "degrade_to_standard"
    }
  },
  "managed": {
    "providers": ["anthropic", "openai"],
    "serving": "ok",
    "paused_reason": null,
    "binding": "daily_spend",
    "spend_remaining_micro_usd": 41200000,
    "currency": "USD",
    "balance": {
      "remaining_micro_usd": 94880000,
      "cash_micro_usd": 84880000,
      "credit_micro_usd": 10000000,
      "reserved_micro_usd": 120000
    },
    "daily_spend": {
      "limit_micro_usd": 250000000,
      "used_micro_usd": 208800000,
      "remaining_micro_usd": 41200000,
      "window": "utc_day",
      "resets_at": 1769644800
    },
    "concurrency": {
      "limit": 10,
      "scope": "organization",
      "on_exceed": "refuse"
    },
    "ramp_week": 1,
    "ramp_defaults": {
      "concurrency": 10,
      "daily_spend_micro_usd": 250000000
    },
    "override_in_force": {
      "concurrency": false,
      "daily_spend": false
    },
    "rates": []
  },
  "abuse_limits": {
    "counted_per_cloudflare_location": true,
    "request_body_bytes": 50000000,
    "rates": [
      {
        "name": "organization_requests",
        "scope": "organization",
        "window_seconds": 60,
        "limit": null,
        "on_exceed": "refuse"
      },
      {
        "name": "api_key_requests",
        "scope": "api_key",
        "window_seconds": 60,
        "limit": null,
        "on_exceed": "refuse"
      },
      {
        "name": "client_ip_requests",
        "scope": "client_ip",
        "window_seconds": 60,
        "limit": null,
        "on_exceed": "refuse"
      },
      {
        "name": "failed_authentications",
        "scope": "client_ip",
        "window_seconds": 60,
        "limit": null,
        "on_exceed": "refuse"
      }
    ]
  }
}
```

Cada campo monetario es un entero micro-USD. Un USD equivale a 1,000,000 de ellos.

| Campo                               | Qué indica                                                                                                                                                                         |
| :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `as_of`                             | Milisegundos de época. El reloj propio del saldo cuando leemos un saldo, y el nuestro cuando no lo hicimos.                                                                        |
| `own_keys.unlimited`                | Siempre `true`.                                                                                                                                                                    |
| `own_keys.flex_race_slots`          | Cuántas flex races se ejecutan a la vez. Superar el número cuesta el descuento, no la respuesta.                                                                                   |
| `managed`                           | `null` cuando ningún proveedor sirve con claves gestionadas.                                                                                                                       |
| `managed.serving`                   | `ok`, o `paused` en cada uno de los tres estados que rechazan cada solicitud gestionada.                                                                                           |
| `managed.paused_reason`             | Qué estado. Uno de `account_under_review`, `spend_velocity_exceeded`, o `insufficient_balance`. Es `null` mientras `serving` lee `ok`.                                             |
| `managed.binding`                   | Qué límite se alcanza primero. Uno de `balance`, `daily_spend`, `paused`, o `exempt`.                                                                                              |
| `managed.spend_remaining_micro_usd` | El número que lleva el encabezado `x-flexinference-spend-remaining`.                                                                                                               |
| `managed.balance`                   | `remaining_micro_usd` es efectivo más crédito. Esa es la cantidad que comparamos con cero. `reserved_micro_usd` es dinero que sus solicitudes en curso retienen, y no lo restamos. |
| `managed.daily_spend`               | El límite, lo que se ha usado hoy y lo que queda. `resets_at` es la próxima medianoche UTC en segundos de época.                                                                   |
| `managed.concurrency`               | Cuántas solicitudes gestionadas ejecuta su organización a la vez.                                                                                                                  |
| `managed.ramp_week`                 | En qué semana del cronograma de antigüedad de la cuenta se encuentra. La semana 0 cubre una cuenta que nunca ha recargado.                                                         |
| `managed.ramp_defaults`             | Lo que esa semana por sí sola le otorga. Un número de concurrencia y un límite diario.                                                                                             |
| `managed.override_in_force`         | Una bandera por límite escalonado. `true` significa que un administrador estableció ese número, por lo que el cronograma semanal no lo moverá.                                     |
| `managed.rates`                     | Los límites por minuto en los pools compartidos en los que sirve esta organización.                                                                                                |
| `abuse_limits`                      | Los límites que comparte cada organización, más el límite del cuerpo en bytes.                                                                                                     |

Los últimos tres campos explican por qué su número de concurrencia y su límite diario se leen como lo hacen. Una organización exenta no tiene un límite que explicar, por lo que los tres se leen como `null`.

Un saldo en pausa informa la pausa en lugar de un número. Ninguna cifra positiva puede interpretarse entonces como permiso para enviar.

Estos números se mantienen en `as_of` y no prometen nada sobre su próxima solicitud. Otra solicitud los mueve, al igual que una liquidación, una recarga o un reembolso.

Una clave faltante o incorrecta devuelve `401` con [`invalid_api_key`](/es/errors#invalid_api_key). Cuando no podemos leer uno de estos registros, el endpoint devuelve `503` con [`limits_unavailable`](/es/errors#limits_unavailable). Se niega a entregarle una cifra en caché, lo que podría reclamar espacio que su próxima solicitud no obtendría. Las solicitudes siguen funcionando de cualquier manera.

## Costo dentro de un stream

Una respuesta que no transmitió (stream) informa su costo dos veces, en el encabezado `x-flexinference-cost` y en el bloque `usage.cost`. Una respuesta transmitida no puede usar el encabezado, porque enviamos los encabezados antes de que exista la respuesta y no conocemos el costo en ese momento.

Envíe `include_cost: true` para mover el costo dentro del stream.

```json theme={null}
{
  "model": "gpt-5.5",
  "start_within": "00h-00m-30s",
  "stream": true,
  "include_cost": true,
  "input": "Summarize this contract."
}
```

El costo luego va en el marco de uso que el endpoint ya envía. Un bloque `usage.routing` se encuentra junto a él y nombra la ruta que ejecutó la solicitud.

```json theme={null}
"usage": {
  "input_tokens": 412,
  "output_tokens": 128,
  "cost": { "total_micro_usd": 1840, "currency": "USD" },
  "routing": {
    "provider": "openai",
    "requested_provider": "openai",
    "tier": "flex",
    "reason": "flex_won",
    "fallback_attempts": 0,
    "mode": "byok"
  }
}
```

El interruptor permanece apagado por defecto. Un stream al que no le pidió esto coincide con lo que el proveedor envió, byte por byte.

`/v1/chat/completions` hace que el marco de uso sea opcional en OpenAI. Envíe `"stream_options": {"include_usage": true}` también. Sin él, el costo no tiene un marco donde ir.

Una solicitud gestionada informa lo que el proveedor nos cobró. Una solicitud de claves propias informa el precio de lista del proveedor en el nivel que la ejecutó. Una solicitud que no podemos cotizar no informa ningún `cost` en absoluto. Lea un bloque faltante como nada que informar, no como cero.

Dos encabezados de enrutamiento vienen en cada respuesta de cualquier manera. Son `x-flexinference-served-provider` y `x-flexinference-routing-reason`. Un llamador de streaming que omite `include_cost` aún ve qué ruta ejecutó la solicitud y por qué. Consulte [lectura del resultado](/es/deadline-routing).

`include_cost` nunca llega al proveedor. Lo eliminamos del cuerpo antes de reenviar la solicitud.
