Speakeasy, Stainless, Fern, and APIMatic all generate webhook-handling code from an OpenAPI spec today; OpenAPI Generator has partial, generator-by-generator support with open bugs. None of the five reads a bare 3.0 spec for this — Speakeasy and Fern specifically require the OpenAPI 3.1 top-level webhooks: keyword, and three of the five gate the feature behind a paid plan. Below is what each vendor's own docs said when checked on 2026-09-16.
Which generators support 3.1 webhooks? (verified table)
Speakeasy, Stainless, Fern and APIMatic read a native 3.1 webhooks: block; OpenAPI Generator reads it, but its output varies by language target.
| Generator | Reads native 3.1 webhooks:? |
What it generates | Plan required | Source (checked 2026-09-16) |
|---|---|---|---|---|
| Speakeasy | Yes — docs state "You must use OpenAPI 3.1.0 or higher" | Typed request/response objects per webhook, plus signature verification | Business or Enterprise (paid add-on) | speakeasy.com/docs/sdks/customize/webhooks |
| Stainless | Yes — reads the top-level webhooks section |
client.webhooks.unwrap(payload) helper that parses + verifies signed events (Standard Webhooks spec) |
Paid feature | stainless.com/docs/sdks/configure/webhooks |
| Fern | Yes, natively for 3.1; 3.0 needs the x-fern-webhook: true extension instead |
WebhooksHelper class for signature verification, generated docs reference |
Enterprise plan (stated on the same cited page) | buildwithfern.com — webhooks |
| APIMatic | Yes (added October 2025) | Type-safe webhook handlers with built-in HMAC signature verification, across C#, Java, Python, Ruby, and TypeScript | Not published on this page | apimatic.io — Oct 2025 highlights |
| OpenAPI Generator | Partial — a 3.1 webhooks: block is read, but per-language output is inconsistent |
Varies by generator target; the C# generator has an open bug producing code that doesn't compile for root-level webhooks | Free, open source | github.com/OpenAPITools/openapi-generator |
Do any of them read OpenAPI 3.0 webhooks?
No — 3.0 has no top-level webhooks: field to read, so every generator on this list treats webhook generation as a 3.1-plus feature (with Fern's x-fern-webhook extension as the one documented 3.0 workaround). This is a spec-text limitation, not a tooling gap: OpenAPI 3.0's Schema Object has no equivalent of the 3.1 webhooks: block, which sits at the same document level as paths:. If your spec is still on 3.0 and you need generated webhook handlers, either upgrade to 3.1 (see our 3.0-vs-3.1 guide) or use Fern's extension-based path.
What "supports webhooks" actually means, per vendor
It's not one feature — check which of these three you actually need before picking a generator:
- Type generation. Turning the webhook's
requestBodyschema into a typed object in the target language. All five do this once they recognize the webhook. - Signature verification. Verifying the payload actually came from the API provider (HMAC or the Standard Webhooks spec). Stainless, Speakeasy, and APIMatic build this in; Fern's
WebhooksHelpercovers it via thex-fern-webhook-signatureextension; OpenAPI Generator does not — you write verification by hand against the generated types. - A dispatch/unwrap helper. A single method that takes a raw payload and returns the correctly-typed event (Stainless's
client.webhooks.unwrap(payload)is the clearest example). Not every generator ships one — some just give you the types and leave routing to you.
Should this change which generator you pick?
Only if webhooks are a significant part of your API surface and you're already choosing between two otherwise-equal generators — in that case, the paid-plan gating on Speakeasy and Stainless is the more consequential fact than the type-generation itself, since both are capable once you're paying for the tier. If webhooks are a minor part of your spec, generate the types with whichever tool you'd otherwise pick and hand-write verification, which is a small amount of code against a documented HMAC scheme.
For a broader look at what generators handle beyond webhooks — language coverage, docs, release workflow — see Swagger Codegen vs modern SDK generators. For the spec side of modeling webhooks correctly before you generate anything, see OpenAPI webhooks: the right pattern in 3.1.
Sourced's SDK generator reads OpenAPI 3.1 specs including webhooks: and previews the generated TypeScript and Python surface before anything publishes — start free, no credit card required.