429 Too Many Requests in Rest API - Time & Space Complexity
When a server limits how many requests you can send, it affects how fast your program can work.
We want to understand how this limit changes the time your program takes as you send more requests.
Analyze the time complexity of the following code snippet.
// Pseudocode for sending multiple API requests with rate limiting
for (int i = 0; i < n; i++) {
response = sendRequest();
if (response.status == 429) {
waitForReset();
i--;
}
}
This code sends n requests but waits and retries if the server replies with 429 Too Many Requests.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Sending API requests inside a loop.
- How many times: Up to n times, but retries increase if 429 occurs.
As you try to send more requests, the total time depends on how often the server limits you.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 requests plus possible waits |
| 100 | 100 requests plus more waits if rate limited |
| 1000 | 1000 requests plus many waits if limits hit often |
Pattern observation: The more requests you send, the more waits you might have, making total time grow roughly linearly.
Time Complexity: O(n)
This means the time grows roughly in direct proportion to the number of requests, but waiting due to 429 can add extra delays.
[X] Wrong: "The program always finishes in time proportional to n without delays."
[OK] Correct: If the server limits requests, the program must wait and retry, which adds extra time beyond just n requests.
Understanding how rate limits affect request timing shows you can think about real-world API behavior and handle delays gracefully.
"What if the server allowed bursts of requests before limiting? How would that change the time complexity?"
Practice
What does the HTTP status code 429 Too Many Requests mean?
Solution
Step 1: Understand HTTP status codes
HTTP status codes communicate the result of a request. 429 specifically signals rate limiting.Step 2: Interpret 429 meaning
429 means the client sent too many requests too quickly and must wait before sending more.Final Answer:
You have sent too many requests in a short time and should wait before retrying. -> Option CQuick Check:
429 = Too Many Requests [OK]
- Confusing 429 with 404 Not Found
- Thinking 429 means authentication error
- Ignoring the need to wait before retrying
Which HTTP header is commonly used by servers to tell clients how long to wait before retrying after a 429 Too Many Requests response?
Solution
Step 1: Identify headers related to retrying
When a server limits requests, it often tells clients how long to wait using a specific header.Step 2: Match header to purpose
TheRetry-Afterheader indicates the wait time before retrying after 429.Final Answer:
Retry-After -> Option BQuick Check:
Retry-After header = wait time [OK]
- Choosing Content-Type which describes data format
- Confusing Authorization with retry timing
- Selecting User-Agent which identifies client software
Consider this server response to a client request:
{
"status": 429,
"headers": {"Retry-After": "10"},
"body": "Too many requests, please wait."
}If the client immediately retries the request after 5 seconds, what is the likely result?
Solution
Step 1: Analyze Retry-After header value
The server asks the client to wait 10 seconds before retrying.Step 2: Evaluate client retry timing
The client retries after only 5 seconds, which is less than 10 seconds.Step 3: Predict server response
The server will reject the early retry and respond with 429 again.Final Answer:
The server will respond with another 429 status, indicating to wait longer. -> Option AQuick Check:
Retry before 10s = 429 again [OK]
- Assuming server accepts early retries
- Confusing 429 with 404 errors
- Thinking server silently drops requests
Given this snippet of server-side pseudocode handling API requests:
if request_count > limit:
return 429, {"Retry-After": "30"}, "Too many requests"
else:
process_request()What is a likely bug if clients keep getting 429 responses even after waiting 30 seconds?
Solution
Step 1: Understand rate limiting logic
The server limits requests by counting them and returning 429 if over limit.Step 2: Identify why 429 repeats after wait
Ifrequest_countnever resets, the server always thinks limit is exceeded.Step 3: Confirm bug cause
Not resettingrequest_countafter wait causes repeated 429 responses.Final Answer:
The server does not reset request_count after the wait period. -> Option DQuick Check:
Persistent 429 means counter not reset [OK]
- Ignoring the need to reset counters
- Assuming Retry-After header alone fixes issue
- Thinking server ignores request limits
You are designing a client application that calls a public API which may respond with 429 Too Many Requests. How should your client handle this to avoid errors and respect the server?
Solution
Step 1: Understand respectful client behavior
Clients should avoid overwhelming servers by respecting rate limits.Step 2: Use Retry-After header properly
The server providesRetry-Afterto tell clients how long to wait before retrying.Step 3: Implement waiting before retry
Client should pause for the specified time, then retry to avoid repeated 429 errors.Final Answer:
Read the Retry-After header and wait that many seconds before retrying. -> Option AQuick Check:
Respect Retry-After to avoid 429 [OK]
- Retrying immediately ignoring Retry-After
- Stopping requests forever after one 429
- Sending many parallel requests causing more 429s
Ready to prove it?
Pass the test and this pattern moves unknown
