AutoRest is an MIT-licensed, Node.js-based code generator that reads an OpenAPI (formerly Swagger) specification and emits client libraries for C#, PowerShell, Go, Java, Node.js, TypeScript, Python, and Swift, and it is built for API producers and platform teams that want generated, typed REST clients instead of hand-written ones.
What it is
AutoRest is a command-line tool distributed through the Node.js and npm ecosystem for generating client libraries that access RESTful web services. Its input is a specification that describes a REST API using the OpenAPI Specification format, and its output is source code in a target language: a client library a developer can call directly rather than hand-assemble from raw HTTP calls. The repository is organised as a set of npm packages rather than a single monolith, with autorest as the entry point, @autorest/core and @autorest/modelerfour handling the shared generation pipeline, and one generator package per output language.
The concrete problem it solves is the duplication that appears when one HTTP API needs client support in many languages. Without generation, each language's client is written and maintained separately, so schema changes have to be re-implemented by hand in C#, Python, Java, Go, TypeScript, and PowerShell. AutoRest replaces that hand-maintained, per-language client code with a single generated result derived from one OpenAPI document, keeping every language's client aligned with the same specification. The project is tagged with openapi, swagger, rest-client, code-generator, and azure, reflecting its origin in generating clients for large, multi-language API surfaces.
Key capabilities
- Generates client libraries from a single OpenAPI Specification input, rather than requiring separately written clients per language.
- Ships language generators as separate npm packages:
@autorest/csharp, @autorest/go, @autorest/java, @autorest/powershell, @autorest/python, @autorest/typescript, and @autorest/swift.
- Splits the pipeline into core components, with
autorest as the CLI entry point and @autorest/core plus @autorest/modelerfour handling the shared processing.
- Supports an extension model through
@autorest/extension-base and @azure-tools/extension, which is the mechanism behind adding generators and plugins.
- Provides shared code-model and configuration packages, including
@autorest/codemodel, @autorest/configuration, and @autorest/common.
- Handles OpenAPI document plumbing through
@azure-tools/openapi, @azure-tools/datastore, and @azure-tools/deduplication.
- Publishes alongside stable releases on
next prerelease tags for the core, code-model, and tooling packages.
Who uses it and how
- Teams maintaining an API with clients in several languages, where one OpenAPI document feeds C#, Java, Go, Python, TypeScript, and PowerShell generation runs.
- Azure service and SDK work, consistent with the
azure topic and the project's position as an Azure-originated generator.
- PowerShell module authors, who use
@autorest/powershell to produce command-line-friendly clients from an API description.
- Projects where generated clients are regenerated as the API evolves, so the OpenAPI file stays the single source of truth across language repositories.
- Contributors extending generation behaviour, who work through the extension packages rather than editing a generator for each language. The repository carries 4,798 stars and 736 forks with 25 open issues, indicating a broad set of downstream users and forks.
Getting started
AutoRest is installed and run from npm: the core tool is published as the autorest package, with @autorest/core and @autorest/modelerfour as supporting packages and each language generator (@autorest/csharp, @autorest/python, and the rest) installed separately.
How it compares
No list of paid products is provided for this entry, and the only comparable tool the facts name is TypeSpec, which the README designates as AutoRest's recommended successor and replacement. On that basis AutoRest stands alongside TypeSpec in this registry rather than against a set of commercial alternatives, with TypeSpec positioned as the actively developed option going forward.
When to use it — and when not to
AutoRest is deprecated and will be retired on July 1, 2026; it is no longer under active development, and no new features, language generators, or plugins will be added. New projects should start with TypeSpec, the recommended successor, while existing users with working generation pipelines for C#, Go, Java, PowerShell, Python, TypeScript, or Swift can continue until retirement. The licence is clear (MIT) and the deprecation is explicit, with a tracking issue at https://github.com/Azure/autorest/issues/5175 — the real limitation is not ambiguity but the fixed end date.