What HTTP 203 means
A transforming proxy can return 203 instead of 200 to signal that the body or headers were modified, for example compressed images or injected content. It is rarely seen in practice; most proxies just pass 200 through.
Retrying
Not applicable: this isn’t an error.
Example response
HTTP/1.1 203 Non-Authoritative Information
Date: Wed, 21 Oct 2026 10:30:00 GMT
Content-Type: application/json
How to return 203
res.status(203).json(result);
@app.post("/items", status_code=203)
def create_item(item: Item):
return item
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusNonAuthoritativeInfo)
json.NewEncoder(w).Encode(result)
Related status codes
- 200 OK : The request succeeded and the response contains the result.
Other 2xx status codes
200 OK · 201 Created · 202 Accepted · 204 No Content · 205 Reset Content · 206 Partial Content · 207 Multi-Status
See the full list of HTTP status codes.
Sources
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
What does HTTP 203 Non-Authoritative Information mean?
HTTP 203 Non-Authoritative Information means a proxy changed the response it received from the origin server. A transforming proxy can return 203 instead of 200 to signal that the body or headers were modified, for example compressed images or injected content. It is rarely seen in practice; most proxies just pass 200 through.