{ }HttpStatus.com

203 Non-Authoritative Information

The request succeeded but the returned metadata came from a local or third-party copy rather than the origin server.

Defined in RFC 9110 §15.3.4

What 203 means

HTTP 203 Non-Authoritative Information indicates that the request succeeded, but the response headers or payload were modified or supplied by a transforming proxy rather than passed through unchanged from the origin server. It exists specifically so clients can tell the difference between an authoritative 200 straight from the source and a response that has been altered somewhere along the way, for example a proxy that rewrote timestamps, added tracking headers, stripped fields for privacy, or served a cached copy assembled from multiple upstream calls.

In practice 203 is rare; most transforming proxies, whether corporate content filters, ad-stripping middleboxes, or API aggregation layers, simply return 200 without flagging the transformation, which technically understates what happened but causes no functional problems for most clients. Where 203 is used deliberately, it tends to be in API gateways or edge caches that combine data from several backend services into one response and want to signal that the combined payload is not a verbatim copy of any single origin's output.

Because 203 behaves like 200 for caching and content negotiation purposes, and carries no special handling requirement in most HTTP client libraries, applications rarely need custom logic for it beyond recognizing that the metadata may be approximate. Systems that care about strict data provenance, such as compliance or audit tooling, are the main audience that benefits from distinguishing 203 from 200, since it flags responses whose headers should not be treated as authoritative for things like exact last-modified times.

Common causes

  • An intermediate proxy or gateway transformed, filtered, or enriched the response before forwarding it to the client.
  • An API gateway assembled a response from multiple backend services and wants to flag it as non-authoritative.
  • A caching layer served a stored copy that it has modified in some way relative to what the origin would return live.
  • A privacy or content-filtering proxy stripped or altered headers before passing the response along.

How to fix a 203

If you are the client (browser user or API caller)

  • Treat metadata such as Last-Modified or custom headers as approximate rather than authoritative when a response comes back as 203.
  • If exact provenance matters, bypass known transforming proxies or request directly from the origin when possible.
  • Do not assume caching or validation headers on a 203 response are identical to what the origin server would send.

If you run the server

  • Return 203 instead of 200 from any proxy or gateway layer that meaningfully alters response headers or content before forwarding it.
  • Document which fields might differ from the origin's authoritative response so downstream consumers know what to trust.
  • Avoid using 203 as a substitute for proper error handling; it still signals overall success, just with modified metadata.

Example

GET /api/profile HTTP/1.1
Host: gateway.example.com

HTTP/1.1 203 Non-Authoritative Information
Content-Type: application/json
Warning: 214 gateway.example.com "Transformation applied"

{
  "name": "Ada Lovelace",
  "avatarUrl": "https://cdn.example.com/cached/ada.jpg"
}
A gateway serves a cached, transformed copy of the profile and flags it as non-authoritative.

Try it live

Our free status responder returns a real HTTP 203 you can point tests, monitors or a browser at.

GET https://mcp.httpstatus.com/status/203

Related status codes

Tools for debugging this