softwaremill / sttp-model   1.7.6

Apache License 2.0 Website GitHub

Simple Scala HTTP model

Scala versions: 3.x 2.13 2.12 2.11
Scala.js versions: 1.x
Scala Native versions: 0.4


Join the chat at CI Maven Central

Open in Gitpod

sttp is a family of Scala HTTP-related projects, and currently includes:

  • sttp client: The Scala HTTP client you always wanted!
  • sttp tapir: Typed API descRiptions
  • sttp model: this project. Simple Scala HTTP model. Used by sttp client & sttp tapir

Quickstart with sbt

Add the following dependency:

"com.softwaremill.sttp.model" %% "core" % "1.7.6"

sttp model is available for Scala 2.11, 2.12, 2.13, 3.0.0, Scala.JS and Scala Native.

Project content

Available model classes include:

  • Uri
  • Method
  • StatusCode
  • MediaType
  • Header
  • HeaderNames
  • QueryParams
  • body fragments:
    • Part
    • ServerSentEvent
  • header values:
    • Accepts
    • Accept-Encoding
    • CacheDirective
    • Cookie
    • ETag
    • Range
    • ContentRange
    • WWWAuthenticateChallenge

Most classes contain both serialisation & parsing functionality, following these conventions:

  • .toString returns a representation of the model class in a format as in an HTTP request/response. For example, for an uri this will be http://..., for a header [name]: [value], etc.
  • [SthCompanionObject].parse(serialized: String): Either[String, Sth]: returns an error message, or an instance of the model class
  • [SthCompanionObject].unsafeApply(values): creates an instance of the model class; validates the input values and in case of an error, throws an exception. An error could be e.g. that the input values contain characters outside the allowed range
  • [SthCompanionObject].safeApply(...): Either[String, Sth]: same as above, but doesn't throw exceptions. Instead, returns an error message, or the model class instance
  • [SthCompanionObject].apply(...): Sth: creates the model type, without validation, and without throwing exceptions



The docs for sttp client contain documentation for the model classes: overview, uri interpolator.


If you have a question, or hit a problem, feel free to ask on our gitter channel!

Or, if you encounter a bug, something is unclear in the code or documentation, don’t hesitate and open an issue on GitHub.

Building & testing the scala-native version

By default, sttp-native will not be included in the aggregate build of the root project. To include it, define the STTP_NATIVE environmental variable before running sbt, e.g.:


You might need to install some additional libraries, see the scala native documentation site.

FAQ: Encoding & decoding URI components

See sttp client Uri docs

Commercial Support

We offer commercial support for sttp and related technologies, as well as development services. Contact us to learn more about our offer!


Copyright (C) 2019-2021 SoftwareMill