Skip to content


Switch branches/tags


Failed to load latest commit information.

Redocly CLI toolset

Redocly CLI (fka OpenAPI CLI) toolbox with rich validation and bundling features.

build and test npm (scoped) NPM

OpenAPI 3 CLI toolset


Currently, @redocly/cli supports these features:

  • Multi-file validation. No need to bundle your file before validation.
  • Lightning-fast validation. Lint a 1 MB file in less than one second.
  • Built-in rules for common validations.
  • Configurable severity levels for each rule.
  • Human-readable error messages with codeframes and stylish format options.
  • Intuitive suggestions for misspelled types or references.
  • Easy to implement custom rules.
  • Bundle a multi-file definition into a single file.
  • Decorators to modify a validated definition during bundling.
  • Preview docs for local development.
  • Support for OpenAPI 2 (fka Swagger) and OpenAPI 3.0.
  • Basic support for OpenAPI 3.1

What makes this tool different

  • 💨 It's faster (uses a type tree similar to how linters for programming languages work)
  • 🎯 It's more accurate (working with types is more accurate than working with JSON path)
  • ⚙️ It's highly configurable (comes with a lot of commands and rules)
  • 🛠️ It's more extensible (architected for custom plugins and types)



npx @redocly/cli lint path-to-root-file.yaml

Alternatively, install it globally with npm:

npm install @redocly/cli -g

Then you can use it as redocly [command] [options], for example:

redocly lint path-to-root-file.yaml


To give the Docker container access to the OpenAPI definition files, you need to mount the containing directory as a volume. Assuming the OAS definition is rooted in the current working directory, you need the following command:

docker run --rm -v $PWD:/spec redocly/openapi-cli lint path-to-root-file.yaml

To build and run with a local image, run the following from the project root:

docker build -t redocly-cli .
docker run --rm -v $PWD:/spec redocly-cli lint path-to-root-file.yaml

Read the docs


Thanks to graphql-js and eslint for inspiration of the definition traversal approach and to Swagger, Spectral, and OAS-Kit for inspiring the ruleset.