Bird
Raised Fist0
Rest APIprogramming~20 mins

Retry-After header in Rest API - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Retry-After Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
1:30remaining
What is the output of this HTTP response header?

Consider a server response with the following HTTP header:

Retry-After: 120

What does the value 120 represent?

AThe client should retry the request after 120 seconds.
BThe client should retry the request after 120 milliseconds.
CThe client should retry the request after 120 minutes.
DThe client should retry the request immediately.
Attempts:
2 left
💡 Hint

Think about the unit of time used in the Retry-After header when a number is given.

🧠 Conceptual
intermediate
1:30remaining
What type of value can the Retry-After header contain?

The Retry-After header can have two types of values. Which of the following correctly describes them?

AOnly a HTTP-date timestamp.
BOnly a number of seconds.
CA number of seconds or a HTTP-date timestamp.
DA boolean value true or false.
Attempts:
2 left
💡 Hint

Think about how servers can tell clients when to retry: either a delay or a specific time.

🔧 Debug
advanced
2:00remaining
Identify the error in this Retry-After header usage

A server sends this header:

Retry-After: 2024-13-01T12:00:00Z

What is wrong with this header value?

AThe Retry-After header cannot contain a date, only seconds.
BThe month value 13 is invalid in the date format.
CThe time zone Z is not allowed in HTTP-date format.
DThe date format is correct and valid.
Attempts:
2 left
💡 Hint

Check the month part of the date carefully.

🚀 Application
advanced
2:00remaining
How should a client handle a Retry-After header with a date value?

A client receives this header:

Retry-After: Wed, 21 Oct 2025 07:28:00 GMT

What should the client do?

ACalculate the difference between the current time and the given date, then wait that long before retrying.
BIgnore the header and retry immediately.
CRetry after 21 seconds as indicated by the day number.
DRetry after 7 minutes and 28 seconds.
Attempts:
2 left
💡 Hint

Think about how to interpret a date in the Retry-After header.

Predict Output
expert
3:00remaining
What is the output of this Python code parsing Retry-After header?

Given this Python code snippet:

from datetime import datetime, timezone
import time

def parse_retry_after(value):
    try:
        delay = int(value)
        return delay
    except ValueError:
        retry_time = datetime.strptime(value, '%a, %d %b %Y %H:%M:%S %Z')
        now = datetime.now(timezone.utc)
        delta = (retry_time - now).total_seconds()
        return max(0, int(delta))

# Example usage:
print(parse_retry_after('120'))
print(parse_retry_after('Wed, 21 Oct 2030 07:28:00 GMT'))

Assuming the current UTC time is Wed, 21 Oct 2025 07:28:00 GMT, what will be the output?

Rest API
from datetime import datetime, timezone
import time

def parse_retry_after(value):
    try:
        delay = int(value)
        return delay
    except ValueError:
        retry_time = datetime.strptime(value, '%a, %d %b %Y %H:%M:%S %Z')
        now = datetime.now(timezone.utc)
        delta = (retry_time - now).total_seconds()
        return max(0, int(delta))

# Example usage:
print(parse_retry_after('120'))
print(parse_retry_after('Wed, 21 Oct 2030 07:28:00 GMT'))
AValueError exception
B
120
0
C
120
-157766400
D
120
157766400
Attempts:
2 left
💡 Hint

Calculate the seconds between 2025 and 2030 in years, then convert to seconds.

Practice

(1/5)
1.

What is the main purpose of the Retry-After header in REST APIs?

easy
A. To provide the client's IP address to the server
B. To specify the content type of the response
C. To tell the client how long to wait before making another request
D. To indicate the server's current time

Solution

  1. Step 1: Understand the role of Retry-After header

    The Retry-After header is used by servers to tell clients when they can retry a request after being told to wait.
  2. Step 2: Match purpose with options

    To tell the client how long to wait before making another request correctly states that it tells the client how long to wait before retrying, which matches the header's purpose.
  3. Final Answer:

    To tell the client how long to wait before making another request -> Option C
  4. Quick Check:

    Retry-After = wait time before retry [OK]
Hint: Retry-After tells when to retry, not server info [OK]
Common Mistakes:
  • Confusing Retry-After with content type headers
  • Thinking Retry-After provides server time
  • Assuming Retry-After sends client info
2.

Which of the following is a correct example of the Retry-After header syntax?

Retry-After: ?
easy
A. Wed, 21 Oct 2015 07:28:00 GMT
B. "120 seconds"
C. 120 seconds
D. After 2 minutes

Solution

  1. Step 1: Review Retry-After header formats

    Retry-After accepts either a number of seconds (integer) or a HTTP-date string.
  2. Step 2: Check each option

    120 seconds includes invalid text; "120 seconds" incorrectly quotes the number with text; Wed, 21 Oct 2015 07:28:00 GMT is a valid HTTP-date format; After 2 minutes is not a valid format.
  3. Final Answer:

    Wed, 21 Oct 2015 07:28:00 GMT -> Option A
  4. Quick Check:

    Retry-After = seconds or HTTP-date [OK]
Hint: Retry-After uses seconds or HTTP-date format only [OK]
Common Mistakes:
  • Adding quotes around seconds value
  • Using natural language like 'After 2 minutes'
  • Using invalid date formats
3.

Given the following HTTP response header:

HTTP/1.1 503 Service Unavailable
Retry-After: 60

What should the client do?

medium
A. Wait 60 seconds before retrying the request
B. Retry the request immediately
C. Ignore the Retry-After header and retry after 5 seconds
D. Abort the request permanently

Solution

  1. Step 1: Interpret the Retry-After header value

    The header value '60' means the client should wait 60 seconds before retrying.
  2. Step 2: Match client action to header instruction

    Wait 60 seconds before retrying the request correctly instructs to wait 60 seconds before retrying, which follows the server's guidance.
  3. Final Answer:

    Wait 60 seconds before retrying the request -> Option A
  4. Quick Check:

    Retry-After: 60 means wait 60 seconds [OK]
Hint: Retry-After number means wait that many seconds [OK]
Common Mistakes:
  • Retrying immediately ignoring Retry-After
  • Assuming Retry-After is in milliseconds
  • Treating Retry-After as a permanent failure
4.

Identify the error in this HTTP response header snippet:

HTTP/1.1 429 Too Many Requests
Retry-After: "30 seconds"
medium
A. The header name should be lowercase
B. Retry-After value should not be quoted or include text
C. Retry-After header is missing
D. Status code 429 is invalid

Solution

  1. Step 1: Check Retry-After header format

    The Retry-After header must be either an integer number of seconds or a valid HTTP-date string without quotes or extra text.
  2. Step 2: Identify the error in the given header

    The value "30 seconds" is quoted and includes text, which is invalid syntax.
  3. Final Answer:

    Retry-After value should not be quoted or include text -> Option B
  4. Quick Check:

    Retry-After must be seconds or date, no quotes/text [OK]
Hint: Retry-After value is raw seconds or date, no quotes [OK]
Common Mistakes:
  • Adding quotes around Retry-After value
  • Including descriptive text in Retry-After
  • Confusing header case sensitivity
5.

A server wants to tell clients to retry after 2 minutes using the Retry-After header. Which is the best way to set this header to ensure compatibility?

hard
A. Retry-After: Wed, 21 Oct 2030 07:28:00 GMT (current time + 2 minutes)
B. Retry-After: "120 seconds"
C. Retry-After: After 2 minutes
D. Retry-After: 120

Solution

  1. Step 1: Understand Retry-After header formats

    Retry-After accepts either an integer number of seconds or a valid HTTP-date string.
  2. Step 2: Evaluate options for compatibility

    Retry-After: 120 uses integer seconds (120) which is simple and widely supported. Retry-After: "120 seconds" incorrectly quotes and adds text. Retry-After: Wed, 21 Oct 2030 07:28:00 GMT (current time + 2 minutes) uses a date but must be exact and updated dynamically, which is complex. Retry-After: After 2 minutes is invalid text.
  3. Final Answer:

    Retry-After: 120 -> Option D
  4. Quick Check:

    Use seconds as integer for simple Retry-After [OK]
Hint: Use integer seconds for Retry-After to ensure compatibility [OK]
Common Mistakes:
  • Adding quotes or text to seconds value
  • Using a fixed date without updating
  • Writing natural language instead of valid format