Scalar vs Speakeasy
Last updated: September 2026
Speakeasy and Scalar both turn an OpenAPI document into client SDKs. If you are evaluating one, you should evaluate the other.
This page is written by Scalar, so read it with that in mind. Every claim we make about Speakeasy links to Speakeasy's own documentation, pricing page, or public repositories. If we have something wrong, tell us and we will fix it.
Two things to disclose up front.
The first is that we work together. Speakeasy documents a Scalar integration for teams who want Speakeasy SDKs and Scalar documentation, and Speakeasy's own API reference is rendered by Scalar. Their docs vendor comparison is complimentary about us. We are not neutral about Speakeasy and we are not going to pretend the relationship does not exist.
The second is that Speakeasy's company focus has moved, and its generator has changed licence. In April 2026 Speakeasy positioned itself as an AI control plane, and as of September 2026 their pricing page covers that product, with SDK generation under a separate "API Platform" heading in their navigation. Then on 17 September 2026, in a partnership with Google, Speakeasy open-sourced its generator under AGPL-3.0 as speakeasy-api/openapi-generation. The SDK product is documented, actively developed, and used in production by large APIs. If you are making a multi-year platform decision, it is still worth asking where SDK generation sits on their roadmap, and asking them directly rather than inferring it from a website.
At a glance
| Scalar | Speakeasy | |
|---|---|---|
| Generator source | Closed source | Generator is AGPL-3.0 since September 2026; the CLI stays Elastic License 2.0 |
| Docs renderer | MIT, self-hostable on any plan | Generates an API reference; a full docs site means a docs vendor |
| Docs + SDKs from one run | Yes, docs is a build target |
Code samples are published to a docs vendor |
| Terraform providers | No | Yes |
| MCP servers | Yes, hosted and configurable | Yes, generated to deploy yourself |
| Custom code survives regeneration | Yes, three-way merge | Yes, three-way merge |
| Speakeasy call-site compatibility | Yes, generated compat module | n/a |
| Standalone API client | Yes, open source | No |
| Published SDK price | One target included; additional targets from $150/month | Not published; free tier is 1 SDK, 50 API methods |
Where Speakeasy is stronger
We would rather you hear this from us than discover it in a trial.
Terraform providers. Speakeasy generates Terraform providers from an annotated OpenAPI document. Scalar does not generate Terraform providers at all. If your API is infrastructure that people declare rather than call, this is not a close comparison — it is the whole comparison.
MCP servers you deploy yourself. Both products do MCP, and they do it differently — see MCP servers below. Speakeasy's advantage is that the server is generated code you own and run: custom prompts, custom resources, tool curation, OAuth, Docker, and Cloudflare Workers deployment. If you need the server inside your own infrastructure rather than hosted, that is theirs.
Tree-shakable functions as the primary surface. Every Speakeasy method is also exported as a standalone function, so bundlers can drop the operations you do not call. For a browser or edge bundle against a large API that is a real, measurable win. Scalar's idiomatic surface is a client object; we emit Speakeasy-shaped standalone functions through the compatibility module described below, but that exists to keep migrating call sites compiling, not as our recommended surface.
Contract test generation on an open standard. Speakeasy generates contract tests using the Arazzo specification, with a generated mock server, so the tests live in a public format rather than a proprietary one. It is marked beta, covers successful scenarios only, supports six languages, and requires an Enterprise account plus an add-on — but the design decision to build on an open workflow spec is the right one and we like it.
An open-source generator. Since September 2026 the Speakeasy generator — SDKs, Terraform providers, MCP servers, and CLIs — is published under AGPL-3.0. You can read it, change it, and run it without an account by electing the AGPL licence, or buy a commercial licence if copyleft does not suit you. Scalar's SDK generator is closed source, so if auditing or forking the generator matters to you, this is a real difference.
A longer production track record. Speakeasy-generated SDKs have been shipping for years at scale. You can read Vercel's and Dub's in full. Scalar's generator is newer, and years of other people's edge cases is not something we can claim.
The actual architectural choice
Strip away the feature tables and the decision looks like this.
Speakeasy composes. Speakeasy generates an API reference with code snippets for every method, and for a full documentation site you integrate the output with a documentation vendor — Scalar, Mintlify, ReadMe, or Bump.sh — by publishing a combined OpenAPI document with those samples attached. Each layer is chosen on its own merits. When a better docs product appears you swap it without touching your SDKs.
Scalar consolidates. In Scalar's generator, docs is a build target alongside the language targets. One generation run emits the SDKs, a static API reference, and openapi.augmented.json — the exact artifact the SDKs were generated from — plus a shared manifest used for coverage checks. Your reference and your client libraries cannot describe different APIs, because they are produced from the same compiled document in the same run.
Both are legitimate. Composition gives you leverage and an exit at every layer. Consolidation gives you one artifact, one bill, and one thing to debug when the reference and the SDK disagree. We think consolidation is the better default for most teams, but "most" is doing real work in that sentence, and if you already have a docs setup you like, the composed path — Speakeasy SDKs into Scalar docs — is a path we help people take.
Moving without breaking your users
If you already ship Speakeasy SDKs, the expensive part of changing generator is not the generation — it is that your users have written code against a public surface, and a new generator produces a different one. New function names, new import paths, a major version bump, and a migration note nobody reads.
Scalar generates a compatibility module for exactly this. Set compatibility on a target:
{
"targets": {
"typescript": {
"compatibility": "speakeasy"
}
}
}
That emits src/compat/speakeasy.ts — Speakeasy-style standalone functions returning a functional Result, matching Speakeasy's tree-shakable funcs/ surface, marked deprecated and forwarding to the generated Scalar SDK. Existing call sites keep compiling while you migrate, and the deprecation markers give your users a machine-readable path off the old surface rather than a changelog entry.
It is a bridge, not a permanent shim: the compat module reproduces the Speakeasy surface, and the idiomatic Scalar client is what you move people toward. See the TypeScript configuration reference for the current options.
MCP servers
Both products generate MCP servers from OpenAPI. The difference is where the server runs, and it is the same composed-versus-consolidated split as everything else on this page.
Speakeasy generates the server as code. You get a standalone MCP server with custom prompts, custom resources, tool customization, and OAuth, which you deploy — Docker, remote, or Cloudflare Workers. You own the runtime and the operational burden that comes with it.
Scalar hosts the server. You pick which endpoints become tools in the dashboard, choose per-tool whether it is exposed for lookup only or makes real authenticated requests, and store the API credentials against the installation so they are never handed to the client. The server runs at mcp.scalar.com, private by default, with Personal Access Tokens for your team and OAuth for people outside it. Scalar also exposes a separate Docs MCP at your-docs-domain/mcp so AI clients can search and read your published documentation. Full details in the MCP servers guide.
Neither is the obviously correct answer. If you have compliance requirements about where API credentials live, or you want the server inside your own network, generated code is the right shape and Speakeasy's is more configurable at the code level. If you would rather not operate another service, and you want tool selection and auth managed alongside the API description they came from, hosted is less work.
SDK output: the shape of the code
The clearest way to compare two generators is to read what they emit. Below is real, public generated code — Speakeasy's from the Vercel SDK and the Dub SDK, Scalar's from the Warp TypeScript SDK.
Instantiating a client
// Speakeasy
import { Vercel } from "@vercel/sdk";
const vercel = new Vercel({
bearerToken: "<YOUR_BEARER_TOKEN_HERE>",
});
// Scalar
import WarpAPI from "warp-hr";
const client = new WarpAPI({
apiKey: process.env["API_KEY"], // defaults to the API_KEY env var
});
Two small differences. Scalar exports the client as the default export, so the import reads like the product. And Scalar reads credentials from a conventional environment variable by default, so the quickstart does not require passing a secret inline.
Method naming
Speakeasy carries your operationId through to the method name. When your OpenAPI document is well curated that is exactly what you want — Dub's SDK reads dub.links.create() and dub.links.upsert(), which is hard to improve on. When it is not, you get what Vercel's document produces: vercel.replaceDomainsByDomainRecords(). Speakeasy gives you extensions and overlays to rename methods and group operations, so the fix exists — it is work you do in the document.
Scalar takes the other position and normalizes by default: it strips the redundant resource noun and maps the verb onto a fixed set, so list, retrieve, create, update, and delete appear on every resource.
operationId |
Carried through | Scalar |
|---|---|---|
listPets |
client.pets.listPets() |
client.pet.list() |
getPetById |
client.pets.getPetById() |
client.pet.retrieve() |
addPet |
client.pets.addPet() |
client.pet.create() |
This is a genuine trade-off rather than a win. Speakeasy's default gives you the names you wrote, which is predictable and auditable against your specification. Scalar's default gives you names you can guess without reading the reference, at the cost of not matching your operationId exactly. Pick the one that matches how much you trust your own document.
Errors
Both generators produce a typed error hierarchy. Scalar's generated clients export BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError, ConflictError, UnprocessableEntityError, RateLimitError, and InternalServerError, alongside APIConnectionError, APIConnectionTimeoutError, and APIUserAbortError — all readable in src/core/error.ts. Scalar additionally enumerates the exact set of error statuses each operation can return, generated from the specification.
Custom code
Scalar supports custom code anywhere in the generated SDK. Edit generated files as you would any other code: every build performs a three-way merge between the previous generation, the new generation, and the current state of your repository, then opens a pull request combining the two. Untouched files update cleanly, your edits ride along, and files you added yourself are left alone. For code you want held in place explicitly, mark a region:
// scalar-sdk-generator:custom-code retry-helper:start
export const withBackoff = async <T>(fn: () => Promise<T>) => {
// Anything in here is carried forward on every regeneration.
};
// scalar-sdk-generator:custom-code retry-helper:end
Conflicts arrive as a pull request you resolve on GitHub, and the whole flow runs on managed branches you can inspect: scalar-generated holds pristine output, scalar-next holds output merged with your commits, and scalar-merge-conflict carries anything needing a human. See custom code for the details.
Speakeasy is comparable here, and we would not pick between the two products on this point. They support custom code anywhere in the generated SDK, preserved across regeneration through three-way merging, plus SDK hooks for lifecycle logic — initialization, before request, after success, after error — which is a cleaner extension point than editing files when what you need is cross-cutting behavior rather than a one-off method.
Agent readiness
Both products ship Agent Skills. They are aimed at different people, and the distinction matters more than the shared name.
Speakeasy's skills are installed with speakeasy agent setup-skills and help you generate SDKs — starting a project, following generation best practices, generating a server. They make your coding assistant good at Speakeasy.
Scalar's ship inside the generated SDK, for the developers and agents who consume your API. Every generated SDK carries a SKILL.md, a .claude/skills/ entry for automatic discovery, a generated api.md listing every method grouped by resource, and an openapi.augmented.json. All four are readable in the generated Warp SDK. The intent is that an agent writing code against your API cannot invent a method name that does not exist.
These are complements, not competitors. If you generate with Speakeasy you can install their skills; the question is whether your users' agents get the same treatment.
Open source, precisely
Neither product is open source end to end, and the open halves are different.
Scalar's documentation stack is open. The API reference renderer and the API client are MIT licensed, runnable offline without an account, and forkable. This is why GitBook's interactive API explorer is powered by Scalar. Scalar's SDK generator is not open source.
Speakeasy's generator is open source. Since 17 September 2026 the generator itself lives in speakeasy-api/openapi-generation under AGPL-3.0, an OSI-approved copyleft licence. Before it runs you choose either the AGPL terms, which need no account, or a commercial licence token from Speakeasy. Speakeasy says the SDK code the generator produces belongs to you; if copyleft matters to your organisation, have your own counsel read the licence. The Speakeasy CLI, speakeasy-api/speakeasy, remains under the source-available Elastic License 2.0. Separately, Speakeasy publishes genuinely permissive OpenAPI tooling that is worth knowing about regardless of which generator you choose: speakeasy-api/openapi is MIT, and their documentation site is MIT too.
So if what matters is owning and modifying the documentation layer, Scalar is the open one. If what matters is reading and modifying the generator that produces your SDKs, Speakeasy now is, under a copyleft licence.
What you know before you talk to sales
Speakeasy's free tier is one SDK with up to 50 API methods, and new accounts get a 14-day trial of the business tier. Beyond that, their pricing page as of September 2026 prices the AI control plane and lists a single "Enterprise — Tailored" tier, so hosted SDK pricing is a conversation. The AGPL release changes the arithmetic for some teams: you can now run the generator yourself at no licence cost if the copyleft terms work for you. SDK contract testing additionally requires an Enterprise account and an add-on.
Scalar publishes its price: one SDK target is included with every plan, and additional targets start at $150 per month each, with volume discounts as you add more. Pricing scales with the number of endpoints in your OpenAPI document. A target becomes billable when you save a version and queue its build, and drafts are never billed. You can work out what it costs without talking to us.
| Plan | Scalar (pricing) | Speakeasy (pricing) |
|---|---|---|
| Free | $0: 1 SDK up to 25 endpoints, docs with 1 editor seat, up to 3 APIs | 1 SDK, up to 50 API methods, plus a 14-day business-tier trial |
| Self-run | Not available; the generator is closed source | AGPL-3.0 generator, no licence fee under AGPL terms |
| Entry paid | Pro, $150/month ($125/month billed yearly): 1 SDK up to 100 endpoints, 5 editor seats, MCP servers | Not published |
| Mid tier | Business, $600/month ($500/month billed yearly): SDKs up to 250 endpoints, 10 editor seats, SSO | Not published |
| Top tier | Enterprise, custom | Enterprise, "Tailored" |
Checked on 26 September 2026.
To be fair about it: unpublished pricing is not the same as expensive pricing, and a company selling mostly to enterprises has real reasons not to publish. But it does mean the two products cannot be compared on cost without a call, and we would rather be the one you can price in advance.
Speakeasy vs Scalar
If you already generate SDKs with Speakeasy, you are probably happy with them, and there is no reason to change generators for the sake of it. The question worth asking is about the layer around the SDKs, and it is the same architectural choice described above.
If you like composing best-of-breed tools, Speakeasy for SDKs and a separate docs product is a sound setup, and Scalar is one of the docs products Speakeasy itself documents. The September open-source release makes that path more attractive, not less: you can now read and run the generator you depend on.
If you would rather have one artifact, one run, and one bill for docs, SDKs, and a hosted MCP server, Scalar consolidates those. Teams that move usually start with the docs, keep Speakeasy for SDKs, and decide on the SDKs later. The compatibility module exists so that later decision does not break anyone's code.
Neither path is wrong. It depends on whether you value an exit at every layer or fewer moving parts.
Which should you choose?
Choose Speakeasy if you need Terraform providers, you need the MCP server as code running in your own infrastructure rather than hosted, bundle size makes tree-shakable standalone functions your primary surface, you want Arazzo-based contract tests, or you want to read, modify, and run the generator that produces your code under an open source licence.
Choose Scalar if you want documentation and SDKs produced by the same run from the same compiled document, you want a documentation layer you own outright under MIT and can self-host on any plan, you want a hosted MCP server with per-tool control and credentials that never reach the client, you want an Agent Skill shipped to your API's consumers rather than to your own team, you want a real API client alongside your docs, or you want to know the price before the call.
Choose both if you already have Speakeasy SDKs and want better documentation. That path is documented by Speakeasy and it works. And if you decide to move the SDKs across later, the compatibility module means you can do it without breaking the call sites your users have already written.
Start free or talk to us.
Frequently asked questions
Is Speakeasy open source?
The generator is. On 17 September 2026 Speakeasy released it under AGPL-3.0, covering SDKs, Terraform providers, MCP servers, and CLIs, with a commercial licence available as an alternative. The Speakeasy CLI remains under the Elastic License 2.0. Scalar's SDK generator is closed source; its API reference and API client are MIT licensed.
Can I use Speakeasy SDKs with Scalar docs?
Yes. Speakeasy documents a Scalar integration: you publish an OpenAPI document with Speakeasy's code samples attached, and Scalar renders them in your API reference. Many teams run exactly this setup.
How much does Speakeasy cost?
Speakeasy's free tier is one SDK with up to 50 API methods. Its pricing page lists a single tailored Enterprise tier as of September 2026, and the AGPL generator can be run without a licence fee. Scalar Pro is $150 per month and includes one SDK.
Can I move from Speakeasy to Scalar without breaking my users' code?
For TypeScript, yes. Setting "compatibility": "speakeasy" on the target emits a module of Speakeasy-style standalone functions, marked deprecated, that forward to the Scalar SDK. Existing call sites keep compiling while your users move to the new surface.
Does Scalar generate Terraform providers like Speakeasy?
No. Terraform providers are on Scalar's roadmap with no date. If you need them, Speakeasy generates them today.
Related
- Learn: Generate an SDK from OpenAPI · Generate an MCP server from OpenAPI
- Docs: TypeScript SDK configuration · Speakeasy alternatives · MCP servers guide
- Product: Scalar SDK Generator — docs, SDKs, and a hosted MCP server from one run
This comparison is based on Speakeasy's publicly available documentation, pricing page, and public GitHub repositories as of September 2026, and on Scalar's own source and generated output. One correction in the other direction: Speakeasy's docs vendor comparison describes Scalar as lacking MDX, and Scalar Docs supports MDX — we mention it here rather than asking them to change their page. We have made a genuine effort to be accurate and to state where Speakeasy is better. If you find something wrong or out of date, please open an issue and we will correct it.