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

# Limites e gastos

> O que sua organização pode esgotar, os dois cabeçalhos que o informam e como ler o custo de um stream.

Suas próprias chaves de provedor não têm limite de gastos. As Managed Keys gastam um saldo pré-pago, portanto, podem se esgotar.

Dois cabeçalhos de resposta informam o que você tem restante. `GET /v1/limits` informa o panorama completo em uma única chamada.

## Suas próprias chaves não têm limite de gastos

Não definimos cota de requisições nem limite mensal. Você não mantém saldo para ser debitado. Consulte [preços e faturamento](/pt/billing).

Um limite se aplica. Sua organização executa um número fixo de flex races por vez. Ultrapassado esse número, executamos a requisição na camada padrão. Você perde o desconto, não a resposta. O relatório chama esse número de `own_keys.flex_race_slots`.

## O que as Managed Keys podem esgotar

| Limite                     | O que ele conta                                                                                                        | Ao atingir o limite                                                                       |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Saldo pré-pago             | Dinheiro primeiro, depois créditos promocionais.                                                                       | [`insufficient_balance`](/pt/errors#insufficient_balance), status `402`.                  |
| Limite de gastos diários   | Gastos liquidados hoje, mais requisições em andamento hoje. A janela é um dia UTC.                                     | [`spend_velocity_exceeded`](/pt/errors#spend_velocity_exceeded), status `429`.            |
| Concorrência gerenciada    | Suas requisições gerenciadas em andamento.                                                                             | [`rate_limit_exceeded`](/pt/errors#rate_limit_exceeded), status `429`, com `Retry-After`. |
| Taxa do pool compartilhado | Requisições por minuto em um pool que toda organização gerenciada compartilha. Hoje, isso inclui Workers AI e Foundry. | [`rate_limit_exceeded`](/pt/errors#rate_limit_exceeded), status `429`.                    |

Uma revisão de risco pode pausar requisições gerenciadas além desses quatro. Ela retorna [`account_under_review`](/pt/errors#account_under_review). Suas rotas de chave própria continuam funcionando.

Mais quatro limites cobrem todas as organizações. Três contam requisições por minuto de uma organização, de uma chave e de um endereço IP. O quarto conta tentativas de autenticação falhas de um endereço IP. Também recusamos um corpo de requisição com mais de 50.000.000 bytes como [`request_too_large`](/pt/errors#request_too_large).

O relatório nomeia cada limite por minuto com sua janela e seu escopo. Ele omite o número, porque a Cloudflare conta cada um em cada local onde opera e um único número não seria um orçamento contra o qual você poderia planejar. Em vez disso, aguarde pelos segundos em `Retry-After`.

## Dois cabeçalhos de resposta informam seus gastos

Uma resposta de chaves próprias os carrega assim que suas rotas são resolvidas, e uma resposta gerenciada os carrega a partir da retenção de saldo.

Três respostas não possuem nenhum dos cabeçalhos: uma que recusamos anteriormente, o catálogo de modelos e uma requisição gerenciada cujo saldo não pudemos ler. Omitimos os cabeçalhos em vez de tentar adivinhar.

| Cabeçalho                         | O que ele diz                                                                                                                                                                   |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `x-flexinference-spend-remaining` | A palavra `unlimited` quando nenhum limite de gastos se aplica. Caso contrário, um inteiro micro-USD assinado. É o menor entre seu saldo e o que o limite diário ainda permite. |
| `x-flexinference-spend-as-of`     | Quando lemos esse número, em milissegundos de época. Ele só vem com um número, já que `unlimited` não precisa de marca de atualização.                                          |

Lemos ambos ao admitir esta requisição. O número cobre o que você tinha restante antes que esta requisição liquidasse seu próprio custo.

Um número negativo significa que recusamos toda requisição gerenciada. Adicionar dinheiro corrige um saldo negativo. Um saldo diário negativo se recupera na próxima meia-noite UTC ou com um limite elevado, nunca com uma recarga.

Leia esses cabeçalhos no tráfego que você já envia. Consultar o endpoint antes de cada requisição custa uma ida e volta e não informa mais do que o cabeçalho já fez.

## O endpoint de limites

`GET /v1/limits` aceita sua chave FlexInference. Ele informa os limites sob os quais sua organização opera. Ele lê os registros que admitem suas requisições, então nunca reivindica espaço que recusaríamos. Nunca armazenamos a resposta em cache.

```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 monetário é um inteiro micro-USD. Um USD equivale a 1.000.000 deles.

| Campo                               | O que ele diz                                                                                                                                                                          |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `as_of`                             | Milissegundos de época. O próprio relógio do saldo quando lemos um saldo, e o nosso quando não o fizemos.                                                                              |
| `own_keys.unlimited`                | Sempre `true`.                                                                                                                                                                         |
| `own_keys.flex_race_slots`          | Quantas flex races são executadas por vez. Ultrapassar o número custa o desconto, não a resposta.                                                                                      |
| `managed`                           | `null` quando nenhum provedor atende com chaves gerenciadas.                                                                                                                           |
| `managed.serving`                   | `ok`, ou `paused` em cada um dos três estados que recusam toda requisição gerenciada.                                                                                                  |
| `managed.paused_reason`             | Qual estado. Um de `account_under_review`, `spend_velocity_exceeded`, ou `insufficient_balance`. É `null` enquanto `serving` lê `ok`.                                                  |
| `managed.binding`                   | Qual limite é atingido primeiro. Um de `balance`, `daily_spend`, `paused`, ou `exempt`.                                                                                                |
| `managed.spend_remaining_micro_usd` | O número que o cabeçalho `x-flexinference-spend-remaining` carrega.                                                                                                                    |
| `managed.balance`                   | `remaining_micro_usd` é dinheiro mais crédito. Essa é a quantidade que comparamos a zero. `reserved_micro_usd` é dinheiro que suas requisições em andamento retêm, e não o subtraímos. |
| `managed.daily_spend`               | O limite, o que foi usado hoje e o que resta. `resets_at` é a próxima meia-noite UTC em segundos de época.                                                                             |
| `managed.concurrency`               | Quantas requisições gerenciadas sua organização executa por vez.                                                                                                                       |
| `managed.ramp_week`                 | Em qual semana do cronograma de idade da conta você se encontra. A Semana 0 cobre uma conta que nunca fez recarga.                                                                     |
| `managed.ramp_defaults`             | O que essa semana sozinha lhe oferece. Um número de concorrência e um limite diário.                                                                                                   |
| `managed.override_in_force`         | Uma flag por limite escalonado. `true` significa que um administrador definiu esse número, então o cronograma semanal não o alterará.                                                  |
| `managed.rates`                     | Os limites por minuto nos pools compartilhados em que esta organização atende.                                                                                                         |
| `abuse_limits`                      | Os limites que toda organização compartilha, mais o limite de corpo em bytes.                                                                                                          |

Os últimos três campos explicam por que seu número de concorrência e seu limite diário são lidos como são. Uma organização isenta não tem limite para explicar, então todos os três são lidos como `null`.

Um saldo pausado informa a pausa em vez de um número. Nenhuma figura positiva pode então ser lida como permissão para enviar.

Esses números são válidos em `as_of` e não prometem nada sobre sua próxima requisição. Outra requisição os move, assim como uma liquidação, uma recarga ou um reembolso.

Uma chave ausente ou incorreta retorna `401` com [`invalid_api_key`](/pt/errors#invalid_api_key). Quando não conseguimos ler um desses registros, o endpoint retorna `503` com [`limits_unavailable`](/pt/errors#limits_unavailable). Ele recusa em vez de entregar um valor em cache, o que poderia reivindicar espaço que sua próxima requisição não obteria. As requisições continuam funcionando de qualquer forma.

## Custo dentro de um stream

Uma resposta que você não transmitiu (stream) informa seu custo duas vezes, no cabeçalho `x-flexinference-cost` e no bloco `usage.cost`. Uma resposta transmitida não pode usar o cabeçalho, porque enviamos os cabeçalhos antes que a resposta exista e não sabemos o custo naquele momento.

Envie `include_cost: true` para mover o custo para dentro do stream.

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

O custo então vai para o frame de uso que o endpoint já envia. Um bloco `usage.routing` fica ao lado e nomeia a rota que executou a requisição.

```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"
  }
}
```

A chave permanece desligada por padrão. Um stream para o qual você não solicitou isso corresponde ao que o provedor enviou, byte por byte.

`/v1/chat/completions` torna o próprio frame de uso opt-in na OpenAI. Envie `"stream_options": {"include_usage": true}` também. Sem isso, o custo não tem um frame para ser inserido.

Uma requisição gerenciada informa o que o provedor nos cobrou. Uma requisição de chaves próprias informa o preço de tabela do provedor na camada que a executou. Uma requisição que não podemos precificar não informa `cost` algum. Leia um bloco ausente como nada a relatar, não como zero.

Dois cabeçalhos de roteamento vêm em cada resposta de qualquer forma. Eles são `x-flexinference-served-provider` e `x-flexinference-routing-reason`. Um chamador de streaming que ignora `include_cost` ainda vê qual rota executou a requisição e por quê. Consulte [lendo o resultado](/pt/deadline-routing).

`include_cost` nunca chega ao provedor. Nós o removemos do corpo antes de encaminhar a requisição.
