
Benjamin Yolken
When a Java SDK build completes successfully, Stainless will generate a hosted Maven repo that can be shared for early testing, before the SDK is formally released.
The details on how to use this repo are visible when clicking on the info icon in the “Build” row in the build status panel in the studio. We also generate a custom doc page in the repo root, which is viewable by clicking on the “Learn more” link in the popup.
A similar feature has been available for Python and Typescript builds for a while; with this change, sharing and testing pre-release Java builds is just as easy.

Benjamin Yolken
When a Java SDK build completes successfully, Stainless will generate a hosted Maven repo that can be shared for early testing, before the SDK is formally released.
The details on how to use this repo are visible when clicking on the info icon in the “Build” row in the build status panel in the studio. We also generate a custom doc page in the repo root, which is viewable by clicking on the “Learn more” link in the popup.
A similar feature has been available for Python and Typescript builds for a while; with this change, sharing and testing pre-release Java builds is just as easy.

Benjamin Yolken
When a Java SDK build completes successfully, Stainless will generate a hosted Maven repo that can be shared for early testing, before the SDK is formally released.
The details on how to use this repo are visible when clicking on the info icon in the “Build” row in the build status panel in the studio. We also generate a custom doc page in the repo root, which is viewable by clicking on the “Learn more” link in the popup.
A similar feature has been available for Python and Typescript builds for a while; with this change, sharing and testing pre-release Java builds is just as easy.
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"
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