Scraml - the scalable client generator for RAML
Turn your RAML model into a typesafe API client
Tell Me More


Scraml provides your Java and Scala projects with a fully typed Domain Specific Language (DSL) to access your REST APIs based on your RAML model. Java POJOs and Scala case classes are generated from the JSON-schema representation of the Data Transfer Objects in these models. This type information is embedded in the DSL to create a fluent language that enforces your RAML model. Integrating perfectly with the API-first philosophy of RAML, Scraml delivers the code that empowers your API in your Java and Scala projects.

Try it - Java Try it - Scala

RAML input

According to the API-first design principle, write your RAML model and describe your DTO's using JSON-schema

Java generator

The Java generator produces a fully typesafe and asynchronous DSL that incorporates POJOs representing your DTOs. With the maven plugin scraml integration in your Java+maven projects becomes a no-brainer. Activate and configure the maven plugin, put your RAML model in your project's resource folder and compile.

Scala generator

The Scala generator produces a fully typesafe and asynchronous DSL that incorporates case classes representing your DTOs. An sbt plugin is available to make scraml integration in your Scala+sbt projects a walk in the park. Activate and configure the sbt plugin, put your RAML model in your project's resource folder and compile.

Scraml release notes

Find out about the Scraml release notes here.

Main features list

Feature Status
Java and Scala client generation from RAML 0.8 models
Intuitive type-safe client via Domain Specific Language that reflects the RAML API specs
Data Transfer Object generation from json-schema: Java POJOs and Scala case classes
JSON serialization support: Jackson (Java), Play-Json (Scala)
Binary data support with blocking streams
Asynchronous communication with Java and Scala Futures
Pluggable backing client implementations (default implementation is ning http-client)
RAML 1.0 support Supported for the larger part and development is ongoing in current releases up to version 1.0, see RAML 1.0 compatibility list
Gradle support On the backlog
Command line interface Expected in 2017
Java client generation
Scala client generation
Adroid (Java) client generation On the backlog
OS X and iOS (Swift) client generation On the backlog
Python client generation On the backlog
.NET (C#) client generation On the backlog

RAML 1.0 compatibility

RAML 1.0 Feature Status
RAML 1.0 types
Json-schema types (backward combatible with RAML 0.8)
Multiple inheritance
Parameterized Traits
Parameterized Resource Types
Default mediaType Partial (now only for single media type)
Question mark for optional fields and parameters
queryString? support
Date support Ongoing
File type support Ongoing
Union types Ongoing
Multidimensional arrays Ongoing
Additional object properties Ongoing
Libraries Ongoing
Overlays & Extensions Ongoing
Partial URI parameter templates Ongoing


How can you benefit from scraml in your business's web applications?

Enforcing a RAML model

A prerequisite is that you own a RAML model that is validated by scraml at each compile step, so you automatically enforce your teams to maintain a correct documentation of your REST API.

Providing an API to your customers

Scraml gives you a typesafe and asynchronous Java and Scala client library that perfectly matches the API of your webservices. This is a true asset in your service portfolio to your customers.

Testing your REST APIs

Integration testing of webservices is best done at the level of your REST API. Scraml doubles as your own test DSL that proves your API's correctness in terms of your RAML specification. Read more...

Retrofit third party APIs

Express external APIs that your services use in a RAML model and scraml gives you an easy and consistent way to interact with those services.

Backward compatibility analysis

As the functionality provided by your webservices expand, your historical integration tests written with scraml can give you insights in the backward compatibility of your services.

No manual Data Transfer Objects

The Data Transfer Objects generated by scraml can be used directly in the REST controllers of your webservices, alleviating the need to write and maintaind them yourself.


Scraml is released under a dual license philosophy to make it free for open source and private projects and paying for commercial applications.

License Regular price Early release discount
(as long as we're below version 1.0)
AGPL license free
Commercial license - large companies $1299 -$300 $999/year
Commercial license - small companies (less than 10 employees) $399 -$200 $199/year

The Scraml commercial license is a company wide license for any number of users and any number generated clients. Download the full license here.

License overview

Scraml license Generated code license
(default license)
(inherited from the DSL support libraries the generated code uses)
Scraml commercial license Free of choice
(you use the DSL support libraries under the commercial license)
Scraml free license
(only for registered non-commercial open source projects)
Free of choice
(you use the DSL support libraries under the free license conditions)

Contact Us

Got a question? We are happy to help you out!