Beautiful documentation for REST services.

Simple native client libraries with no dependencies.

Better REST services, written by hand--with love.


Fully describe your REST service in an intuitive JSON format. Start by creating a service below, or by downloading an example.

apidoc has a very intuitive format that is simple to learn from online docs or from user-contributed public services.

apidoc also has experimental support for other input formats, including avro idl and swagger 2.0.

Convention over configuration

Start by describing your models. Then map your models to resources that expose the specific operations you would like to make available.

api.json is designed to guide developers to think carefully about their APIs, while making it easy to create services that align to the REST standard. By favoring convention over configuration in a few key places, it enables developers to create great REST APIs.

Simple native client libraries with no dependencies

Download native client libraries with no (or almost no) dependencies. We take special care to make sure that the client libraries are a pleasure to use.

Example from Ruby:

      client = MyService::Client.new("http://localhost:8000")

      organizations = client.organizations.get(:limit => 10, :offset => 0)
      organizations.each do |org|
        puts "Org %s is named %s" % [org.id, org.name]

      neworg = client.organizations.post(:name => "My org")
      puts "Created new org named %s" % neworg.name

Example from Scala:

      val client = new com.bryzek.apidoc.api.v0.Client("http://localhost:8000")

      val organizations = client.organizations.get(limit = 10, offset = 0)
      organizations.foreach { org =>
        println(s"Org ${org.name} is named ${org.id}")

      val neworg = client.organizations.post(name = "My org")
      println(s"Created new org named ${neworg.name}")
Getting Started