Skip to content


Subversion checkout URL

You can clone with
Download ZIP
RPC-over-HTTP system for Erlang supporting JSON, XML and Protocol Buffers
Erlang Makefile Shell
Latest commit 702b12b @alavrik Bump copyright year
Failed to load latest commit information.
doc Rename service option: json_omit_null_fields -> json_omit_missing_fields
examples Get rid of Makefile.piqi files
priv/bin Bring piqi-rpc up-to-date with the newest version of piqi-erlang
src Bump copyright year
.gitignore Add .rebar to gitignore
.travis.yml travis-ci: build on R16B01, R16B02 OTP releases
CHANGES piqi-rpc v0.7.1 release
Makefile Add support for travis-ci Add TODO list
THANKS Add Ignas Vyšniauskas to THANKS
TODO Add TODO list
rebar.config Bump webmachine version to 1.10.5
travis-ci Add support for travis-ci

Build Status

Piqi-RPC is an RPC-over-HTTP system for Erlang.

Piqi-RPC gives Erlang developers a convenient and reliable way to connect services written in Erlang with the rest of the world using JSON, XML or Google Protocol Buffers over plain HTTP.

Basically, Piqi-RPC can be viewed as an HTTP gateway for Erlang functions. Any standard HTTP client can communicate with them not knowing anything about Erlang or Piqi-RPC. And the opposite is also true: Erlang functions work with idiomatic Erlang data structures and don’t have to be aware of HTTP or even Piqi-RPC.

In other words, Piqi-RPC system automates several areas where Erlang developers usually need to write (and maintain!) a lot of boring plumbing code:

Parsing and validating input parameters -- Piqi-RPC automatically parses XML, JSON, Protocol Buffers and command-line arguments, validates them and converts to idiomatic Erlang data structures.

Generating output parameters -- again, Piqi-RPC automatically generates XML, JSON and Protocol Buffers from native Erlang representation.

HTTP communication -- Piqi-RPC provides fully-compliant HTTP communication layer. It receives and validates HTTP requests, sends responses, handles "Content-Type" and "Accept" headers and generates around 10 different meaningful HTTP response types for various error conditions that can occur during request execution.

Full description and documentation are available on the project homepage here:

The master copy of the documentation page is located in this repository: doc/


See examples/addressbook and examples/process_info.


Please report found problems using GitHub issues.

Mailing list


Your contributions are always welcome. Just open a pull request. Check TODO list for ideas.

Some useful commands:

make deps  # the same as "rebar get-deps"
make       # the same as "rebar compile"

make test
make dialyzer
make -C examples/addressbook deps all test


Apache License Version 2.0

Something went wrong with that request. Please try again.