This turned out to be a relatively simple issue with plumber. The function postBodyFilter calls parseQS that in turn splits on & and = and does not yet check for JSON formats (for example based on an initial { and ending }).

Since jsonlite was already imported by the package I proposed a small change to add basic JSON support in pull request #53.

Following the example in the README, the following will work after adding this patch:

curl --data '{"a":4, "b":5}' http://localhost:8000/sum

Since the call is on jsonlite to parse the content of the querystring, more complex JSON should also be possible, but I have not tested that yet.

Update : This has now been merged into the plumber project and will work for you if you install the version from github using devtools::install_github("trestletech/plumber"), or through a traditional install as soon as version 0.3.1 is available on CRAN.