# Límites de frecuencia y consulta para GraphQL API

La GitHub API de GraphQL tiene ciertas limitaciones para protegerse frente a llamadas excesivas o abusivas a los servidores de GitHub.

## Límite de tasa principal

Los límites de velocidad están deshabilitados de forma predeterminada para GitHub Enterprise Server. Contacta a tu administrador de sitio para confirmar los límites de frecuencia de tu instancia.

Si eres administrador de un sitio, puedes definir los límites de volumen de la instancia. Para más información, consulta [Configuración de los límites de frecuencia](/es/enterprise-server@3.22/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits).

Si va a desarrollar una aplicación para usuarios u organizaciones fuera de la instancia, se aplican los límites de velocidad estándar GitHub . Para obtener más información, consulte [Límites de frecuencia y consulta para GraphQL API](/es/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api) en la GitHub Free documentación.

## Límite de nodos

Para pasar la validación del [esquema](/es/enterprise-server@3.22/graphql/guides/introduction-to-graphql#schema), todas las [llamadas](/es/enterprise-server@3.22/graphql/guides/forming-calls-with-graphql) de la API de GraphQL deben cumplir estos estándares:

* Los clientes deben proporcionar un argumento `first` o `last` en cualquier [conexión](/es/enterprise-server@3.22/graphql/guides/introduction-to-graphql#connection).
* Los valores de `first` y `last` deben estar comprendidos entre 1 y 100.
* Las llamadas individuales no pueden solicitar más de un total de 500 000 [nodos](/es/enterprise-server@3.22/graphql/guides/introduction-to-graphql#node).

### Calcular los nodos en una llamada

Estos dos ejemplos te muestran cómo calcular los nodos totales en una llamada.

1. Consulta simple:

   <pre>query {
     viewer {
       repositories(first: <span class="redbox">50</span>) {

edges {
repository:node {
name

issues(first: <span class="greenbox">10</span>) {
totalCount
edges {
node {
title
bodyHTML
}
}
}
}
}
}
}
}</pre>

Cálculo:

   <pre><span class="redbox">50</span>         = 50 repositories
    +
   <span class="redbox">50</span> x <span class="greenbox">10</span>  = 500 repository issues

= 550 total nodes</pre>

1. Consulta compleja:

   <pre>query {
     viewer {
       repositories(first: <span class="redbox">50</span>) {

edges {
repository:node {
name

pullRequests(first: <span class="greenbox">20</span>) {
edges {
pullRequest:node {
title

comments(first: <span class="bluebox">10</span>) {
edges {
comment:node {
bodyHTML
}
}
}
}
}
}

issues(first: <span class="greenbox">20</span>) {
totalCount
edges {
issue:node {
title
bodyHTML

comments(first: <span class="bluebox">10</span>) {
edges {
comment:node {
bodyHTML
}
}
}
}
}
}
}
}
}

```
   followers(first: <span class="bluebox">10</span>) {
```

edges {
follower:node {
login
}
}
}
}
}</code></pre>

Cálculo:

   <pre><span class="redbox">50</span>              = 50 repositories
    +
   <span class="redbox">50</span> x <span class="greenbox">20</span>       = 1,000 pullRequests
    +
   <span class="redbox">50</span> x <span class="greenbox">20</span> x <span class="bluebox">10</span> = 10,000 pullRequest comments
    +
   <span class="redbox">50</span> x <span class="greenbox">20</span>       = 1,000 issues
    +
   <span class="redbox">50</span> x <span class="greenbox">20</span> x <span class="bluebox">10</span> = 10,000 issue comments
    +
   <span class="bluebox">10</span>              = 10 followers

= 22,060 total nodes</pre>

## Estrategias de optimización de consultas

* **Limitación del número de objetos**: usa valores más pequeños para los argumentos `first` o `last`, y pagina los resultados.
* **Reducción de la profundidad de consulta**: evita solicitar objetos profundamente anidados a menos que sea necesario.
* **Filtrado de los resultados**: usa argumentos para filtrar datos y devolver solo lo que necesitas.
* **División de consultas grandes**: divide las consultas complejas en varias consultas más sencillas.
* **Solicitud de los campos obligatorios exclusivamente**: selecciona solo los campos que necesites, en lugar de solicitar todos los campos disponibles.

Si sigues estas estrategias, puedes reducir la probabilidad de alcanzar los límites de recursos y mejorar el rendimiento y la confiabilidad de las solicitudes de API.