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 or gradle plugin scraml integration in your Java+maven or Java+gradle 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


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 non-commercial use and paying for commercial applications.

License Price
AGPL license free
Scraml End-User License Agreement Contact us

The Scraml End-User License Agreement is a company wide license for any number of users and any number generated clients. Under the terms of the EULA, the generated code carries your own terms of use. See the full license here.

Licensing explained

Scraml is a build-time tool that generates API client code that will be incorporated into your own products. The license of the generated code is what most matters to organizations. Using an AGPL licensed product in a build system usually isn't a problem for commercial purposes, but it becomes an issue once AGPL code is built into production code. Switching from AGPL to the Scraml EULA solves this issue by letting you choose your own terms of use for the generated code.

Scraml license Generated code license
(default license)
Scraml End-User License Agreement
Free & Commercial use
Free to choose your own terms of use

Contact Us

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