Acerca de los límites de tasa principales
GitHub limita el número de solicitudes de API REST que puede realizar dentro de un período de tiempo específico. Este límite ayuda a evitar ataques por denegación de servicio y abuso, y garantiza que la API siga estando disponible para todos los usuarios.
Algunos puntos de conexión, como los puntos de conexión de búsqueda, tienen límites más restrictivos. Para obtener más información sobre estos puntos de conexión, consulta Puntos de conexión de la API de REST para los límites de velocidad. GraphQL API también tiene un límite de volumen principal independiente. Consulta Límites de frecuencia y consulta para GraphQL API.
Para obtener información sobre cómo ver la actividad de API de una organización, incluidas las solicitudes que superaron los límites de volumen principales, consulta Visualización de insights de la API en la organización.
En general, puedes calcular tu límite de tasa principal para la API REST en función de tu método de autenticación, como se describe a continuación.
Límite de tasa primario para usuarios no autenticados
Puedes realizar solicitudes sin autenticar si solo recuperas datos públicos. Las solicitudes sin autenticar se asocian a la dirección IP original y no al usuario o la aplicación que las realizó.
Para solicitudes no autenticadas, el límite de volumen principal permite hasta 60 solicitudes por hora.
Límite de velocidad principal para usuarios autenticados
Puedes usar un personal access token para realizar solicitudes de API. Además, puedes autorizar una GitHub App o OAuth app, que pueden realizar solicitudes de API en tu nombre.
Todas estas solicitudes cuentan para el límite de volumen personal de 5000 solicitudes por hora. Las solicitudes realizadas en tu nombre por una GitHub App que pertenece a una organización de GitHub Enterprise Cloud tienen un límite de volumen superior de 15 000 solicitudes por hora. De forma parecida, las solicitudes realizadas en tu nombre por una OAuth app que aprueba una organización de GitHub Enterprise Cloud o pertenece a ella tienen un límite de volumen superior de 15 000 solicitudes por hora, si eres miembro de la organización de GitHub Enterprise Cloud. Sin embargo, las solicitudes realizadas por una aplicación de límite superior reducen el presupuesto restante disponible para los métodos de autenticación de límite inferior. Por ejemplo, si una aplicación con un límite de 15 000 solicitudes realiza 10 000 solicitudes en su nombre, habrá agotado el presupuesto de 5000 solicitudes de personal access tokens, aunque la aplicación tenga 5000 solicitudes restantes.
Nota:
El punto de conexión de la API de registros de auditoría empresarial tiene un límite de velocidad de 1750 consultas por hora, por usuario y dirección IP. Si la integración recibe un error de límite de velocidad (normalmente una respuesta 403 o 429), debe esperar antes de realizar otra solicitud a la API de GitHub.
Límite de frecuencia principal para el acceso a Git LFS
Las solicitudes de API son necesarias al cargar o descargar contenido de Git LFS. Estas cuentan para un cubo de limitación de velocidad independiente con un límite de 300 solicitudes por minuto para las solicitudes no autenticadas y 3000 solicitudes por minuto para las solicitudes autenticadas.
Git LFS usa una API por lotes que procesa 100 objetos LFS de Git por solicitud de API de forma predeterminada. Esto significa que los usuarios no autenticados pueden descargar 30 000 objetos LFS de Git por minuto y los usuarios autenticados pueden cargar o descargar 300 000 objetos LFS de Git por minuto.
Límite de tasa principal para GitHub App instalaciones
Las GitHub Apps que se autentican con un token de acceso de instalación utilizan el límite de tasa mínimo de la instalación de 5.000 solicitudes por hora. Si la instalación está en una organización de GitHub Enterprise Cloud o empresa, la instalación tiene un límite de velocidad de 15 000 solicitudes por hora.
En el caso de las instalaciones que no están en una organización de GitHub Enterprise Cloud o empresa, el límite de velocidad de la instalación se escalará con el número de usuarios y repositorios. Las instalaciones que tienen más de 20 repositorios reciben otras 50 solicitudes adicionales por hora para cada repositorio. Las instalaciones que se encuentran en una organización que tienen más de 20 usuarios reciben otras 50 solicitudes por hora para cada usuario. El límite de volumen no puede superar las 12 500 solicitudes por hora.
Los límites de volumen principales para tokens de acceso de usuario de GitHub App (en lugar de los tokens de acceso de instalación) vienen definidos por los límites de volumen principal para el usuario autenticado. Este límite de volumen se combina con las solicitudes que realiza otra GitHub App o OAuth app en nombre de ese usuario y las solicitudes que el usuario realiza con un personal access token. Para más información, consulta Límites de tasa de la API REST.
Límite de frecuencia principal para OAuth apps
Los límites de frecuencia principal para los tokens de acceso de OAuth generados por un OAuth app se dictan por los límites de frecuencia principal para los usuarios autenticados. Este límite de frecuencia se combina con las solicitudes que realiza otra GitHub App o OAuth app en nombre de ese usuario y las solicitudes que el usuario realiza con un personal access token. Consulta Límite de tasa principal para usuarios autenticados.
Las aplicaciones de OAuth también pueden usar su identificador de cliente y el secreto de cliente para recuperar datos públicos. Por ejemplo:
curl -u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET -I https://api.github.com/meta
Para estas solicitudes, el límite de velocidad es de 5000 solicitudes por hora por OAuth app. Si la aplicación pertenece a una organización de GitHub Enterprise Cloud, el límite de volumen es de 15 000 solicitudes por hora.
Nota:
Nunca debe incluirse el secreto de cliente de la aplicación en el código del lado cliente o en el código que se ejecuta en un dispositivo de usuario. El secreto de cliente se puede usar para generar tokens de acceso de OAuth para los usuarios que han autorizado tu aplicación, por lo que siempre debes mantener el secreto de cliente seguro.
Límite de velocidad principal para GITHUB_TOKEN en GitHub Actions
Puede usar la funcionalidad incorporada GITHUB_TOKEN para autenticar solicitudes en GitHub Actions flujos de trabajo. Consulta Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo.
El límite de volumen de GITHUB_TOKEN es de 1000 solicitudes por hora y repositorio. Para las solicitudes a recursos que pertenecen a una cuenta de GitHub Enterprise Cloud, el límite es de 15 000 solicitudes por hora y repositorio.
Acerca de los límites de tasa secundarios
Además de los límites de volumen principales, GitHub aplica límites de volumen secundarios para evitar el abuso y mantener la API disponible para todos los usuarios.
Puedes encontrar un límite de tasa secundario si:
- Haces demasiadas solicitudes simultáneas. No se permiten más de 100 solicitudes simultáneas. Este límite se comparte entre la API de REST y la API de GraphQL.
- Haces demasiadas solicitudes a un único punto de conexión por minuto. No se permiten más de 900 puntos por minuto para los puntos de conexión de la API de REST y no se permiten más de 2000 puntos por minuto para el punto de conexión de la API de GraphQL. Para más información sobre los puntos, consulta Cálculo de puntos para el límite secundario de tasa.
- Haces demasiadas solicitudes por minuto. No se permiten más de 90 segundos de tiempo de CPU por 60 segundos de tiempo real. No más de 60 segundos de este tiempo de CPU puede ser para la API de GraphQL. Puedes calcular aproximadamente el tiempo de CPU midiendo el tiempo de respuesta total de las solicitudes de API.
- Realice demasiadas solicitudes que consuman recursos de proceso excesivos en un breve período de tiempo.
- Creas demasiado contenido en GitHub en un corto período de tiempo. En general, no se permiten más de 80 solicitudes de generación de contenido por minuto y no se permiten más de 500 solicitudes de generación de contenido por hora. Algunos puntos de conexión tienen límites de creación de contenido inferiores. Entre los límites de creación de contenido se incluyen las acciones realizadas en la interfaz web de GitHub, así como a través de la API de REST y la API de GraphQL.
- Realice demasiadas solicitudes de token de acceso de OAuth en un breve período de tiempo. No se permiten más de 2000 solicitudes de token de acceso de OAuth por hora para GitHub Apps y OAuth apps.
Estos límites de tasa secundarios están sujetos a cambios sin previo aviso. También puedes encontrarte con un límite de tasa secundario por motivos no revelados.
Calcular puntos para el límite de tasa secundario
Algunos límites secundarios de tasa se determinan por los valores de puntos de las solicitudes. En el caso de solicitudes de GraphQL, estos valores de punto son independientes de los cálculos de valor de punto para el límite de volumen principal.
| Solicitud | Puntos |
|---|---|
| Solicitudes de GraphQL sin mutaciones | 1 |
| Solicitudes de GraphQL con mutaciones | 5 |
La mayoría de las solicitudes de la API de REST GET, HEAD y OPTIONS | 1 |
La mayoría de las solicitudes de la API REST POST, PATCH, PUT o DELETE | 5 |
Algunos puntos de conexión de la API de REST tienen un coste de punto diferente que no se comparte públicamente.
Comprobación del estado de tu límite de volumen
Puede usar los encabezados que se envían con cada respuesta para determinar el estado actual de su límite de tasa principal.
| Nombre de encabezado | Descripción |
|---|---|
x-ratelimit-limit | Cantidad máxima de solicitudes que puedes hacer por hora. |
x-ratelimit-remaining | Cantidad de solicitudes que quedan en la ventana de límite de solicitudes actual. |
x-ratelimit-used | Cantidad de solicitudes que has realizado en la ventana de límite de volumen actual. |
x-ratelimit-reset | Hora a la que se restablece la ventana de límite de volumen actual en segundos de época UTC. |
x-ratelimit-resource | Recurso de límite de volumen respecto al que se cuenta la solicitud. Para obtener más información sobre los diferentes tipos de recursos, consulta Puntos de conexión de la API de REST para los límites de velocidad. |
También puedes realizar una llamada al punto de conexión GET /rate_limit para comprobar el límite de volumen. La llamada a este punto de conexión no cuenta para el límite de volumen principal, pero puede contar para el límite de volumen secundario. Consulta Puntos de conexión de la API de REST para los límites de velocidad. Cuando sea posible, debes usar los encabezados de respuesta de límite de volumen en lugar de llamar a la API para comprobar el límite de volumen.
No hay forma de comprobar el estado del límite de tasa secundario.
Superación del límite de frecuencia
Si supera su límite de tarifa principal, recibirá una respuesta 403 o 429 y el encabezado x-ratelimit-remaining será 0. No debes reintentar la solicitud hasta después de la hora especificada por el encabezado x-ratelimit-reset.
Si supera una limitación de volumen secundaria, recibirá una respuesta 403 o 429 y un mensaje de error que indicará que ha superado una limitación de volumen secundaria. Si el encabezado de respuesta retry-after está presente, no debes reintentar la solicitud hasta que hayan transcurrido los segundos indicados. Si el encabezado de x-ratelimit-remaining es 0, no debes reintentar la solicitud hasta después de la hora, en segundos de la época UTC, especificada por el encabezado de x-ratelimit-reset. De lo contrario, espere al menos un minuto antes de volver a intentarlo. Si la solicitud sigue produciendo un error debido a una limitación de volumen secundaria, espere un período de tiempo exponencialmente creciente entre reintentos y genere un error después de un número específico de reintentos.
Continuar realizando solicitudes mientras esté bajo restricciones de tasa puede resultar en que se prohíba su integración.
Mantenerse bajo el límite de velocidad
Deberías seguir las mejores prácticas para mantenerte por debajo de los límites de tasa. Consulta Procedimientos recomendados para usar la API de REST.
También puedes transmitir el registro de auditoría para ver las solicitudes de API. Esto puede ayudarte a solucionar problemas de integraciones que superan el límite de volumen. Consulta Streaming del registro de auditoría de su empresa.
Obtención de un límite de volumen mayor
Si quieres obtener un límite de volumen principal mayor, considera la posibilidad de realizar solicitudes autenticadas en lugar de solicitudes no autenticadas. Las solicitudes autenticadas tienen una limitación de volumen significativamente mayor que las solicitudes no autenticadas.
Si está utilizando un personal access token para la automatización en su organización, considere si un GitHub App funcionaría en su lugar. Las cuentas de GitHub Apps utilizadas por GitHub Enterprise Cloud tienen un límite de rate más alto que personal access tokens. Consulta Acerca de la creación de aplicaciones de GitHub.