Qaynaq LABS · TOOLS

HTTP · 4xx Client Error

425 Too Early

Server refuses to process request sent too early without retry-after.

When you see this status

  • Client sends request before TLS handshake completes
  • Client resends unacknowledged request prematurely
  • Server detects request before expected retry window

Common causes

  • Client violates TLS early data (0-RTT) protocol
  • Misconfigured retry logic in client
  • Server enforces strict request ordering

How to debug it

  1. Inspect TLS handshake logs for early data attempts
  2. Verify client retry-after headers or delays
  3. Check server-side request ordering constraints

Return this code in your framework

Express (Node.js)
res.status(425).send('Too Early');
FastAPI (Python)
from fastapi import status
return JSONResponse(status_code=status.HTTP_425_TOO_EARLY, content={"detail": "Too Early"})
NestJS
@Get()
tooEarly() {
  return new HttpException('Too Early', HttpStatus.TOO_EARLY);
}
Go (net/http)
w.WriteHeader(http.StatusTooEarly)
w.Write([]byte("Too Early"))

About HTTP 425

HTTP status code 425 Too Early is part of the 4xx Client Error family. Server refuses to process request sent too early without retry-after. Understanding it is essential for backend engineers, API designers, and anyone debugging integrations between services.

The Qaynaq Labs HTTP Status Code Explainer covers all standard codes with practical guidance: what triggers them, how to debug them in production, and exactly how to return them from common frameworks. Each code page is hand-curated and verified.

Frequently asked

Can 425 be used for non-TLS early data?

No, 425 is specifically for TLS early data violations. Use 400 for generic early requests.

Should Retry-After header be included?

Yes, servers may include Retry-After to advise clients when to retry safely.

Is 425 commonly seen in production?

Rarely. Most clients handle TLS early data correctly; 425 indicates a protocol violation.