Como as requisições são contabilizadas
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.- Os limites do seu plano atual se aplicam sem alterações. Veja os limites da API para saber a franquia do seu plano.
- 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.
- Uma requisição pode sofrer limitação de taxa no meio da execução. Os campos raiz concluídos mantêm seus dados, e apenas os campos raiz limitados retornam erros — veja Sucesso parcial.
Limites de consulta
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.
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.
Chamadas de API por requisição
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 — o limite é deliberadamente conservador no lançamento e aumentá-lo é simples, enquanto reduzi-lo depois quebraria integrações, por isso ele começa pequeno.Profundidade, campos e aliases
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.Tamanho do corpo da requisição
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 para o caminho suportado.Timeouts
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.O que não é limitado
- Leitura do schema. A introspecção não exige autenticação e não é medida. Navegar pelo que existe é gratuito; executar uma operação não é.
- Consultas malformadas. Uma consulta rejeitada pelo GraphQL — campo desconhecido, tipo incorreto, valor de enum inválido — nunca chega à nossa API e nunca é cobrada.