OpenAI GPT-5.5 / GPT-5.4 Are Now GA on Amazon Bedrock, So I Tried Them Out with the Responses API
ちょっと話題の記事

OpenAI GPT-5.5 / GPT-5.4 Are Now GA on Amazon Bedrock, So I Tried Them Out with the Responses API

OpenAI's GPT-5.5 and GPT-5.4 are now GA on Amazon Bedrock. Swapping the OpenAI SDK's base_url and auth token enables calls via Bedrock. This article checks Responses API usage and how reasoning.effort behaves.
2026.06.02

This page has been translated by machine translation. View original

Introduction

On June 1, 2026, OpenAI models (GPT-5.5, GPT-5.4) and Codex became generally available (GA) on Amazon Bedrock. This article focuses on verifying calling GPT-5.5 and GPT-5.4 via the Responses API. Codex, the Chat Completions API, and streaming are out of scope.

https://aws.amazon.com/blogs/aws/get-started-with-openai-gpt-5-5-gpt-5-4-models-and-codex-on-amazon-bedrock

OpenAI models on Bedrock are called not through the Converse API but through a dedicated Responses API endpoint. We use the bedrock-mantle endpoint introduced in the official blog. The differences between the two are as follows.

Aspect Converse API Responses API (for OpenAI models)
Endpoint bedrock-runtime bedrock-mantle
SDK AWS SDK (boto3) OpenAI SDK
Authentication IAM / SigV4 Bedrock API Key or short-term token derived from the AWS credential chain
Request format Bedrock Converse format OpenAI Responses API format
Target models Various models on Bedrock OpenAI models on Bedrock

Prerequisites

To run the code in this article, you need to have completed the following.

  • Model access for GPT-5.5 / GPT-5.4 is enabled in the target region
  • You can authenticate via the AWS credential chain (IAM role, AWS_PROFILE, environment variables, etc.)
  • The executing principal has been granted permission to invoke Bedrock models

Regions and model IDs

The following is the availability as of June 2, 2026. Please check the official documentation for the latest information.

Model Model ID Region
GPT-5.5 openai.gpt-5.5 us-east-2 (Ohio) only
GPT-5.4 openai.gpt-5.4 us-east-2 (Ohio), us-west-2 (Oregon)

Pricing

This is the pricing as of June 2, 2026. Please check the official pricing page for the latest information.

Model Input (per 1M tokens) Output (per 1M tokens) Cached Input (per 1M tokens)
GPT-5.5 $5.50 $33.00 $0.55
GPT-5.4 $2.75 $16.50 $0.275

Authentication methods

Authentication to the Responses API endpoint uses a Bearer token. There are two ways to obtain one.

Method 1: Short-term token (used in this article)

Generate a short-term token with aws-bedrock-token-generator from the AWS credential chain (IAM role / profile). The validity period is up to 12 hours, but it cannot be used beyond the expiration of the original AWS credentials. You need IAM permissions that allow calling Bedrock, and botocore[crt].

Method 2: Bedrock API Key

This is a long-term key issued from the console or CLI. See the official documentation for details.

Execution environment

  • Python: 3.14.4
  • openai: 2.40.0
  • aws-bedrock-token-generator: 1.1.0
  • botocore: 1.43.2
  • awscrt: 0.32.2

Calling GPT-5.5 with the OpenAI Python SDK

Setup

pip install openai aws-bedrock-token-generator "botocore[crt]"

If you forget botocore[crt], a MissingDependencyException occurs when running provide_token(). This is because awscrt (AWS Common Runtime), which is used internally, is missing. Be sure to install "botocore[crt]" as well, not just openai and aws-bedrock-token-generator.

Note that this article was verified with the versions listed in "Execution environment". With different versions, the attribute names of response objects and error types may change.

Calling code

from aws_bedrock_token_generator import provide_token
from openai import OpenAI

token = provide_token(region="us-east-2")
client = OpenAI(
    base_url="https://bedrock-mantle.us-east-2.api.aws/openai/v1",
    api_key=token,
)

response = client.responses.create(
    model="openai.gpt-5.5",
    input=[
        {"role": "developer", "content": "You are a helpful assistant. Be concise."},
        {"role": "user", "content": "What is Amazon Bedrock in one sentence?"},
    ],
    reasoning={"effort": "medium"},
)

print(response.output_text)
print(f"Input: {response.usage.input_tokens} / Output: {response.usage.output_tokens}")

Execution result

Amazon Bedrock is a fully managed AWS service for building and scaling generative AI applications using foundation models from leading AI companies and Amazon.
Input: 28 / Output: 31

The call via Bedrock succeeded.

The reasoning.effort parameter

You can control the depth of reasoning with the effort field of the reasoning parameter. In this article, I checked the behavior by specifying low, medium, and high.

In this verification, when specifying effort=low with GPT-5.5, the reasoning_tokens in the response was 0. On the other hand, in the call with GPT-5.4 + effort=high, the response contained a reasoning_tokens value, and output included a block with type: "reasoning".

Calling with curl

You can also call it with curl without using the Python SDK.

TOKEN=$(python3 -c 'from aws_bedrock_token_generator import provide_token; print(provide_token(region="us-east-2"))')

curl -s "https://bedrock-mantle.us-east-2.api.aws/openai/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "model": "openai.gpt-5.5",
    "input": [
      {"role": "user", "content": "What is the capital of Japan?"}
    ],
    "reasoning": {"effort": "low"}
  }'

Response (excerpt)

{
  "id": "resp_xxx",
  "model": "openai.gpt-5.5",
  "object": "response",
  "status": "completed",
  "output": [
    {
      "id": "msg_xxx",
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "The capital of Japan is Tokyo."
        }
      ]
    }
  ],
  "reasoning": {
    "effort": "low",
    "summary": null,
    "context": "current_turn"
  },
  "usage": {
    "input_tokens": 26,
    "output_tokens": 11,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 37
  }
}

In this example with effort=low, reasoning_tokens was 0 and the output was simple.

Trying GPT-5.4 too

GPT-5.4 is available in Oregon as well as Ohio.

Calling in Ohio (us-east-2)

Using the client for us-east-2 from earlier, change the model ID to openai.gpt-5.4.

response = client.responses.create(
    model="openai.gpt-5.4",
    input=[{"role": "user", "content": "Explain why the sky is blue in one sentence."}],
    reasoning={"effort": "high"},
)

A response was returned normally. This response included a reasoning block.

GPT-5.4 response example (with reasoning block)

{
  "id": "resp_xxx",
  "model": "openai.gpt-5.4",
  "object": "response",
  "status": "completed",
  "output": [
    {
      "id": "rs_xxx",
      "type": "reasoning",
      "summary": []
    },
    {
      "id": "msg_xxx",
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "The sky looks blue because molecules in Earth's atmosphere scatter the shorter, bluer wavelengths of sunlight more strongly than the longer, redder wavelengths."
        }
      ]
    }
  ],
  "reasoning": {
    "effort": "high",
    "summary": null,
    "context": "current_turn"
  },
  "usage": {
    "input_tokens": 16,
    "output_tokens": 51,
    "output_tokens_details": { "reasoning_tokens": 16 },
    "total_tokens": 67
  }
}

Calling in Oregon (us-west-2)

token = provide_token(region="us-west-2")
client_oregon = OpenAI(
    base_url="https://bedrock-mantle.us-west-2.api.aws/openai/v1",
    api_key=token,
)

response = client_oregon.responses.create(
    model="openai.gpt-5.4",
    input=[{"role": "user", "content": "Hello from Oregon!"}],
    reasoning={"effort": "high"},
)

GPT-5.4 responded normally in Oregon as well.

GPT-5.5 is not available in Oregon

from openai import NotFoundError

try:
    response = client_oregon.responses.create(
        model="openai.gpt-5.5",
        input=[{"role": "user", "content": "Hello"}],
        reasoning={"effort": "medium"},
    )
except NotFoundError as e:
    print("GPT-5.5 is not available in us-west-2")
    print(e)

When I tried to call GPT-5.5 in Oregon, a 404 error occurred. As of June 2, 2026, GPT-5.5 is offered only in Ohio.

Calling in Japanese

I checked whether it works without problems in Japanese as well.

response = client.responses.create(
    model="openai.gpt-5.5",
    input=[
        {"role": "developer", "content": "日本語で簡潔に回答してください。"},
        {"role": "user", "content": "Amazon Bedrock とは何ですか?"},
    ],
    reasoning={"effort": "medium"},
)

A response was returned normally in Japanese as well.

Amazon Bedrock は、AWS 上で複数の基盤モデルを利用して生成 AI アプリケーションを構築・運用できるマネージドサービスです。

Summary

I confirmed that GPT-5.5 / GPT-5.4 on Amazon Bedrock can be called from the OpenAI SDK. Obtaining a short-term token with aws-bedrock-token-generator is easy, and reasoning control via reasoning.effort also works. Being able to leverage existing IAM authentication, governance, and billing mechanisms as they are, without issuing an API Key directly from OpenAI, is an advantage unique to going through Bedrock. I would like to try streaming and Codex, which were out of scope this time, in a follow-up.

References

https://aws.amazon.com/jp/blogs/machine-learning/openai-models-and-codex-on-amazon-bedrock-are-now-generally-available/

https://aws.amazon.com/blogs/aws/get-started-with-openai-gpt-5-5-gpt-5-4-models-and-codex-on-amazon-bedrock

https://openai.com/index/openai-frontier-models-and-codex-are-now-available-on-aws/

https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html

https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html

https://aws.amazon.com/bedrock/pricing/

https://docs.aws.amazon.com/bedrock/latest/userguide/models-region-compatibility.html


AI白書2026 配布中

クラスメソッドが独自に行なったAI診断調査をもとに、企業のAI活用の現在地を調査レポートとしてまとめました。企業規模別の活用度傾向に加え、規模を超えてAI活用を進める企業に共通する取り組みまで、自社の現在地を捉えるためのヒントにぜひ。

AI白書2026

無料でダウンロードする

Share this article

AWSのお困り事はクラスメソッドへ