Finch provides a combinator API over the Finagle HTTP services. An Endpoint[A], main abstraction for which combinators are defined, represents an HTTP endpoint that takes a request and returns a value of type A.

Look and Feel

The following example creates an HTTP server (powered by Finagle) that serves the only endpoint POST /time. This endpoint takes a Locale instance represented as JSON in request body and returns a current Time for this locale.


libraryDependencies ++= Seq(
  "com.github.finagle" %% "finch-core" % "0.22.0",
  "com.github.finagle" %% "finch-circe" % "0.22.0",
  "io.circe" %% "circe-generic" % "0.9.0"


import com.twitter.finagle.Http
import com.twitter.util.Await

import io.finch._
import io.finch.circe._
import io.finch.syntax._

object Main extends App {

  case class Locale(language: String, country: String)
  case class Time(locale: Locale, time: String)

  def currentTime(l: java.util.Locale): String =

  val time: Endpoint[Time] =
    post("time" :: jsonBody[Locale]) { l: Locale =>
      Ok(Time(l, currentTime(new java.util.Locale(l.language,

  Await.ready(Http.server.serve(":8081", time.toService))

What People Say?

@mandubian on Twitter:

I think there is clearly room for great improvements using pure FP in Scala for HTTP API & #Finch is clearly a good candidate.

@tperrigo on Reddit:

I’m currently working on a project using Finch (with Circe to serialize my case classes to JSON without any boilerplate code – in fact, besides the import statements, I don’t have to do anything to transform my results to JSON) and am extremely impressed. There are still a few things in flux with Finch, but I’d recommend giving it a look.

@arnarthor on Gitter:

I am currently re-writing a NodeJS service in Finch and the code is so much cleaner and readable and about two thirds the amount of lines. Really love this.

Finch Talks


sbt-microsites plugin is completely written in Scala


sbt-microsites plugin uses SBT and other sbt plugins to generate microsites easily


Jekyll allows for the transformation of plain text into static websites and blogs.