# SDK generator comparisons

> Nine SDK generators compared with Voxgig on licensing, language targets, customization, cross-cutting behavior and cost, and on one API each, SDK against SDK. One page per tool. Published by Voxgig, which makes one of the tools compared. Every page links first-party sources and carries the date its facts were checked. Corrections go to info@voxgig.com. Facts checked 28 September 2026.

## Method

- **Who publishes this.** Voxgig publishes these pages and makes one of the tools compared on them. The sources are linked on every page so the claims can be checked against the vendors' own documentation.
- **Capabilities, not verdicts.** Each page describes what a tool does and what it does not do. Where the two tools differ, the difference is stated and you decide which side of it you are on. No tool is scored, and no overall winner is declared.
- **No asterisks in the table.** If a tool has a feature, the table says it has it. No partial ticks and no footnoted almosts. Where a row would need a paragraph to be accurate, it is a paragraph in the page instead of a row in the table.
- **Dated facts, first-party sources.** Every page carries the date its facts were last checked and links the vendor's own pages, including their comparisons of Voxgig. Pricing and tier limits move fastest, so the pages describe the shape of the pricing and link the vendor for the numbers.
- **Sources are named, including their limits.** Claims come from published documentation, public repositories of generated output, and direct use. Each page's caveats say which, and name what has not been tested. The SDK pairs are the one measurement: one API per tool, in TypeScript, against a mock of its definition. Nothing here is a benchmark across APIs.
- **Corrections are made and dated.** A correction changes the page and moves its checked date. Corrections from maintainers and other vendors carry the most weight, because they come from the people with the best information about the product.

## The field at a glance

| Tool | What it is | License | Languages | Cost |
| --- | --- | --- | --- | --- |
| Voxgig | Open-source generator, six output surfaces | MIT | 20 bundled, 3 from the langpack | Free |
| OpenAPI Generator | Open source, community governed | Apache 2.0 | 40+ client, 20+ server | Free |
| Speakeasy | Commercial, generator AGPL-3.0 since September 2026 | AGPL-3.0 generator, output by election | 8, plus Terraform | Free under AGPL, then quoted |
| Fern | Open-source CLI, commercial docs platform | Apache 2.0 plus commercial | 9 | Free tier, then per SDK. Docs paid |
| Stainless | Commercial, winding down | Proprietary | 9, including Terraform | No longer sold |
| Cloudflare Forge | Open-source pipeline, from Cloudflare | Apache 2.0 | 9, all through Fern's generators | Free |
| APIMatic | Commercial platform and portal | Proprietary | 7 | Low entry tier, then paid |
| liblab | Commercial, pipeline focused | Proprietary | 6, plus Terraform | Tiered subscription |
| Kiota | Open source, from Microsoft | MIT | 8, five stable | Free |
| Hey API | Open source, TypeScript first | MIT | TypeScript, Python in development | Free |

Language counts are targets a tool ships, not a quality measure: a target existing says nothing about how well it is maintained or how idiomatic its output is. Voxgig's 23 is the 20 language targets in the released generator, @voxgig/sdkgen 4.30.2, plus Dart, Haskell and Lean from its language pack, @voxgig/sdkgen-langpack.

## One API per tool, two SDKs each

Every page sets an SDK made with the tool, as the API's owner publishes it, beside a Voxgig SDK for the same API, and links both. Both were run against a mock of the API's definition on the same four steps, list, load, create and remove, in TypeScript only. Eight of the Voxgig SDKs are built from the same source definition as their counterpart. They are public repositories under github.com/voxgig-sdk that exist to be compared and are never released, and each carries its full scorecard. For two of them, Lob and Novu, the vendor's SDK came from an older version of that definition, and their pages say so.

Across those eight pairs, the Voxgig SDKs expose 1,157 of the 1,161 operations the definitions declare, and the vendors' SDKs 1,106 methods between them, most of the difference coming from Lob's older SDK. Against the mocks, the vendors' SDKs got 27 of 32 steps right and the Voxgig SDKs 31. The one step Voxgig misses is Maxio's customer list, which returns each customer inside Maxio's `{ customer }` wrapper, because Voxgig's toolchain unwraps a page but not each record in it. Each page names the defects the pair found in Voxgig beside the gaps in the other SDK, with the release that fixed each one that is fixed.

| Tool | API | Their SDK | Voxgig SDK | Operations callable | Mock scenario, steps right |
| --- | --- | --- | --- | --- | --- |
| [OpenAPI Generator](https://voxgig.com/sdk/comparisons/openapi-generator#one-api) | Lob | [`@lob/lob-typescript-sdk 1.4.2`](https://github.com/lob/lob-typescript-sdk) | [`voxgig-sdk/lob-sdk`](https://github.com/voxgig-sdk/lob-sdk) | Theirs 70 methods. Voxgig 105 of 105 | Theirs 4 of 4. Voxgig 4 of 4 |
| [Speakeasy](https://voxgig.com/sdk/comparisons/speakeasy#one-api) | Novu | [`@novu/api 3.19.1`](https://github.com/novuhq/novu-ts) | [`voxgig-sdk/novu-sdk`](https://github.com/voxgig-sdk/novu-sdk) | Theirs 149 methods. Voxgig 148 of 149 | Theirs 2 of 4. Voxgig 4 of 4 |
| [Fern](https://voxgig.com/sdk/comparisons/fern#one-api) | Vapi | [`@vapi-ai/server-sdk 2.0.1`](https://github.com/VapiAI/server-sdk-typescript) | [`voxgig-sdk/vapi-sdk`](https://github.com/voxgig-sdk/vapi-sdk) | Theirs 139 methods. Voxgig 139 of 139 | Theirs 4 of 4. Voxgig 4 of 4 |
| [Stainless](https://voxgig.com/sdk/comparisons/stainless#one-api) | Mux | [`@mux/mux-node 15.3.0`](https://github.com/muxinc/mux-ts) | [`voxgig-sdk/mux-sdk`](https://github.com/voxgig-sdk/mux-sdk) | Theirs 154 methods. Voxgig 153 of 153 | Theirs 4 of 4. Voxgig 4 of 4 |
| [Cloudflare Forge](https://voxgig.com/sdk/comparisons/cloudflare-forge#one-api) | Cloudflare | [`The SDK inside cf 1.0.0-beta.5`](https://github.com/cloudflare/cf/tree/main/packages/cli/src/sdk/sdk) | [`voxgig-sdk/cloudflare-dns-sdk`](https://github.com/voxgig-sdk/cloudflare-dns-sdk) | Theirs 68 of 76. Voxgig 75 of 76 | Theirs 4 of 4. Voxgig 1 of 4 |
| [APIMatic](https://voxgig.com/sdk/comparisons/apimatic#one-api) | Maxio Advanced Billing | [`@maxio-com/advanced-billing-sdk 10.0.0`](https://github.com/maxio-com/ab-typescript-sdk) | [`voxgig-sdk/maxio-advanced-billing-sdk`](https://github.com/voxgig-sdk/maxio-advanced-billing-sdk) | Theirs 249 of 268. Voxgig 266 of 268 | Theirs 4 of 4. Voxgig 3 of 4 |
| [liblab](https://voxgig.com/sdk/comparisons/liblab#one-api) | SaladCloud | [`@saladtechnologies-oss/salad-cloud-sdk 0.9.0-alpha.17`](https://github.com/saladtechnologies/salad-cloud-sdk-javascript) | [`voxgig-sdk/saladcloud-sdk`](https://github.com/voxgig-sdk/saladcloud-sdk) | Theirs 36 methods. Voxgig 36 of 36 | Theirs 1 of 4. Voxgig 4 of 4 |
| [Kiota](https://voxgig.com/sdk/comparisons/kiota#one-api) | Apicurio Registry | [`@apicurio/apicurio-registry-sdk 3.3.3`](https://github.com/Apicurio/apicurio-registry/tree/main/typescript-sdk) | [`voxgig-sdk/apicurio-registry-sdk`](https://github.com/voxgig-sdk/apicurio-registry-sdk) | Theirs 132 methods. Voxgig 132 of 132 | Theirs 4 of 4. Voxgig 4 of 4 |
| [Hey API](https://voxgig.com/sdk/comparisons/hey-api#one-api) | Neon | [`@neon/sdk 6.1.2`](https://github.com/neondatabase/neon-pkgs/tree/main/packages/sdk) | [`voxgig-sdk/neon-sdk`](https://github.com/voxgig-sdk/neon-sdk) | Theirs 177 methods. Voxgig 178 of 179 | Theirs 4 of 4. Voxgig 4 of 4 |

Cloudflare is the exception. Forge's first SDK covers the whole API and is private to the cf CLI. Cloudflare's definition is too large for one Voxgig SDK, so the Voxgig build of it is 34 SDKs, one per product area; the Cloudflare page lists all 34 and compares the DNS one. Its figures cover the DNS operations only, and are not in the totals above.

## The comparisons

- [OpenAPI Generator](https://voxgig.com/sdk/comparisons/openapi-generator): The community generator most APIs have shipped an SDK from at least once. Apache 2.0, community governed, and broader than everything else here put together: 40+ client languages, 20+ server frameworks, plus docs, Postman collections and Protobuf. Breadth is the whole point, and the cost of it.
- [Speakeasy](https://voxgig.com/sdk/comparisons/speakeasy): Commercial SDK generation whose generator became AGPL-3.0 open source in September 2026. A generator you run from a CLI in your own CI, with Terraform providers, MCP servers and CLIs among its outputs and OpenAPI Overlays as its customization format. Since 17 September 2026 the generator is open source under AGPL-3.0, released with Google, and the license of what it generates is elected at generation time.
- [Fern](https://voxgig.com/sdk/comparisons/fern): SDKs and a documentation site from one definition. Part of Postman since January 2026. An Apache 2.0 CLI and generator set with a commercial hosted documentation platform on top. Takes OpenAPI, AsyncAPI, gRPC and OpenRPC, or its own definition format, and is the best integrated docs and SDK story in this comparison. Since 2026 it also generates a CLI, in early access, and its generators run inside Cloudflare's Forge.
- [Stainless](https://voxgig.com/sdk/comparisons/stainless): The generator behind many of the best-known AI SDKs. Its hosted product is winding down. Stainless generated the official client libraries for OpenAI, Anthropic, Cloudflare and several hundred other providers, and set the quality bar this whole field aims at. Anthropic acquired it in May 2026 and is winding down the hosted generator.
- [Cloudflare Forge](https://voxgig.com/sdk/comparisons/cloudflare-forge): Cloudflare's open-source generation pipeline, published on 28 September 2026. Apache 2.0, from the operator of an API with more than 3,500 operations. A pluggable pipeline that resolves OpenAPI, applies JSONPath overlays and chains transformers: Fern's generators for nine languages, TypeScript included, and, inside Cloudflare, the SDK and commands behind the cf CLI. Most of what the announcement describes is still ahead of the repository.
- [APIMatic](https://voxgig.com/sdk/comparisons/apimatic): The longest-running commercial generator here, and the only one that converts between description formats. SDKs in seven languages, a developer portal, spec validation, and API Transformer, which converts API descriptions between more than fifteen formats. The lowest entry price of the commercial tools on this site.
- [liblab](https://voxgig.com/sdk/comparisons/liblab): SDK generation shaped as a release pipeline. Part of Postman since November 2025. Commercial SDK generation whose center of gravity is publishing rather than generating: version, changelog and push packages to npm, PyPI, Maven, and NuGet on every spec change. Generates and hosts an MCP server from the same specification. Acquired by Postman in November 2025.
- [Kiota](https://voxgig.com/sdk/comparisons/kiota): Microsoft's client generator, built so you do not need a separate SDK per API. MIT, from Microsoft, and pointed at the other side of the API. Kiota is for the team calling somebody else's API, with one shared HTTP stack and fluent request builders across every API you consume.
- [Hey API](https://voxgig.com/sdk/comparisons/hey-api): The TypeScript ecosystem's generator, with a Python generator in early development. MIT, millions of weekly npm downloads, and a plugin architecture that generates exactly what you ask for: types, a client, Zod schemas, TanStack Query hooks. TypeScript today, with a Python generator in initial development. On TypeScript specifically it is the more specialized tool.

## What the decision usually turns on

Only one of these five questions is about generated code.

1. Who owns the generator. A vendor tool means a subscription, a roadmap and someone to escalate to. An open-source generator in your repository means maintenance you take on yourself.
2. How many languages you will genuinely ship. Two languages makes per-language subscription pricing cheap. Seven makes it the largest line on the invoice.
3. What happens on the fortieth change to your API description. This is where hand-written and AI-written SDKs stop being comparable to generated ones, and where a generator that cannot preserve customizations starts costing more than it saves.
4. Whether agents need to call your API. An MCP server generated from the same description as the SDK cannot drift from it; a hand-written one drifts on the next release. Of the tools compared here, Speakeasy, liblab and Voxgig generate one, and APIMatic has one in alpha. Cloudflare names one among Forge's intended outputs, and Fern hosts one for the documentation rather than the API. Stainless generated one too, but its hosted generator is winding down.
5. What you do when the vendor is bought. In the ten months to May 2026, three of the tools compared here changed hands: liblab to Postman in November 2025, Fern to Postman in January 2026, and Stainless to Anthropic in May 2026. Stainless's hosted generator began winding down the day the acquisition was announced. Two of the largest customers of the tool that closed answered in the open. Google co-released Speakeasy's generator under AGPL-3.0 in September 2026, and Cloudflare published Forge, its own Apache 2.0 pipeline, the same month.

## The risk of choosing Voxgig

Point five applies to Voxgig as well. Voxgig Ltd is a small independent company trading since 2018, with no external owner and no support contract on offer. If development stopped, the generator is MIT on npm and GitHub and the generated code is already in the consuming repository, so builds continue and regeneration continues; what stops is development. A smaller project also means a smaller community: fewer answered questions in public, fewer engineers who have hit a given edge case before. A commercial vendor offers a support contract and an SLA against that.

The SDK pairs measure the output as well. Against a mock of each definition, Voxgig's SDK got fewer steps right than the other tool's in two of the nine pairs, the same number in five, and more in two. Each page names the defects in Voxgig's toolchain behind its result.

## The wider field

Tools without a page of their own, with a line each: those that solve an adjacent problem, and those with too little direct use behind them to compare in detail.

- [Swagger Codegen](https://github.com/swagger-api/swagger-codegen): The ancestor of most of this field, still maintained by SmartBear. OpenAPI Generator forked from it in 2018 and took most of the community. Check which one you are actually running, because plenty of build files still say this one.
- [AutoRest](https://github.com/Azure/autorest): Microsoft's earlier generator, built around Azure's needs and still used across the Azure SDKs. Superseded by Kiota for general client generation, but a lot of production code depends on it.
- [NSwag](https://github.com/RicoSuter/NSwag): The .NET ecosystem's long-running toolchain: C# and TypeScript clients, plus server-side specification generation from ASP.NET controllers. Generating the description from the code rather than the other way round is a legitimate workflow that none of the tools above serve.
- [openapi-typescript and openapi-fetch](https://openapi-ts.dev): Types straight from the specification, plus a tiny typed fetch wrapper. Not really a generator: no client class, no features, almost no output. For a lot of TypeScript projects that is exactly the right amount of tool.
- [orval and Kubb](https://orval.dev): Two more TypeScript generators aimed at frontend data layers, with React Query, SWR and MSW mock output. Same territory as Hey API, different opinions about it.
- [`openapi-python-client`](https://github.com/openapi-generators/openapi-python-client): A single-language generator for Python that produces markedly more idiomatic output than a general-purpose tool aiming at forty languages. The same argument Hey API makes for TypeScript, made for Python.
- [Progenitor](https://github.com/oxidecomputer/progenitor): Oxide's Rust generator, emitting a client as a procedural macro or a build step. Narrow, sharp, and the reference for what generated Rust should look like.
- [Smithy](https://smithy.io): AWS's protocol-agnostic interface definition language, designed for code generation rather than adapted to it, and the model behind the AWS SDKs. The closest thing in the industry to Voxgig's semantic model argument, arrived at independently and at a much larger scale. It converts to OpenAPI, so it can feed the tools above.
- [TypeSpec](https://typespec.io): Microsoft's language for describing APIs concisely and emitting OpenAPI, Protobuf and JSON Schema from one definition. Solves the same authoring problem as Fern Definition, in the open, with an emitter model. Increasingly the front end other people's generators are pointed at.
- [Sideko and Konfig](https://sideko.dev): Smaller commercial entrants in the same shape as Speakeasy and Fern: SDKs plus documentation, per-seat or per-language. For any vendor of this size, including Voxgig, check it is still trading before building a release pipeline on it.
- [Scalar](https://scalar.com/products/sdk-generator): The API documentation company's hosted generator, closed source and priced per SDK target by endpoint count. TypeScript, Python, Go and a CLI are generally available and nine more languages are experimental. It reads a stainless.yml as input and does a three-way merge on every rebuild, which is aimed at the Stainless customers choosing a successor.
- [stainful](https://github.com/stainlu/stainful): An MIT generator from a single maintainer that reads an existing stainless.yml unchanged and produces a Python SDK from it, locally, with no service behind it. Python only and at version 0.4 on the checked date. The cheapest continuation path for a Stainless Python SDK, with one person's availability as its main risk.
- [Buf and Connect](https://buf.build): If your API is gRPC or Protobuf, generation is already the normal way of life and the toolchain is mature. The whole argument on this site, that clients should be generated from a machine-readable description, was settled years ago in that world.

## Corrections

Corrections go to info@voxgig.com with a subject of `Comparison correction`, or as an issue on the generator repository at https://github.com/voxgig/sdkgen/issues. The most useful correction names the page, the sentence, what is wrong, and where the correct answer is published. A correction changes the page and moves its checked date.

## Where to go next

- [Voxgig SDK Generator](https://voxgig.com/sdk)
- [SDK features](https://voxgig.com/sdk/features)
- [SDK customization](https://voxgig.com/sdk/custom)
- [SDK Catalog, 600+ worked examples](https://voxgig.com/voxgig-sdk)
- [Contact](https://voxgig.com/contact)
