# openapi-typescript

> Convert OpenAPI 3.0 & 3.1 schemas to TypeScript

Latest version **7.13.0** (published 2026-02-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install openapi-typescript
pnpm add openapi-typescript
yarn add openapi-typescript
bun add openapi-typescript
```

Provides the command `openapi-typescript`.

## Health

**Score 70/100 (B)** — status: stable.

Positive: has types; esm support; no vulnerabilities; has provenance; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 7.13.0 |
| Published | 2026-02-11 |
| First published | 2020-10-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 857.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 8387 |
| Author | Drew Powers |
| Maintainers | drewpowers, gzm0 |
| Keywords | swagger, typescript, ts, dts, openapi, codegen, generation, openapi 3, node |

## Links

- npm: https://www.npmjs.com/package/openapi-typescript
- Repository: https://github.com/openapi-ts/openapi-typescript
- Homepage: https://openapi-ts.dev
- Issues: https://github.com/openapi-ts/openapi-typescript/issues
- npm.io page: https://npm.io/package/openapi-typescript

## Dependencies (6)

- [parse-json](https://npm.io/package/parse-json.md) ^8.3.0
- [ansi-colors](https://npm.io/package/ansi-colors.md) ^4.1.3
- [change-case](https://npm.io/package/change-case.md) ^5.4.4
- [yargs-parser](https://npm.io/package/yargs-parser.md) ^21.1.1
- [supports-color](https://npm.io/package/supports-color.md) ^10.2.2
- [@redocly/openapi-core](https://npm.io/package/@redocly/openapi-core.md) ^1.34.6

## Alternatives

- [csv-to-markdown-table](https://npm.io/package/csv-to-markdown-table.md) — 47.0K weekly downloads
- [@sapphire/ratelimits](https://npm.io/package/@sapphire/ratelimits.md) — 4.4K weekly downloads
- [js-csvparser](https://npm.io/package/js-csvparser.md) — 2.0K weekly downloads
- [@adadapted/js-sdk](https://npm.io/package/@adadapted/js-sdk.md) — 251 weekly downloads
- [@grapecity/spread-sheets-sparklines](https://npm.io/package/@grapecity/spread-sheets-sparklines.md) — 103 weekly downloads

## Recent versions

- 7.13.0 (latest) — 2026-02-11
- 7.0.0-rc.1 (next) — 2024-06-19
- 5.4.2 (swagger-v2) — 2024-03-04
- 7.12.0 — 2026-02-08
- 7.10.1 — 2025-10-15
- 7.10.0 — 2025-10-14
- 7.9.1 — 2025-08-11
- 7.9.0 — 2025-08-11
- 7.8.0 — 2025-05-10
- 7.7.3 — 2025-05-10
- 7.7.2 — 2025-05-10
- 7.7.1 — 2025-05-05
- 7.7.0 — 2025-05-03
- 7.6.1 — 2025-02-02
- 7.6.0 — 2025-01-25
- … 141 more at https://npm.io/package/openapi-typescript/versions

## README

<img src="../../docs/public/assets/openapi-ts.svg" alt="openapi-typescript" width="200" height="40" />

openapi-typescript turns [OpenAPI 3.0 & 3.1](https://spec.openapis.org/oas/latest.html) schemas into TypeScript quickly using Node.js. No Java/node-gyp/running OpenAPI servers necessary.

The code is [MIT-licensed](./LICENSE) and free for use.

> **Tip:**
> New to OpenAPI? Speakeasy’s [Intro to OpenAPI](https://www.speakeasyapi.dev/openapi) is an accessible guide to newcomers that explains the “why” and “how” of OpenAPI.

## Features

- ✅ Supports OpenAPI 3.0 and 3.1 (including advanced features like [discriminators](https://spec.openapis.org/oas/v3.1.0#discriminator-object))
- ✅ Generate **runtime-free types** that outperform old school codegen
- ✅ Load schemas from YAML or JSON, locally or remotely
- ✅ Generate types for even huge schemas within milliseconds

_Note: OpenAPI 2.x is supported with versions `5.x` and previous_

## Examples

👀 [See examples](./examples/)

## Setup

This library requires the latest version of [Node.js](https://nodejs.org) installed (20.x or higher recommended). With that present, run the following in your project:

```bash
npm i -D openapi-typescript typescript
```

And in your `tsconfig.json`, to load the types properly:

```diff
{
  "compilerOptions": {
+    "module": "ESNext", // or "NodeNext"
+    "moduleResolution": "Bundler" // or "NodeNext"
  }
}
```

> **Highly recommended**
> 
> Also adding the following can boost type safety:
> ```diff
> {
>   "compilerOptions": {
> +    "noUncheckedIndexedAccess": true
>   }
> }
> ```

## Basic usage

First, generate a local type file by running `npx openapi-typescript`, first specifying your input schema (JSON or YAML), and where you’d like the `--output` (`-o`) to be saved:

```bash
# Local schema
npx openapi-typescript ./path/to/my/schema.yaml -o ./path/to/my/schema.d.ts
# 🚀 ./path/to/my/schema.yaml -> ./path/to/my/schema.d.ts [7ms]

# Remote schema
npx openapi-typescript https://myapi.dev/api/v1/openapi.yaml -o ./path/to/my/schema.d.ts
# 🚀 https://myapi.dev/api/v1/openapi.yaml -> ./path/to/my/schema.d.ts [250ms]
```

Then in your TypeScript project, import types where needed:

```ts
import type { paths, components } from "./my-openapi-3-schema"; // generated by openapi-typescript

// Schema Obj
type MyType = components["schemas"]["MyType"];

// Path params
type EndpointParams = paths["/my/endpoint"]["parameters"];

// Response obj
type SuccessResponse =
  paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"];
type ErrorResponse =
  paths["/my/endpoint"]["get"]["responses"][500]["content"]["application/json"]["schema"];
```

From here, you can use these types for any of the following (but not limited to):

- Using an OpenAPI-supported fetch client (like [openapi-fetch](https://openapi-ts.dev/openapi-fetch/))
- Asserting types for other API requestBodies and responses
- Building core business logic based on API types
- Validating mock test data is up-to-date with the current schema
- Packaging API types into any npm packages you publish (such as client SDKs, etc.)

## 📓 Docs

[View Docs](https://openapi-ts.dev/)

---
_Source: https://npm.io/package/openapi-typescript · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
