Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Short answer: an unauthenticated GitHub REST request gets 60 requests per hour per originating IP. An ordinary authenticated user gets 5,000 requests per hour. Qualifying GitHub Enterprise Cloud GitHub App or OAuth contexts can receive 15,000 requests per hour. GitHub App installation tokens start at 5,000 requests per hour and can scale to 12,500 for eligible non-Enterprise installations, while GITHUB_TOKEN is limited per repository.

Those hourly figures are only the primary limit. GitHub also applies secondary controls for concurrency, request bursts, endpoint points, CPU time and content creation. A client can therefore receive HTTP 403 or 429 while its hourly counter still shows requests remaining. The response headers on the request you just made—especially x-ratelimit-remaining and x-ratelimit-reset—are the source of truth for what to do next.

GitHub API request quotas at a glance

GitHub assigns limits by authentication method and resource family. The ordinary REST quota is an hourly bucket, but several specialized resources use different budgets. The following values are the current limits documented by GitHub.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Request context Primary limit How the limit is scoped
Unauthenticated REST 60 requests per hour Per originating IP address
Authenticated user (ordinary REST) 5,000 requests per hour Per authenticated user
Qualifying GitHub Enterprise Cloud GitHub App or OAuth context 15,000 requests per hour Per qualifying authenticated context
GitHub App installation token At least 5,000 requests per hour; up to 12,500 for eligible non-Enterprise installations Installation-based, with scaling tied to repositories and organization users
GITHUB_TOKEN 1,000 requests per hour per repository; 15,000 per hour per repository for GitHub Enterprise Cloud resources Repository-scoped token
Git LFS API, unauthenticated 300 requests per minute LFS API bucket
Git LFS API, authenticated 3,000 requests per minute LFS API bucket

These are primary limits, meaning the main allowance GitHub counts for the relevant resource. They do not guarantee that a burst of requests will be accepted: secondary protections can intervene first.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

What authentication changes

Unauthenticated REST calls

Without credentials, GitHub allows 60 REST requests per hour from an originating IP address. This is easy to exhaust when several users, containers or services share one public address, because they draw from the same bucket. IP-based accounting also means that moving a process to another address changes the bucket but is not a dependable capacity strategy.

Authenticated user requests

Authentication raises the ordinary REST allowance to 5,000 requests per hour for the authenticated user. A personal access token, OAuth access token or another user-authenticated credential identifies the caller, but the exact resource and endpoint still matter. Search, code search, GraphQL and other categories can expose separate counters.

GitHub Enterprise Cloud and app contexts

Qualifying GitHub Enterprise Cloud GitHub App or OAuth contexts can receive 15,000 requests per hour. “Qualifying” matters: the higher value is not a blanket increase for every account or token associated with an Enterprise organization.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

GitHub App installation tokens

An installation token has a minimum primary allowance of 5,000 requests per hour. For non-Enterprise installations, GitHub can scale that allowance according to the installation’s repositories and organization users, up to 12,500 requests per hour. Design a client to read the live limit rather than assuming it has reached the maximum.

GITHUB_TOKEN in Actions

The automatically provided GITHUB_TOKEN is limited to 1,000 requests per hour per repository. For GitHub Enterprise Cloud resources, the documented value is 15,000 requests per hour per repository. This repository scope is different from a user-wide personal token, so several repositories do not necessarily share one hourly counter.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

How to find your remaining quota and reset time

Inspect the rate-limit headers on every response that your client receives. The important fields are:

Header Meaning
x-ratelimit-limit The primary limit assigned to the request’s resource and authentication context.
x-ratelimit-remaining How many primary requests remain in the current window after the request.
x-ratelimit-used How many requests have been consumed in the current window.
x-ratelimit-reset The reset instant as a UTC Unix epoch-seconds timestamp.
x-ratelimit-resource The resource family whose bucket was charged, such as core, search or graphql.

The reset value is not a clock time such as “the top of the hour.” It is an epoch timestamp for the specific caller, resource and rate-limit window. Convert it to a local display time only for logging or user messages; use the numeric value for scheduling.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
reset_epoch = response.headers['x-ratelimit-reset']
wait_seconds = max(0, int(reset_epoch) - current_unix_time())

GitHub states that these headers are authoritative for the request just made. If a header and a separate overview response disagree, follow the header from the live API response.

What GET /rate_limit tells you—and what it does not

GET /rate_limit returns a categorized snapshot. Depending on the account and enabled features, the response can include buckets such as core, search, code_search, graphql, integration_manifest, dependency_snapshots and actions_runner_registration.

Calling this endpoint does not consume the primary REST quota. It can still count toward secondary protections, so polling it on every request is not harmless. A practical design is to record the headers from normal API responses and call GET /rate_limit when an operator needs a broader inventory of categories or when diagnosing an unexpected bucket.

Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

Do not use the overview as a replacement for response headers. The overview is a snapshot that can become stale between the time it is fetched and the time another request is processed. When the two disagree, the headers on the request being handled win.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why GitHub can return 403 or 429 before the hourly bucket is empty

GitHub’s secondary limits are separate from the primary hourly allowance. They protect service capacity and abuse-sensitive operations. A response can therefore show a positive x-ratelimit-remaining value and still be rejected.

Secondary trigger documented by GitHub Threshold or behavior
Concurrent requests More than 100 concurrent requests shared across REST and GraphQL
REST endpoint points More than 900 REST points per minute to a single endpoint
GraphQL points More than 2,000 GraphQL points per minute
Overall CPU time More than 90 seconds of CPU time per 60 seconds, including up to 60 seconds attributed to GraphQL
Content creation Generally more than 80 content-creating actions per minute or 500 per hour
OAuth token traffic More than 2,000 OAuth access-token requests per hour

Some endpoint costs and other triggers are undisclosed, and GitHub can change thresholds. Most REST GET, HEAD and OPTIONS requests cost one secondary point. Most POST, PATCH, PUT and DELETE requests cost five points, although individual endpoints can differ.

HTTP 403 is commonly used for a secondary-limit response, while HTTP 429 can also indicate that a rate or abuse control was triggered. Read the response body and headers instead of treating either status as proof that the primary hourly bucket is exhausted.

A safe retry and pacing procedure

Implement rate handling as a queueing policy, not as an unconditional retry loop. The following order prevents a client from making a secondary incident worse.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
  1. Record the response metadata. Save the status code, response body, x-ratelimit-* headers and any retry-after header for diagnostics.
  2. Handle an empty primary bucket first. If x-ratelimit-remaining is zero, wait until the UTC epoch in x-ratelimit-reset. Recalculate the delay at the moment you schedule the next attempt.
  3. Honor retry-after. On a secondary-limit response, wait the number of seconds specified by retry-after before sending another request.
  4. Use a minimum pause when no signal is supplied. If neither a usable reset time nor retry-after is present, wait at least one minute before retrying.
  5. Back off exponentially if the block persists. Increase the delay after each continuing failure and cap the number of retries with a defined budget. Do not keep sending requests while limited; GitHub warns that continued traffic can lead to an integration ban.
  6. Reduce concurrency. Serialize work where possible. For large sequences of mutative requests, pause at least one second between requests rather than issuing a burst.
  7. Make retries idempotent where possible. Before retrying a write, determine whether the earlier request may have succeeded. Use an application-level operation identifier or a follow-up read when your workflow cannot safely repeat a mutation.

A queue should share a concurrency limit across REST and GraphQL because the documented 100-request ceiling covers both. Separate primary counters can still be maintained for each resource family.

REST and GraphQL use different primary budgets

GraphQL has a separate point-based primary limit: GitHub documents 5,000 points per hour per user. Each query receives a calculated cost rather than simply consuming one REST request. GraphQL also has its own point accounting for secondary controls, including the documented 2,000-point-per-minute threshold.

Track REST and GraphQL primary usage separately. A full REST core bucket does not imply that the GraphQL budget is full, and a healthy GraphQL budget does not authorize an unlimited REST burst. Shared secondary protections, such as concurrent-request limits and CPU controls, still apply across both protocols.

Choosing an authentication and request strategy

Choose the credential based on who owns the data and how the workload is isolated. Compare the options along five axes: authentication type, resource family, primary budget, secondary exposure and the retry signals available in response headers.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Approach Best fit Primary-budget consideration Operational caution
Unauthenticated REST Small public lookups or prototypes 60 per hour per originating IP Shared IP traffic can exhaust the bucket unexpectedly.
Personal or user OAuth token Work performed on behalf of one user Usually 5,000 REST requests per hour per authenticated user; qualifying Enterprise Cloud OAuth contexts can be 15,000 Protect the credential and avoid using one user token for unrelated tenants.
GitHub App user token Actions requiring a user’s permissions through an app Qualifying Enterprise Cloud contexts can receive 15,000 per hour Still subject to secondary controls and endpoint-specific costs.
GitHub App installation token Service-to-organization or service-to-repository automation At least 5,000 per hour; eligible non-Enterprise installations can scale to 12,500 Read the live limit because installation size affects scaling.
GITHUB_TOKEN Workflow actions inside a repository 1,000 per hour per repository, or 15,000 for GitHub Enterprise Cloud resources Do not assume a repository token shares a user-wide bucket.

Regardless of credential, centralize request scheduling so every worker sees the same counters. A dozen workers that each believe they have a full bucket can collectively trigger concurrency or burst controls.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Troubleshooting common symptoms

“I received 403, but x-ratelimit-remaining is positive.”

Treat this as a likely secondary-limit or endpoint-policy response, not as proof that authentication failed. Check for retry-after, inspect the response body, stop concurrent work, and apply the waiting procedure. Review recent write volume, per-endpoint request points and total concurrency.

“I received 429.”

Handle 429 as a rate-control signal. Honor retry-after when present. If it is absent, wait at least one minute, then increase delays exponentially if failures continue. Keep the retry budget finite.

“The reset time is not at the next hour.”

That is expected. x-ratelimit-reset is a UTC epoch for the current caller, resource and window, not a universal clock boundary. Convert the value to a timestamp for display, but schedule from the numeric epoch.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“GET /rate_limit says one thing and my response header says another.”

Use the headers from the request just made. The overview endpoint can be stale or can describe a different resource category, while the response headers identify the bucket actually charged.

“A token that worked yesterday now has a different limit.”

Check the authentication context and x-ratelimit-limit on the current response. Installation scaling, Enterprise Cloud qualification, repository scope and resource family can all change which bucket applies. Avoid hard-coding a single quota.

Production checklist

  • Authenticate requests whenever the workload is more than a small public lookup.
  • Log x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-used, x-ratelimit-reset and x-ratelimit-resource.
  • Maintain separate primary counters for REST resources and GraphQL.
  • Share one queue and concurrency budget across REST and GraphQL workers.
  • Serialize large mutation batches and pause at least one second between mutative requests.
  • Honor retry-after; otherwise wait for reset or at least one minute when the signal is missing.
  • Use exponential backoff and a finite retry budget.
  • Alert on rising 403/429 rates, falling remaining capacity and repeated secondary-limit responses.
  • Recheck GitHub’s current documentation before deploying because quotas, Enterprise Cloud exceptions and secondary thresholds can change.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.