SDK generator comparisons

OpenAPI Generator and Voxgig, compared

The community generator with the widest language and framework coverage in this comparison, and the only one here that generates server stubs.

Published by Voxgig, which makes one of the two tools compared here. Facts checked against the first-party sources linked below. Corrections go to info@voxgig.com. Every page in this section follows the same scope and method.

What OpenAPI Generator is#

OpenAPI Generator is a community fork of Swagger Codegen, made in 2018 when most of the maintainer group left the original project. It is Apache 2.0, governed by a core team with a technical committee per language, and published to Maven Central on a regular release cadence.

Calling it a generator undersells it. It is a framework hosting around a hundred generators: client libraries in more than 40 languages, server stubs for more than 20 frameworks, plus documentation, Postman collections, Protobuf schemas, GraphQL, JMeter and k6 scripts, and build configuration. Each generator is a Java class plus a tree of Mustache templates, and each has its own maintainers and its own maturity.

You configure it with command-line options, a config file, and template overrides: copy the templates out, edit them, point the CLI at your directory. It runs on the JVM, or from a Docker image, or through Maven, Gradle and npm wrappers.

The scale shows in the issue tracker. As of 28 September 2026 the repository showed over five thousand open issues and several hundred open pull requests. That number describes a hundred generators of different ages and different levels of maintenance sharing one tracker, rather than the health of any one of them. The practical consequence is that experience varies by which generator a project lands on.

What OpenAPI Generator does that Voxgig does not#

Capabilities OpenAPI Generator has that Voxgig does not, in enough detail to evaluate them.

Breadth nothing else is close to

If you need Elixir, Perl, Rust, Scala, Erlang, PowerShell, Ada or Apex, this is often the only tool that has a generator for it. Voxgig has 23 language targets against a list roughly four times longer. Where the deciding question is whether a target exists at all, OpenAPI Generator is the widest net available.

Server stubs, which nobody else here generates

Spring, FastAPI, Gin, Laravel, ASP.NET, Express, and about fifteen more. Generating the server skeleton from the same description as the client suits design-first API work. Voxgig generates no server-side output at all, so a team that needs a stub has no decision left to make here.

Mustache overrides: crude, total, and yours

Extract the templates for your generator, edit them, and pass -t ./templates. There is no supported extension model to work within and no upgrade story for what you change, but there is also nothing you cannot change. Long-lived template forks are common, which suggests the mechanism's simplicity offsets the absence of an upgrade path for many teams.

Nobody can buy it and switch it off

Apache 2.0, a technical committee, artifacts in Maven Central for every release since 2018. Three of the tools compared here changed owner in the ten months to May 2026, and one stopped taking new projects the day it was announced. A community-governed Apache 2.0 project with published artifacts cannot be withdrawn the same way, which is the relevant property for procurement and for long-lived builds.

It runs in an air-gapped build with no account

A jar, or a Docker image. No sign-in, no telemetry to switch off, no seat count, and no network call at generation time, which is what a regulated or disconnected build environment needs. Voxgig, Kiota and Hey API have the same property, and since September 2026 so does the AGPL path of Speakeasy's generator. Fern's local generation checks in with a Fern API key, and every SDK language in Cloudflare Forge, TypeScript included, runs a Fern generator in Docker; APIMatic, liblab and Stainless generate on their own services.

Side by side#

No partial ticks and no asterisks. If a tool has a feature, the table says it has it. Where a row would need a paragraph to be true, it is a paragraph somewhere else on this page instead of a row here.

OpenAPI GeneratorVoxgig
LicenseApache 2.0MIT
Account neededNoNo
Language targets40+ client generators, 20+ server frameworks23 language targets, 20 bundled plus Dart, Haskell and Lean from the langpack
Non-SDK outputServer stubs, docs, Postman, Protobuf, GraphQL, build configCLI, MCP Server, Agent Skills, REPL, Semantic Model, and documentation editions through docgen
Cross-cutting behaviorPer generator, and uneven. Some have retry, most do not20 features, same options and behavior in every target
CustomizationMustache template overrides, then a Java forkModel, templates, components, features, targets, packages
RuntimeJVM or DockerNode
Regenerating over your editsOverwriteThree-way diff-merge, plus a doctor command
Behind itA large volunteer community and a technical committeeOne small company, trading since 2018

One API, two SDKs#

Lob publishes an SDK made with OpenAPI Generator from a version of its definition years older than today's. Voxgig built one from the current version, and both were run against a mock of the current version on the same four steps: list, load, create, and remove. The version gap explains Lob's lower operation count, so read that row as a measure of the input rather than of either generator. Voxgig's features are in the build and stay off until a client switches them on; the rows describe them switched on. Last measured 29 September 2026.

OpenAPI Generator

@lob/lob-typescript-sdk 1.4.2

The TypeScript SDK Lob publishes on npm, generated with OpenAPI Generator 5.3.0 from an older version of the same definition.

Voxgig

voxgig-sdk/lob-sdk

Built on 29 September 2026 from the current version of the same definition: eight targets from one run. A repository to build from, not a published package.

The definition: Lob's own OpenAPI definition, dist/lob-api-bundled.yml in lob/lob-openapi at commit ff3a7f5: OpenAPI 3.0.3, 58 paths, 105 operations, MIT. Its source.

What each SDK does

OpenAPI GeneratorVoxgig
Operations callable70 methods, from a years-older version of the definition105 of 105
Mock scenario on addresses4 of 4 steps right4 of 4 right, with the key sent as Lob documents it: the username, with a blank password
RetriesNoneOn 408, 425, 429, 500, 502, 503 and 504, honoring Retry-After
TimeoutsNo SDK option. Axios's own timeout passes through30 seconds per attempt by default
PaginationPage tokens on list results, and you call list again yourselfPage and cursor state carried between calls in ctrl.paging, with no iterator
Idempotency keysAn optional argument on some create methods, which you supplyGenerated for every mutating call, and kept across its retries
Rate limitsNoneA client-side token bucket, and Retry-After honored on 429
LoggingNoneRequest and response logging, with auth headers redacted
Offline test modeNoneA mock transport seeded with your data, which the generated tests run on
MetricsNonePer-operation counts and timings, with no OpenTelemetry
CancellationNo SDK option. An axios signal passes throughA signal stops stream() between items. Only the timeout aborts a request in flight
HooksPass your own axios instance, with its interceptorsCustom features that hook every stage of a call
ErrorsThe raw AxiosError, rethrown with Lob's message copied inOne error class per SDK, carrying the HTTP status and a notFound flag

What the code is

OpenAPI GeneratorVoxgig
Package@lob/lob-typescript-sdk on npmNot published. You build it from the repository
TypeScript package size3.54 MB in 245 files2.70 MB in 376 files
Runtime dependencies2: axios and tslibNone
Languages from this buildTypeScriptTypeScript, Python, PHP, Go, Ruby and Lua, plus a Go CLI and a Go MCP server
ShapeA class per API tag, such as AddressesApi, with a method per operation33 entities, such as Address, each with the list, load, create, update and remove operations the API has
TypesA model class per schema, for requests and responsesAn interface per entity, from the response schema, with nested objects typed any
TestsNot run here: the comparison used the published package455 generated TypeScript tests pass, as do the generated Go, Python, Ruby, Lua, and PHP suites

The same calls in each, in TypeScript. Both samples type-check under strict mode against the SDK they name.

@lob/lob-typescript-sdk 1.4.2
import { AddressEditable, AddressesApi, Configuration } from '@lob/lob-typescript-sdk'

const addresses = new AddressesApi(new Configuration({ username: process.env.LOB_API_KEY }))

const page = await addresses.list(10)
const address = await addresses.get('adr_123')
const created = await addresses.create(new AddressEditable({
  name: 'Thing T. Thing',
  address_line1: '1313 CEMETERY LN',
  address_city: 'WESTFIELD',
  address_state: 'NJ',
  address_zip: '07090',
}))
await addresses.delete('adr_123')
voxgig-sdk/lob-sdk
import { LobSDK } from '@voxgig-sdk/lob-sdk'

const client = new LobSDK({ apikey: process.env.LOB_APIKEY, secret: process.env.LOB_SECRET })

const addresses = await client.Address().list()
const address = await client.Address().load({ id: 'adr_123' })
const created = await client.Address().create({
  name: 'Thing T. Thing',
  address_line1: '1313 CEMETERY LN',
  address_city: 'WESTFIELD',
  address_state: 'NJ',
  address_zip: '07090',
})
await client.Address().remove({ id: 'adr_123' })

What building and running both found

  • Lob's SDK has 70 methods because Lob generated it from a definition years older than the one used here. The gap is in its input, not in OpenAPI Generator.
  • sdkgen sent Basic auth only when both a key and a secret were set until 4.31.0, so a Lob user who followed Lob's documentation sent no Authorization header. The Voxgig SDK is built on 4.32.1 and sends the key as Lob documents it, with a blank password.
  • apidef read Lob's address list at body until 8.18.0, although Lob puts it at body.data inside an allOf, so list returned nothing and the Address type carried the page's count and next_url. On 8.22.0 the list and the type both read the address.
  • Lob declares Idempotency-Key on nine creates. sdkgen sent it in the request body until 4.32.0, which sends every header parameter as a header, and Voxgig's idempotency feature can also generate the key for you.
  • OpenAPI Generator generates a model class per schema, for requests and responses. Voxgig types each entity's top-level fields from the response schema and leaves nested objects as any (voxgig/sdkgen#220).

The full scorecard, with the evidence for every row

Which one to choose#

Choose OpenAPI Generator when

  • The language or framework you need is not among Voxgig's 23 targets. OpenAPI Generator's list is roughly four times longer.
  • You need a server stub. Voxgig generates clients and consumer surfaces only, nothing server-side.
  • You already have a template fork that works. Migrating a working fork costs more than it returns, and a generator you have already bent to your shape is worth more than a better one you have not.
  • Procurement wants an Apache 2.0 artifact with multi-vendor governance and a decade of releases behind it.
  • Your API is small and a typed wrapper is all anyone asked for. Do not buy a feature model you will not switch on.

Choose Voxgig when

  • You want retries, idempotency keys, pagination, caching and tracing generated with the same behavior in every language, instead of hand-written once per language on top of whatever the generator gave you.
  • You want a CLI, an MCP Server and a REPL that cannot drift from the SDK, because all of them come from one model on one run.
  • You want your customization to survive upgrades. Voxgig's extension points are declared in the model and packaged, so a resync refreshes stock content without touching yours, and doctor reports the drift either way.
  • You want generated code with no runtime dependency on the generator and nothing to install at call time.

Limits of this comparison#

  • The standard criticism, that the output is not idiomatic, is too broad to be fair. It is a hundred generators. The Go and Python clients are better than the reputation suggests; some of the long tail is worse. Judge the generator for your language, not the project.
  • The SDK pair covers one of its generators, the TypeScript one, through the SDK Lob publishes, run against a mock of Lob's definition. The other generators' output is described from publicly readable generated code, not from a benchmark.
  • The open-issue count is a poor health proxy for a project this size. Read it as a description of scale, not as a verdict.
  • The SDK pair is one API, compared in TypeScript against a mock of its definition rather than the live service. Lob's SDK comes from a definition years older than the one used here, so its operation count measures its input, not the generator.

Corrections go to info@voxgig.com or an issue on the generator repository. A correction changes the page and moves its checked date; corrections from OpenAPI Generator's own team carry the most weight.

OpenAPI Generator documentation#

First-party sources for the claims on this page. Where they disagree with it, they are the authority.

The other comparisons#

  • SpeakeasyCommercial SDK generation whose generator became AGPL-3.0 open source in September 2026.
  • FernSDKs and a documentation site from one definition. Part of Postman since January 2026.
  • StainlessThe generator behind many of the best-known AI SDKs. Its hosted product is winding down.
  • Cloudflare ForgeCloudflare's open-source generation pipeline, published on 28 September 2026.
  • APIMaticThe longest-running commercial generator here, and the only one that converts between description formats.
  • liblabSDK generation shaped as a release pipeline. Part of Postman since November 2025.
  • KiotaMicrosoft's client generator, built so you do not need a separate SDK per API.
  • Hey APIThe TypeScript ecosystem's generator, with a Python generator in early development.

All comparisons, the ground rules, and the wider field

Read the generated code#

The generator is MIT and open, and the catalog holds 600+ generated SDKs readable without installing anything.

Voxgig SDK GeneratorTalk to Voxgig

Get the Voxgig dispatch

Short notes on building SDKs, CLIs, MCP Servers, and REPLs for API-first teams, plus the occasional Fireside episode pick.

By signing up you agree to our Terms of use.