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

# Limites e cobrança do GraphQL

> Como o Ayrshare contabiliza requisições GraphQL na sua cota da API, além dos limites de profundidade, campos, aliases e tamanho da requisição.

<h2 id="how-requests-are-counted">
  Como as requisições são contabilizadas
</h2>

**Cada campo de operação raiz executado é uma chamada de API.** Uma requisição GraphQL que pede quatro campos raiz é cobrada como quatro chamadas de API, exatamente como se você tivesse feito quatro requisições REST. Aliases na raiz contam separadamente, porque cada um despacha uma operação. Campos aninhados selecionados de uma resposta tipada não adicionam chamadas de API.

```graphql theme={"system"}
{
  history: postHistory(lastDays: 7)
  accounts: user
  comments: comments(id: "abc123")
  analytics: socialAnalytics(platforms: [INSTAGRAM])
}
```

Uma requisição HTTP, **quatro chamadas de API** contabilizadas na cota e no limite de taxa do seu plano.

Isso é intencional e é o modelo honesto: cada campo raiz faz o mesmo trabalho do nosso lado que a chamada REST equivalente, então custa o mesmo. O GraphQL economiza idas e voltas e permite buscar exatamente o que você precisa em um só lugar; não é uma forma de obter mais chamadas de API do que seu plano inclui.

As consequências práticas:

<ul class="custom-bullets">
  <li>Os limites do seu plano atual se aplicam sem alterações. Veja os <a href="/docs/apis/overview">limites da API</a> para saber a franquia do seu plano.</li>
  <li>Pedir uma operação raiz de que você não precisa custa o mesmo que chamá-la via REST. Selecionar os campos aninhados da resposta de que você precisa não adiciona chamadas.</li>
  <li>Uma requisição pode sofrer limitação de taxa <em>no meio da execução</em>. Os campos raiz concluídos mantêm seus dados, e apenas os campos raiz limitados retornam erros — veja <a href="/docs/apis/graphql/errors#partial-success">Sucesso parcial</a>.</li>
</ul>

<h2 id="query-limits">
  Limites de consulta
</h2>

O endpoint impõe alguns limites ao formato e ao tamanho de uma consulta. Eles existem para que uma única requisição não consuma uma quantidade excessiva da nossa capacidade e estão definidos bem acima do que o uso comum exige — se você estiver atingindo um deles, geralmente é sinal de uma consulta gerada por acidente, e não de uma necessidade real.

| Limite | Valor | Como você fica sabendo |
| - | - | - |
| Chamadas de API por requisição | 5 | `extensions.status` 429 em cada campo raiz excedente |
| Profundidade de aninhamento da consulta | 15 | Consulta rejeitada antes de ser executada |
| Campos por requisição | 300 | Consulta rejeitada antes de ser executada |
| Aliases por requisição | 25 | Consulta rejeitada antes de ser executada |
| Tamanho do corpo da requisição | 64 KB | HTTP 413 |

Uma consulta rejeitada retorna HTTP 400 se você enviar `Accept: application/graphql-response+json` e HTTP 200 caso contrário, com um array `errors` e nenhum `data` em ambos os casos. Veja [Erros](/docs/apis/graphql/errors).

<h3 id="api-calls-per-request">
  Chamadas de API por requisição
</h3>

O mais importante. Uma única requisição pode acionar no máximo **5** chamadas de API, então o exemplo acima com quatro campos raiz funciona, mas um com vinte campos raiz não. Depois que cinco despachos forem iniciados, os campos raiz adicionais retornam um 429 explicando o limite; os campos já despachados ainda podem retornar seus dados.

Se você precisar de mais, divida a consulta em várias requisições. Se perceber que faz isso rotineiramente para uma carga de trabalho legítima, [entre em contato](/docs/help-center/overview) — o limite é deliberadamente conservador no lançamento e aumentá-lo é simples, enquanto reduzi-lo depois quebraria integrações, por isso ele começa pequeno.

<h3 id="depth-fields-and-aliases">
  Profundidade, campos e aliases
</h3>

Esses limites são verificados antes de qualquer execução, então exceder um deles não consome nenhuma chamada de API.

Eles também ficam com folga acima de uma consulta de introspecção completa, que tem cerca de 180 campos e 12 níveis de profundidade sem aliases, então um cliente que busca o schema inteiro na inicialização funciona normalmente.

<h3 id="request-body-size">
  Tamanho do corpo da requisição
</h3>

64 KB, o que é generoso para uma consulta e pequeno demais para um arquivo. É por isso que mídia não pode ser enviada pelo GraphQL — veja [Upload de mídia](/docs/apis/graphql/using-the-api#uploading-media) para o caminho suportado.

<h2 id="timeouts">
  Timeouts
</h2>

Uma requisição tem até 120 segundos no total. Os campos raiz em uma **query podem ser executados simultaneamente**, então sua duração geralmente é determinada pela dependência mais lenta. Os campos raiz em uma **mutation são executados em série**, então várias mutations lentas podem se acumular até o timeout. Qualquer uma das formas ainda pode gerar no backend uma carga equivalente a até cinco despachos simultâneos ou sequenciais; divida trabalhos sabidamente lentos quando apropriado.

<h2 id="what-is-not-limited">
  O que não é limitado
</h2>

<ul class="custom-bullets">
  <li><strong>Leitura do schema.</strong> A introspecção não exige autenticação e não é medida. Navegar pelo que existe é gratuito; executar uma operação não é.</li>
  <li><strong>Consultas malformadas.</strong> Uma consulta rejeitada pelo GraphQL — campo desconhecido, tipo incorreto, valor de enum inválido — nunca chega à nossa API e nunca é cobrada.</li>
</ul>

Esses limites são revisados com base no uso real. Se algum deles não se adequar a uma integração legítima, avise-nos — esse feedback é mais útil do que uma solução alternativa.
