#rhiaroMy reasoning for defaulting to JSON if no Accept header is sent is that HTML is for humans, humans use browsers, and browsers send Accept headers. So I assume scripts tend to want JSON, and if they don't they will send an Accept header for something different