Small standalone engine
The generator core is distributed as a small statically linked binary. JavaScript support is built in, so Node.js, Java, and other language runtimes are not required.

openapi-yagen is a small standalone binary. Generators are written in JavaScript with Jinja-like templates and do not require a separate language runtime.
mkdir -p ~/.local/bin && curl -L https://github.com/openapi-yagen/openapi-yagen/releases/latest/download/openapi-yagen \
-o ~/.local/bin/openapi-yagen && chmod +x ~/.local/bin/openapi-yagen
curl -LO https://raw.githubusercontent.com/openapi-yagen/openapi-yagen/master/test/resources/petstore.yaml
openapi-yagen generate petstore.yaml \
-g https://raw.githubusercontent.com/openapi-yagen/openapi-yagen/master/generators/kotlin_ktor_client_generator/src \
-o generated \
-v packageName=com.example.petstore
val client = HttpClient(CIO) { install(ContentNegotiation) { json() } }
val petsApi = PetsApi(client, baseUrl = "https://petstore.example.com/v1")
val pets = petsApi.listPets(limit = 20)
The generator core is distributed as a small statically linked binary. JavaScript support is built in, so Node.js, Java, and other language runtimes are not required.
Generators use modern JavaScript for logic and familiar Jinja-like templates for output, making them straightforward to write and customize.
The engine converts between OpenAPI 2.0, 3.0, 3.1, and 3.2. A generator targets one 3.x version; when the engine adds another input version, existing generators keep their declared data shape.
Keep a generator with your project sources, package it as a ZIP, or load it directly from an HTTP or GitHub URL.
Replace only the generator files you need to adjust without copying or maintaining a complete fork.
Run custom tools such as formatters, linters, or checkers on generated files as part of the same command.
Use one from this repository or provide your own directory or URL.
Generator collectionSet output options and variables, then integrate the generated files.
Generator tutorialBrowser-first API client with no third-party runtime dependencies.
Kotlin MultiplatformAPI clients using a caller-supplied Ktor HttpClient.
Kotlin MultiplatformValidated routes and handler interfaces for Ktor servers.
GoAPI client on the standard library only, taking a caller-supplied *http.Client.
GoValidated HTTP handlers on the standard library only (Go 1.22+ ServeMux routing).
RubyAPI client built on Faraday, adapter-agnostic and taking a caller-supplied connection.
Ruby on RailsValidated routes and controllers - implement a plain Ruby class per tag, no ActionController subclassing needed.
PythonValidated routes and a handler interface for Tornado servers, with generated model validation.
C++A small example generator for C++ model structs.
Don't see your language or framework? Generators are just JavaScript and Inja templates, so you can write your own.
Tutorial: writing a generator from scratch