425

Too Early

4xx Client Error

ELI5

You're trying to do something too early in the connection process. It's like trying to order food before the restaurant is fully open.

Server perspective

Use 425 when the server will not risk processing a replayable request sent in TLS early data.

When to use

  • Return 425 for non-idempotent or replay-sensitive operations received too early
  • Use it when the request should be retried after the handshake, not processed in 0-RTT
  • TLS early data (0-RTT) security concerns
  • Non-idempotent operations over early data
  • Preventing replay attacks in TLS 1.3
  • When server cannot guarantee request uniqueness

How to respond

  • Reject replay-sensitive early-data requests consistently
  • Expect clients or intermediaries to retry without early data

Headers to consider

  • Early-Data

Response body

  • A body is optional; include a short explanation only if clients need to understand early-data retry behavior.

Server-side pitfalls

  • Do not use 425 for rate limiting or ordinary server overload
  • Do not reject normal post-handshake requests with 425
  • Normal request processing (use 200 OK)
  • Rate limiting (use 429 Too Many Requests)
  • Server overload (use 503 Service Unavailable)
  • After full TLS handshake completion

Examples

TLS 0-RTT early data rejection

Request:POST https://api.example.test/api/payment

This request was sent in TLS 0-RTT early data; an intermediary may add Early-Data: 1 before forwarding to the origin server.

Response:425 Too Early # Headers Content-Type: application/json # Body { "error": "too_early" }

Non-idempotent operation in early data

Request:DELETE https://api.example.test/api/users/123

This request was sent in TLS 0-RTT early data; an intermediary may add Early-Data: 1 before forwarding to the origin server.

Response:425 Too Early # Headers Content-Type: application/json # Body { "error": "too_early" }

References

Related Status Codes