HTTP status codes / 4xx — Client errors

406 Not Acceptable

In one sentence

The server cannot produce a representation matching your Accept headers.

What it means

Content negotiation failed: the Accept (or Accept-Language/Encoding) header demands something the server cannot generate. Rare, because most servers ignore Accept rather than enforcing it.

Common causes

Reproduce it in cURL

curl -i -H "Accept: application/xml" https://httpbin.org/json

Same request, no terminal: paste this into the cURL converter for native code, or straight into ReqPad on your phone.

How to debug it

Loosen or remove the Accept header and compare responses.

Server-side note: Loosen the Accept header client-side, or stop enforcing negotiation server-side unless you really ship multiple formats.

The fastest way to pin down a 406 is to reproduce the exact request and inspect what actually went over the wire — status, headers, timing and body, without your app code in the way. That is what an API client is for; ReqPad does it from your phone, with every request saved to history.

Related codes

400 Bad Request · 401 Unauthorized · 402 Payment Required · 403 Forbidden · 404 Not Found · 405 Method Not Allowed — or the full reference.

Reproduce that 406 in 10 seconds.

Build the request, send it, read status + headers + timing — on your iPhone. Free to start.