Sobre os limites da taxa primária
GitHub limita o número de solicitações da API REST que você pode fazer em um período de tempo específico. Esse limite ajuda a evitar abusos e ataques de negação de serviço, além de garantir que a API permaneça disponível para todos os usuários.
Alguns endpoints, como os de pesquisa, têm limites mais restritivos. Para mais informações sobre esses endpoints, confira Pontos de extremidade da API REST para limites de taxa. A API do GraphQL também tem um limite de taxa primária diferente. Confira Limites de taxas e limites de consultas para a API GraphQL.
Para saber mais sobre como ver a atividade de API de uma organização, incluindo as solicitações que excederam os limites de taxa primária, confira Como ver os insights de API na sua organização.
Em geral, é possível calcular o limite de taxa primária da API REST com base em seu método de autenticação, conforme descrito abaixo.
Limite de taxa primária para usuários não autenticados
Será possível fazer solicitações não autenticadas se você estiver buscando apenas dados públicos. As solicitações não autenticadas estão associadas ao endereço IP original, e não ao usuário ou aplicativo que fez a solicitação.
O limite de taxa primária para solicitações não autenticadas é de 60 por hora.
Limite de taxa primária para usuários autenticados
É possível usar um personal access token para fazer solicitações à API. Além disso, você pode autorizar um GitHub App ou OAuth app, que depois podem fazer solicitações à API em seu nome.
Todas essas solicitações contam para o limite de taxa pessoal de solicitações de 5.000 por hora. O limite de taxa será mais alto (15.000 solicitações por hora) se as solicitações forem feitas em seu nome por um GitHub App pertencente a uma organização do GitHub Enterprise Cloud. Da mesma forma, as solicitações feitas em seu nome por um OAuth app que pertence ou é aprovado por uma organização GitHub Enterprise Cloud têm um limite de taxa mais alto de 15.000 solicitações por hora se você é membro da organização GitHub Enterprise Cloud. No entanto, as solicitações feitas por um aplicativo de limite mais alto reduzem o orçamento restante disponível para métodos de autenticação de limite inferior. Por exemplo, se um aplicativo com um limite de solicitação de 15.000 fizer 10.000 solicitações em seu nome, você terá esgotado o orçamento de 5.000 solicitações para o personal access tokens, mesmo que o aplicativo tenha 5.000 solicitações restantes.
Observação
O ponto de extremidade da API de logs de auditoria empresarial tem um limite de taxa de 1.750 consultas por hora por usuário e endereço IP. Se sua integração receber um erro de limite de taxa (normalmente uma resposta 403 ou 429), ela deverá aguardar antes de fazer outra solicitação à API GitHub.
Limite primário de taxa para acesso ao Git LFS
As solicitações à API são necessárias quando você carrega ou baixa o conteúdo do LFS Git. Elas são contabilizadas em um bucket de limitação de taxa separado, com um limite de 300 solicitações por minuto para solicitações não autenticadas e 3.000 solicitações por minuto para solicitações autenticadas.
O LFS Git usa uma API em lote que processa 100 objetos do LFS Git por solicitação de API por padrão. Isso significa que usuários não autenticados podem baixar 30.000 objetos do LFS Git por minuto e usuários autenticados podem carregar/baixar 300.000 objetos do LFS Git por minuto.
Limite primário de taxa para instalações do GitHub App
Os GitHub Apps que se autenticam com um token de acesso de instalação usam o limite mínimo da taxa de instalação de 5.000 solicitações por hora. Se a instalação estiver em uma organização ou empresa do GitHub Enterprise Cloud, a instalação terá um limite de taxa de 15 mil solicitações por hora.
Para instalações que não estão em uma organização ou empresa do GitHub Enterprise Cloud, o limite de taxa para a instalação será dimensionado com o número de usuários e repositórios. As instalações com mais de 20 repositórios recebem outras 50 solicitações por hora para cada repositório. Instalações que estão em uma organização com mais de 20 usuários recebem outras 50 solicitações por hora para cada uma dessas pessoas. Não é possível ampliar o limite de taxa para além de 12.500 solicitações por hora.
Os limites de taxa primária para tokens de acesso do usuário do GitHub App (diferentemente dos tokens de acesso de instalação) são determinados pelos limites de taxa primária do usuário autenticado. Esse limite de taxa é combinado com todas as solicitações que outro GitHub App ou OAuth app faça em nome do usuário, bem como todas as solicitações realizadas pelo usuário com um personal access token. Para saber mais, confira Limites de taxa para a API REST.
Limite de taxa primária para OAuth apps
Os limites de taxa primária para os tokens de acesso OAuth gerados por um OAuth app são determinados pelos limites de taxa primária para usuários autenticados. Esse limite de taxa é combinado com todas as solicitações que outro GitHub App ou OAuth app faça em nome do usuário, bem como todas as solicitações realizadas pelo usuário com um personal access token. Confira Limitação de taxa primária para usuários autenticados.
Aplicativos OAuth também podem usar o ID e o segredo do cliente para buscar dados públicos. Por exemplo:
curl -u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET -I https://api.github.com/meta
Nesse caso, o limite de taxa é de 5.000 solicitações por hora, por OAuth app. Se o aplicativo pertencer a uma organização do GitHub Enterprise Cloud, o limite de taxa será de 15.000 solicitações por hora.
Observação
Nunca inclua o segredo de cliente do seu aplicativo no código do cliente nem no código executado em um dispositivo do usuário. O segredo do cliente pode ser usado para gerar tokens de acesso OAuth para usuários que autorizaram seu aplicativo. Portanto, sempre mantenha o segredo do cliente seguro.
Limite de taxa primária para GITHUB_TOKEN em GitHub Actions
Você pode usar o GITHUB_TOKEN interno para autenticar solicitações em fluxos de trabalho GitHub Actions. Confira Usar GITHUB_TOKEN para autenticação em fluxos de trabalho.
O limite de taxa de GITHUB_TOKEN é de mil solicitações por hora e por repositório. Para solicitações de recursos que pertencem a uma conta de GitHub Enterprise Cloud, o limite é de 15.000 solicitações por hora e por repositório.
Sobre os limites de taxa secundária
Além dos limites de taxa primária, GitHub impõe limites de taxa secundários para evitar abusos e manter a API disponível para todos os usuários.
Você pode encontrar um limite de taxa secundário se:
-
_Enviar muitas solicitações simultâneas._ Não são permitidas mais de 100 solicitações simultâneas. Esse limite é compartilhado entre a API REST e a API GraphQL. -
_Enviar muitas solicitações a um único endpoint por minuto._ Não são permitidos mais de 900 pontos por minuto para pontos de extremidade da API REST e não mais de 2.000 pontos por minuto para o ponto de extremidade da API GraphQL. Para obter mais informações sobre pontos, confira [Calcular pontos para o limite de taxa secundária](#calculating-points-for-the-secondary-rate-limit). -
_Enviar muitas solicitações por minuto._ Não é permitido mais do que 90 segundos de tempo de CPU por 60 segundos de tempo real. Não mais do que 60 segundos desse tempo de CPU pode ser para a API GraphQL. Você pode estimar aproximadamente o tempo de CPU medindo o tempo total de resposta para suas solicitações de API. -
_Fazer muitas solicitações que consomem recursos de computação excessivos em um curto período de tempo._ -
_Produzir conteúdo em excesso na GitHub em um curto período de tempo._ Em geral, não são permitidas mais de 80 solicitações de geração de conteúdo por minuto e não mais de 500 solicitações de geração de conteúdo por hora. Alguns endpoints têm limites mais baixos para criação de conteúdo. Os limites de criação de conteúdo incluem ações executadas na interface da Web GitHub, bem como por meio da API REST e da API GraphQL. -
_Faça muitas solicitações de token de acesso OAuth em um curto período de tempo._ Não são permitidos mais de 2.000 pedidos de token de acesso OAuth por hora para GitHub Apps e OAuth apps.
Estes limites de taxas secundárias estão sujeitos a alterações sem aviso prévio. Você também pode encontrar um limite de taxa secundário por motivos não revelados.
Cálculo de pontos para o limite da taxa secundária
Alguns limites de taxa secundária são determinados pelos valores de ponto das solicitações. Para solicitações do GraphQL, esses valores de pontos são separados dos cálculos dos valores de pontos para o limite de taxa principal.
| Solicitar | Pontos |
|---|---|
| Solicitações do GraphQL sem mutações | 1 |
| Solicitações GraphQL com mutações | 5 |
A maioria das solicitações da API REST GET, HEAD e OPTIONS | 1 |
A maioria das solicitações à API REST POST, PATCH, PUT ou DELETE | 5 |
Alguns pontos de extremidade da API REST têm um custo de ponto diferente que não é compartilhado publicamente.
Verificar o status do limite de taxa
Você pode usar os cabeçalhos enviados em cada resposta para determinar o status atual do limite de taxa primária.
| Nome do cabeçalho | Descrição |
|---|---|
x-ratelimit-limit | O número máximo de solicitações que você pode fazer por hora |
x-ratelimit-remaining | O número de solicitações restantes na janela atual de limite de taxa |
x-ratelimit-used | O número de solicitações feitas na janela atual de limite de taxa |
x-ratelimit-reset | O tempo em que a janela atual de limite de taxa é redefinida em segundos de época UTC |
x-ratelimit-resource | O recurso de limite de taxa em que a solicitação feita foi incluída. Para mais informações sobre diferentes recursos, confira Pontos de extremidade da API REST para limites de taxa. |
Também é possível chamar o ponto de extremidade GET /rate_limit para verificar o limite de taxa. A chamada a esse ponto de extremidade não é incluída no limite de taxa primária, mas pode contar para o secundário. Confira Pontos de extremidade da API REST para limites de taxa. Quando possível, use os cabeçalhos de resposta do limite de taxa em vez de chamar a API para verificá-lo.
Não há uma maneira de verificar o status do limite de taxa secundária.
Excedendo o limite de velocidade
Se você exceder a limitação de fluxo principal, receberá a resposta 403 ou 429, e o cabeçalho x-ratelimit-remaining será 0. Não repita a solicitação até depois do horário especificado no cabeçalho de x-ratelimit-reset.
Se exceder uma limitação de fluxo secundária, receberá uma resposta 403 ou 429 e uma mensagem de erro indicando que você excedeu uma limitação secundária. Se o cabeçalho de resposta retry-after estiver presente, você não deverá repetir sua solicitação até que esse número de segundos tenha decorrido. Se o cabeçalho de x-ratelimit-remaining for 0, você não deverá repetir sua solicitação até depois do horário, em segundos de período UTC, especificado pelo cabeçalho de x-ratelimit-reset. Caso contrário, aguarde pelo menos um minuto antes de tentar novamente. Se sua solicitação continuar falhando devido a uma limitação de taxa secundária, aguarde um período de tempo exponencialmente crescente entre as tentativas e lance um erro depois de um número específico de tentativas.
Continuar a fazer solicitações enquanto você está sob limitação de taxa pode resultar no bloqueio da sua integração.
Como não ultrapassar o limite de taxa
Siga as práticas recomendadas para não ultrapassar os limites de taxa. Confira Práticas recomendadas para usar a API REST.
Também é possível transmitir o log de auditoria para consultar as solicitações à API. Isso pode ajudar a solucionar problemas de integrações que estão excedendo o limite de taxa. Confira Como transmitir o log de auditoria para sua empresa.
Como ter um limite de taxa maior
Se você quiser um limite de taxa primária mais alto, considere fazer solicitações autenticadas em vez de não autenticadas. As solicitações autenticadas têm um limite de taxa muito mais alto do que as não autenticadas.
Se você estiver usando um personal access token para automação em sua organização, considere se um GitHub App funcionará em vez dele. os GitHub Apps usados pelas contas do GitHub Enterprise Cloud têm uma limitação de fluxo mais alta que personal access tokens.Consulte Sobre a criação de aplicativos GitHub.