OpenAPI support matrix

The tables below provide an overview of the OpenAPI features supported by Speakeasy.

✅ Server configuration

NameNotesSwagger linkSupport
ServerURL configGlobal and per-method (include base URL and templating)API server and base path (opens in a new tab)
Authentication and securityGlobal and per-methodAuthentication (opens in a new tab)
Method generation
Model generationRequest and response

⚠️ Path parameters serialization (Path parameters (opens in a new tab))

NameNotesSwagger linkSupport
Default(style = simple, explode = false)Parameter serialization (opens in a new tab)
Basic types
Simple objects
label
matrix

⚠️ Query parameters serialization (Query parameters (opens in a new tab) and query (opens in a new tab))

NameNotesSwagger linkSupport
json
form
spaceDelimited
pipeDelimited
deepObject
Basic types
Simple objects

✅ Request headers (Header (opens in a new tab))

NameNotesSwagger linkSupport
Simple (explode = true)
Simple (explode = false)

⚠️ Request body serialization

NameNotesSwagger linkSupport
Multipart encodingMultipart requests (opens in a new tab)
Binary
Form data
JSONBoth application/json and text/json
x-www-form-urlencodedIncluding encoding, but not non-object typesDescribing request body (opens in a new tab)⚠️
Plain text
Raw byte
Handling required body
XML
Other media types

⚠️ Response body deserialization

NameNotesSwagger linkSupport
Return StatusCode and Content-Type
JSON
Plain text
Raw byte
JSON
Other media types

✅ Media-type patterns (Media types (opens in a new tab))

✅ Data types

NameNotesSwagger linkSupport
Basic typesData models: Data types (opens in a new tab)
Enums
Number formatsfloat, double, int32, int64
Date-time
Binary
Arrays
Objects
Optional
Maps
Any type
OneOf, AnyOf, and AllOfoneOf, anyOf, allOf, not (opens in a new tab)⚠️ See union type support below

✅ Union types

NameNotesLanguage support
oneOfFor languages that don’t yet have native union type support in Speakeasy, oneOf will be treated as an any type.✅ TypeScript, Python, Go, C#, Java, PHP
allOfTo avoid construction of illogical types, Speakeasy currently constructs an object using the superset of fields from the listed schemas. In cases where the base schemas have a field name collision, Speakeasy will default to using the field from the object deepest in the list.✅ All languages
anyOfanyOf is treated as oneOf to avoid the bloat of combinatorial data type creation.✅ TypeScript, Python, Go

✅ Miscellaneous

NameNotesSwagger linkSupport
Auxiliary files*
x-speakeasy-server-id generation
Snippet generation
README generation
Documentation generation

* Files needed for creating a fully compilable package that can be published to the relevant package manager without further changes.