An R package that converts your existing R code to a web API using a handful of special one-line comments.


plumber allows you to create a REST API by merely decorating your existing R source code with special comments. Take a look at an example.

# myfile.R

#* @get /mean
normalMean <- function(samples=10){
  data <- rnorm(samples)

#* @post /sum
addTwo <- function(a, b){
  as.numeric(a) + as.numeric(b)

These comments allow plumber to make your R functions available as API endpoints. You can either prefix the comments with #* or #' but we recommend the former since #' will conflict with the Roxygen package.

> library(plumber)
> r <- plumb("myfile.R")  # Where 'myfile.R' is the location of the file shown above
> r$run(port=8000)

You can visit this URL using a browser or a terminal to run your R function and get the results. Here we’re using curl via a Mac/Linux terminal.

$ curl "http://localhost:8000/mean"
$ curl "http://localhost:8000/mean?samples=10000"

As you might have guessed, the request’s query string parameters are forwarded to the R function as arguments (as character strings).

$ curl --data "a=4&b=3" "http://localhost:8000/sum"

If you’re still interested, check out our live, more thorough example


You can install the latest stable version from CRAN using the following command:


If you want to try out the latest development version, you can install it from GitHub. The easiest way to do that is by using devtools.