Feb 4, 2026

Robert Craigie
If your OpenAPI spec looks like this:
security: - BearerAuth: [] - ApiKeyAuth: [] securitySchemes: BearerAuth: type: http scheme: bearer ApiKeyAuth: type: apiKey name: api-key in: header paths: /cards: post: security: - BearerAuth: [] # ... responses omitted
And your stainless config looks like this:
settings: client_opts: bearer_token: type: string nullable: true auth: security_scheme: BearerAuth api_key: type: string nullable: true auth: security_scheme: ApiKeyAuth resources: cards: methods: create
When instantiating the SDK with both options:
from acme import Acme client = Acme( api_key="my-api-key", bearer_token="my-bearer-token", ) client.cards.create()
Previously, the SDK sent both the api-key and Authorization headers, which could cause authentication errors depending on how your API handles multiple authentication schemes.
Now the SDK will only send the Authorization header, as that is the only scheme configured for that endpoint in security.
This is enabled by default for new projects, to enable this for existing projects update the edition in your config to 2026-01-30 or higher:
edition: "2026-01-30"
Feb 4, 2026

Robert Craigie
If your OpenAPI spec looks like this:
security: - BearerAuth: [] - ApiKeyAuth: [] securitySchemes: BearerAuth: type: http scheme: bearer ApiKeyAuth: type: apiKey name: api-key in: header paths: /cards: post: security: - BearerAuth: [] # ... responses omitted
And your stainless config looks like this:
settings: client_opts: bearer_token: type: string nullable: true auth: security_scheme: BearerAuth api_key: type: string nullable: true auth: security_scheme: ApiKeyAuth resources: cards: methods: create
When instantiating the SDK with both options:
from acme import Acme client = Acme( api_key="my-api-key", bearer_token="my-bearer-token", ) client.cards.create()
Previously, the SDK sent both the api-key and Authorization headers, which could cause authentication errors depending on how your API handles multiple authentication schemes.
Now the SDK will only send the Authorization header, as that is the only scheme configured for that endpoint in security.
This is enabled by default for new projects, to enable this for existing projects update the edition in your config to 2026-01-30 or higher:
edition: "2026-01-30"
Feb 4, 2026

Robert Craigie
If your OpenAPI spec looks like this:
security: - BearerAuth: [] - ApiKeyAuth: [] securitySchemes: BearerAuth: type: http scheme: bearer ApiKeyAuth: type: apiKey name: api-key in: header paths: /cards: post: security: - BearerAuth: [] # ... responses omitted
And your stainless config looks like this:
settings: client_opts: bearer_token: type: string nullable: true auth: security_scheme: BearerAuth api_key: type: string nullable: true auth: security_scheme: ApiKeyAuth resources: cards: methods: create
When instantiating the SDK with both options:
from acme import Acme client = Acme( api_key="my-api-key", bearer_token="my-bearer-token", ) client.cards.create()
Previously, the SDK sent both the api-key and Authorization headers, which could cause authentication errors depending on how your API handles multiple authentication schemes.
Now the SDK will only send the Authorization header, as that is the only scheme configured for that endpoint in security.
This is enabled by default for new projects, to enable this for existing projects update the edition in your config to 2026-01-30 or higher:
edition: "2026-01-30"
Feb 3, 2026

Robert Craigie
The Python SDK generator now supports publishing to PyPI using trusted publishing via OIDC in addition to API tokens.
To learn more, see our docs on publishing.
Feb 3, 2026

Robert Craigie
The Python SDK generator now supports publishing to PyPI using trusted publishing via OIDC in addition to API tokens.
To learn more, see our docs on publishing.
Feb 3, 2026

Robert Craigie
The Python SDK generator now supports publishing to PyPI using trusted publishing via OIDC in addition to API tokens.
To learn more, see our docs on publishing.
Jan 29, 2026

Bruce Hill
The CLI generator is now generally available, which lets you turn your APIs into high-quality command line tools. Here are some highlights:
Built-in support for streaming and paginated endpoints using command line paging tools
Automatically generated man pages and
--helpdocumentationShell completion with smart suggestions
Interactive TUI views for exploring deeply nested data
Easy integration with AI agents that can run shell commands
Check out the documentation for more info.
Jan 29, 2026

Bruce Hill
The CLI generator is now generally available, which lets you turn your APIs into high-quality command line tools. Here are some highlights:
Built-in support for streaming and paginated endpoints using command line paging tools
Automatically generated man pages and
--helpdocumentationShell completion with smart suggestions
Interactive TUI views for exploring deeply nested data
Easy integration with AI agents that can run shell commands
Check out the documentation for more info.
Jan 29, 2026

Bruce Hill
The CLI generator is now generally available, which lets you turn your APIs into high-quality command line tools. Here are some highlights:
Built-in support for streaming and paginated endpoints using command line paging tools
Automatically generated man pages and
--helpdocumentationShell completion with smart suggestions
Interactive TUI views for exploring deeply nested data
Easy integration with AI agents that can run shell commands
Check out the documentation for more info.
Jan 22, 2026

James Rappazzo
Stainless can now automatically generate commit messages for your SDK builds using AI. When enabled, AI generates descriptive commit messages for each SDK following the Conventional Commits format.
How to enable:
Navigate to your organization settings at
https://app.stainless.com/{your-org}/settingsand toggle AI Commit Messages onPreview PRs: Set
enable_ai_commit_messages: truein your GitHub Action workflowStudio: Use the "Generate with AI" option when building from a dev branch
CLI: run
str builds createwith the--enable-ai-commit-messagesflag. The--enable-ai-commit-messagesflag tells Stainless to generate and use AI commit messages for your builds
Jan 22, 2026

James Rappazzo
Stainless can now automatically generate commit messages for your SDK builds using AI. When enabled, AI generates descriptive commit messages for each SDK following the Conventional Commits format.
How to enable:
Navigate to your organization settings at
https://app.stainless.com/{your-org}/settingsand toggle AI Commit Messages onPreview PRs: Set
enable_ai_commit_messages: truein your GitHub Action workflowStudio: Use the "Generate with AI" option when building from a dev branch
CLI: run
str builds createwith the--enable-ai-commit-messagesflag. The--enable-ai-commit-messagesflag tells Stainless to generate and use AI commit messages for your builds
Jan 22, 2026

James Rappazzo
Stainless can now automatically generate commit messages for your SDK builds using AI. When enabled, AI generates descriptive commit messages for each SDK following the Conventional Commits format.
How to enable:
Navigate to your organization settings at
https://app.stainless.com/{your-org}/settingsand toggle AI Commit Messages onPreview PRs: Set
enable_ai_commit_messages: truein your GitHub Action workflowStudio: Use the "Generate with AI" option when building from a dev branch
CLI: run
str builds createwith the--enable-ai-commit-messagesflag. The--enable-ai-commit-messagesflag tells Stainless to generate and use AI commit messages for your builds
Jan 21, 2026

Young-jin Park
The Stainless Language Server and VS Code extension bring SDK Studio's IntelliSense, diagnostics, and navigation tools into your local editor, with real-time feedback as you work.
Getting Started
Install the Stainless CLI:
brew install stlInitialize your workspace:
stl init
Read the complete guide for detailed instructions.
Jan 21, 2026

Young-jin Park
The Stainless Language Server and VS Code extension bring SDK Studio's IntelliSense, diagnostics, and navigation tools into your local editor, with real-time feedback as you work.
Getting Started
Install the Stainless CLI:
brew install stlInitialize your workspace:
stl init
Read the complete guide for detailed instructions.
Jan 21, 2026

Young-jin Park
The Stainless Language Server and VS Code extension bring SDK Studio's IntelliSense, diagnostics, and navigation tools into your local editor, with real-time feedback as you work.
Getting Started
Install the Stainless CLI:
brew install stlInitialize your workspace:
stl init
Read the complete guide for detailed instructions.
Jan 16, 2026

Max Freundlich
Stainless Docs Platform now automatically generates Open Graph images for both prose and API reference pages. Each page gets a dynamic image based on its title, description, section, and theme.
To learn more about the OG image plugin, check out the documentation.
Jan 16, 2026

Max Freundlich
Stainless Docs Platform now automatically generates Open Graph images for both prose and API reference pages. Each page gets a dynamic image based on its title, description, section, and theme.
To learn more about the OG image plugin, check out the documentation.
Jan 16, 2026

Max Freundlich
Stainless Docs Platform now automatically generates Open Graph images for both prose and API reference pages. Each page gets a dynamic image based on its title, description, section, and theme.
To learn more about the OG image plugin, check out the documentation.
Jan 14, 2026

Young-jin Park
You can now configure targets.openapi to automatically generate and maintain a Git repository containing your OpenAPI specification.
What's new:
Automated repository generation at
stainless-sdks/<project>-openapi(or your ownproduction_repo)Multiple spec variants generated automatically based on your configuration:
Base specification (
openapi.json/yml)Transformed specs when using Stainless Transforms
Specs with code samples for documentation integration
Runs on every Stainless build - no manual CI/CD configuration needed
Customizable output via
targets.openapi.options.files
Why this matters: Teams previously had to manually set up pipelines to push generated OpenAPI specs to public repositories. This target automates that workflow, making it easier to maintain public API specifications, communicate changes through commit history, and provide stable URLs for documentation tools.
Getting started:
targets: openapi: production_repo
See the OpenAPI target documentation for full configuration options.
Jan 14, 2026

Young-jin Park
You can now configure targets.openapi to automatically generate and maintain a Git repository containing your OpenAPI specification.
What's new:
Automated repository generation at
stainless-sdks/<project>-openapi(or your ownproduction_repo)Multiple spec variants generated automatically based on your configuration:
Base specification (
openapi.json/yml)Transformed specs when using Stainless Transforms
Specs with code samples for documentation integration
Runs on every Stainless build - no manual CI/CD configuration needed
Customizable output via
targets.openapi.options.files
Why this matters: Teams previously had to manually set up pipelines to push generated OpenAPI specs to public repositories. This target automates that workflow, making it easier to maintain public API specifications, communicate changes through commit history, and provide stable URLs for documentation tools.
Getting started:
targets: openapi: production_repo
See the OpenAPI target documentation for full configuration options.
Jan 14, 2026

Young-jin Park
You can now configure targets.openapi to automatically generate and maintain a Git repository containing your OpenAPI specification.
What's new:
Automated repository generation at
stainless-sdks/<project>-openapi(or your ownproduction_repo)Multiple spec variants generated automatically based on your configuration:
Base specification (
openapi.json/yml)Transformed specs when using Stainless Transforms
Specs with code samples for documentation integration
Runs on every Stainless build - no manual CI/CD configuration needed
Customizable output via
targets.openapi.options.files
Why this matters: Teams previously had to manually set up pipelines to push generated OpenAPI specs to public repositories. This target automates that workflow, making it easier to maintain public API specifications, communicate changes through commit history, and provide stable URLs for documentation tools.
Getting started:
targets: openapi: production_repo
See the OpenAPI target documentation for full configuration options.

Stephen Downward
The C# SDK generator is now generally available, bringing high quality SDKs to the .NET ecosystem. Key highlights include:
.NET Standard 2.0 support: You can use Stainless C# SDKs in any environment that implements .NET Standard 2.0. For more information see the changelog.
File uploads & downloads: Full lazy upload and download support with simple casting from
Streamandbyte[], including using the file name if available or specifying one manually.Type conversions: Implicit conversions for union variants to keep instantiations clean while preserving full type information.
Tooling support: Great type-ahead within all modern C# editors.
Minimal dependencies: Packages are only used for back-porting .NET features, as well as for unit tests. Aside from xUnit.net, all packages are maintained by Microsoft.
Equality checking: All non-streaming types implement a custom
Equalsoverride, allowing for comparing arbitrarily complex objects.Streaming: Support for SSE and JSONL streams as C# async enumerables, allowing for convenient usage with LINQ.
Intelligent pagination: Paginated endpoints are exposed as async enumerables, and automatically request new pages as required.
Comprehensive unit tests: Unit tests are generated for all model types and service methods.
NuGet publishing: C# SDKs can be configured to be automatically published to NuGet on every release.
Strong name signing: Assemblies can be automatically compiled with a strong name.
Advanced use-cases: Raw and undocumented request support.

Stephen Downward
The C# SDK generator is now generally available, bringing high quality SDKs to the .NET ecosystem. Key highlights include:
.NET Standard 2.0 support: You can use Stainless C# SDKs in any environment that implements .NET Standard 2.0. For more information see the changelog.
File uploads & downloads: Full lazy upload and download support with simple casting from
Streamandbyte[], including using the file name if available or specifying one manually.Type conversions: Implicit conversions for union variants to keep instantiations clean while preserving full type information.
Tooling support: Great type-ahead within all modern C# editors.
Minimal dependencies: Packages are only used for back-porting .NET features, as well as for unit tests. Aside from xUnit.net, all packages are maintained by Microsoft.
Equality checking: All non-streaming types implement a custom
Equalsoverride, allowing for comparing arbitrarily complex objects.Streaming: Support for SSE and JSONL streams as C# async enumerables, allowing for convenient usage with LINQ.
Intelligent pagination: Paginated endpoints are exposed as async enumerables, and automatically request new pages as required.
Comprehensive unit tests: Unit tests are generated for all model types and service methods.
NuGet publishing: C# SDKs can be configured to be automatically published to NuGet on every release.
Strong name signing: Assemblies can be automatically compiled with a strong name.
Advanced use-cases: Raw and undocumented request support.

Stephen Downward
The C# SDK generator is now generally available, bringing high quality SDKs to the .NET ecosystem. Key highlights include:
.NET Standard 2.0 support: You can use Stainless C# SDKs in any environment that implements .NET Standard 2.0. For more information see the changelog.
File uploads & downloads: Full lazy upload and download support with simple casting from
Streamandbyte[], including using the file name if available or specifying one manually.Type conversions: Implicit conversions for union variants to keep instantiations clean while preserving full type information.
Tooling support: Great type-ahead within all modern C# editors.
Minimal dependencies: Packages are only used for back-porting .NET features, as well as for unit tests. Aside from xUnit.net, all packages are maintained by Microsoft.
Equality checking: All non-streaming types implement a custom
Equalsoverride, allowing for comparing arbitrarily complex objects.Streaming: Support for SSE and JSONL streams as C# async enumerables, allowing for convenient usage with LINQ.
Intelligent pagination: Paginated endpoints are exposed as async enumerables, and automatically request new pages as required.
Comprehensive unit tests: Unit tests are generated for all model types and service methods.
NuGet publishing: C# SDKs can be configured to be automatically published to NuGet on every release.
Strong name signing: Assemblies can be automatically compiled with a strong name.
Advanced use-cases: Raw and undocumented request support.
Jan 13, 2026

Pierce Clark
We’ve removed all MCP tool schemes except for “Code Mode," a scheme that exposes just two tools to agents. These include the “docs-search tool” and an “execute-code tool," which allows agents to execute code against your TypeScript SDK on your behalf.
We now will no longer generate or offer other tool schemes such as regular/dynamic tools. Other options such as hosting/publishing your server with Stainless will remain unchanged.
You can find out more about Code Mode and its advantages in our MCP docs.
Jan 13, 2026

Pierce Clark
We’ve removed all MCP tool schemes except for “Code Mode," a scheme that exposes just two tools to agents. These include the “docs-search tool” and an “execute-code tool," which allows agents to execute code against your TypeScript SDK on your behalf.
We now will no longer generate or offer other tool schemes such as regular/dynamic tools. Other options such as hosting/publishing your server with Stainless will remain unchanged.
You can find out more about Code Mode and its advantages in our MCP docs.
Jan 13, 2026

Pierce Clark
We’ve removed all MCP tool schemes except for “Code Mode," a scheme that exposes just two tools to agents. These include the “docs-search tool” and an “execute-code tool," which allows agents to execute code against your TypeScript SDK on your behalf.
We now will no longer generate or offer other tool schemes such as regular/dynamic tools. Other options such as hosting/publishing your server with Stainless will remain unchanged.
You can find out more about Code Mode and its advantages in our MCP docs.

Hao Wang
The PHP SDK generator is now generally available, with deeply integrated type annotations that empower modern language services, for both array shapes as well as parameter and response classes.
Tooling support: Great auto-completion and type checking support for modern editor tool chains and static analysis.
Minimalistic value objects: Plain composition of lightweight and built-in data interfaces such as ArrayAccess for accessing and providing raw or custom data and Stringable for pretty printing.
Standard protocols: PHP Standards Recommendation-derived HTTP stack, compatible with the wider ecosystem.
Flexible input: Choose between well-typed arrays for ease of entry or equivalent parameter classes and gain runtime-safety.
Intuitive pagination: Paginated data as plain value objects composed with the built-in IteratorAggregate protocol for accessing successive pages.
Type conversions: Automatic conversion of inputs and outputs to and from Time, Integer, and so on, as appropriate.
Streaming: Support for SSE & JSON-L streams as PHP Iterators with automatic resource cleanup.
Advanced use cases: Raw and undocumented request support as well as for accessing underlying HTTP transports.

Hao Wang
The PHP SDK generator is now generally available, with deeply integrated type annotations that empower modern language services, for both array shapes as well as parameter and response classes.
Tooling support: Great auto-completion and type checking support for modern editor tool chains and static analysis.
Minimalistic value objects: Plain composition of lightweight and built-in data interfaces such as ArrayAccess for accessing and providing raw or custom data and Stringable for pretty printing.
Standard protocols: PHP Standards Recommendation-derived HTTP stack, compatible with the wider ecosystem.
Flexible input: Choose between well-typed arrays for ease of entry or equivalent parameter classes and gain runtime-safety.
Intuitive pagination: Paginated data as plain value objects composed with the built-in IteratorAggregate protocol for accessing successive pages.
Type conversions: Automatic conversion of inputs and outputs to and from Time, Integer, and so on, as appropriate.
Streaming: Support for SSE & JSON-L streams as PHP Iterators with automatic resource cleanup.
Advanced use cases: Raw and undocumented request support as well as for accessing underlying HTTP transports.

Hao Wang
The PHP SDK generator is now generally available, with deeply integrated type annotations that empower modern language services, for both array shapes as well as parameter and response classes.
Tooling support: Great auto-completion and type checking support for modern editor tool chains and static analysis.
Minimalistic value objects: Plain composition of lightweight and built-in data interfaces such as ArrayAccess for accessing and providing raw or custom data and Stringable for pretty printing.
Standard protocols: PHP Standards Recommendation-derived HTTP stack, compatible with the wider ecosystem.
Flexible input: Choose between well-typed arrays for ease of entry or equivalent parameter classes and gain runtime-safety.
Intuitive pagination: Paginated data as plain value objects composed with the built-in IteratorAggregate protocol for accessing successive pages.
Type conversions: Automatic conversion of inputs and outputs to and from Time, Integer, and so on, as appropriate.
Streaming: Support for SSE & JSON-L streams as PHP Iterators with automatic resource cleanup.
Advanced use cases: Raw and undocumented request support as well as for accessing underlying HTTP transports.