Feb 18, 2026

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 18, 2026

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 18, 2026

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 --help documentation

  • Shell 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 --help documentation

  • Shell 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 --help documentation

  • Shell 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}/settings and toggle AI Commit Messages on

  • Preview PRs: Set enable_ai_commit_messages: true in your GitHub Action workflow

  • Studio: Use the "Generate with AI" option when building from a dev branch

  • CLI: run str builds create with the --enable-ai-commit-messages flag. The --enable-ai-commit-messages flag tells Stainless to generate and use AI commit messages for your builds

Learn more about AI commit messages →

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}/settings and toggle AI Commit Messages on

  • Preview PRs: Set enable_ai_commit_messages: true in your GitHub Action workflow

  • Studio: Use the "Generate with AI" option when building from a dev branch

  • CLI: run str builds create with the --enable-ai-commit-messages flag. The --enable-ai-commit-messages flag tells Stainless to generate and use AI commit messages for your builds

Learn more about AI commit messages →

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}/settings and toggle AI Commit Messages on

  • Preview PRs: Set enable_ai_commit_messages: true in your GitHub Action workflow

  • Studio: Use the "Generate with AI" option when building from a dev branch

  • CLI: run str builds create with the --enable-ai-commit-messages flag. The --enable-ai-commit-messages flag tells Stainless to generate and use AI commit messages for your builds

Learn more about AI commit messages →