If by "for humans" you mean "for programmers who mostly use JSON". I have to say I'm not sending JSON with cURL too often, compared to any other payload. And when I do send JSON it's more complex than a flat set of keys and values.
If you are sending complex JSON, it's probably stored in a file or it's the output of another program:
http PUT httpbin.org/put @/data/test.json
http -b localhost:8888/couchdb/ | http PUT httpbin.org/put echo '{"foo": "bar"}' | http url
The reason for having the simplified one is that it's less verbose and usually doesn't even require you to quote it: http url foo=barcurl -X PUT -d @data/test.json httpbin.org/put
It also has the advantage that it supports all the options you might ever need, for example http authentication and proxies are often useful.
Requests and urllib3 have a long way to go to be complete competitors with cURL.
P.S. Good job nonetheless. Seems like a good idea to make a specialized HTTP CLI client for JSON/RESTful services.
[Edit: removed HN snarky comment]