I tried out OpenAI GPT-6 Astra, which became generally available on Amazon Bedrock

I tried out OpenAI GPT-6 Astra, which became generally available on Amazon Bedrock

I tried calling GPT-6 Astra from the Converse/OpenAI compatible API of `bedrock-runtime` and the OpenAI compatible API of `bedrock-mantle`. I will check the model ID for each endpoint, how to call it using the OpenAI SDK, and the pricing for Bedrock versus direct OpenAI sales.
2026.09.09

This page has been translated by machine translation. View original

Introduction

On September 8, 2026, OpenAI's GPT-6 Astra became generally available on Amazon Bedrock.

https://aws.amazon.com/about-aws/whats-new/2026/09/openai-gpt-6-astra-on-amazon-bedrock/

I tried calling GPT-6 Astra via the Converse/OpenAI-compatible path of bedrock-runtime and the OpenAI-compatible path of bedrock-mantle.

Validation Details

Model List

I retrieved the list of foundation models filtered by the OpenAI provider.

aws bedrock list-foundation-models \
  --by-provider OpenAI \
  --region us-east-1

The returned list included the following entry.

{
    "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/openai.gpt-6-astra",
    "modelId": "openai.gpt-6-astra",
    "modelName": "GPT-6 Astra",
    "providerName": "OpenAI",
    "inputModalities": [
        "TEXT",
        "IMAGE"
    ],
    "outputModalities": [
        "TEXT"
    ],
    "responseStreamingSupported": true,
    "customizationsSupported": [],
    "inferenceTypesSupported": [
        "INFERENCE_PROFILE"
    ],
    "modelLifecycle": {
        "status": "ACTIVE",
        "startOfLifeTime": "2026-09-08T17:00:00+00:00"
    }
}

The model ID is openai.gpt-6-astra, with text and image inputs and text output. Response streaming is also supported.

Converse

The model ID appearing in the list is openai.gpt-6-astra, but when calling it you specify global.openai.gpt-6-astra. I ran Converse against us-east-1.

aws bedrock-runtime converse \
  --region us-east-1 \
  --model-id global.openai.gpt-6-astra \
  --messages '[{"role":"user","content":[{"text":"Say ok"}]}]' \
  --inference-config '{"maxTokens":64}'

The response was as follows.

{
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                {
                    "text": "ok"
                }
            ]
        }
    },
    "stopReason": "end_turn",
    "usage": {
        "inputTokens": 8,
        "outputTokens": 5,
        "totalTokens": 13,
        "cacheReadInputTokens": 0
    }
}

When I sent the same request to us-east-1, us-west-2, and ap-northeast-1, all returned stopReason end_turn, response text ok, and usage of input 8 / output 5 / total 13.

I also received a response using InvokeModel with the same model ID.

Here is the result of passing {"messages":[{"role":"user","content":"Say ok"}],"max_completion_tokens":16} as the input body.

{"choices":[{"finish_reason":"stop","index":0,"message":{"annotations":[],"content":"ok","refusal":null,"role":"assistant"}}],"created":1788919066,"id":"chatcmpl-y3ldv7w2nvet7ibewtphemha2kmyudqvrasturqhjottjo2tbm3q","model":"global.openai.gpt-6-astra","object":"chat.completion","service_tier":"default","usage":{"completion_tokens":5,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":8,"prompt_tokens_details":{"audio_tokens":0,"cache_write_tokens":0,"cached_tokens":0},"total_tokens":13},"system_fingerprint":null}

OpenAI-Compatible Path

I sent a Responses API format body to the OpenAI-compatible path of bedrock-runtime.

{"model":"global.openai.gpt-6-astra","input":"Say ok","store":false}

I saved this as gpt6-astra-responses-body.json and sent it to /openai/v1/responses using curl. For authentication, I passed temporary credentials from environment variables—the same ones used by the AWS CLI—and added SigV4 signing to curl.

curl --silent --show-error \
  --aws-sigv4 'aws:amz:us-east-1:bedrock' \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
  -H 'Content-Type: application/json' \
  --data-binary @gpt6-astra-responses-body.json \
  https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/responses

The HTTP status was 200. The response model was global.openai.gpt-6-astra, status was completed, the output text was ok, and usage was the same as Converse: 8 / 5 / 13 (input_tokens / output_tokens / total_tokens).

When sending to /openai/v1/chat/completions with the same model ID, the HTTP status was also 200. The finish_reason was stop, the response text was ok, and usage was prompt_tokens 8 / completion_tokens 5 / total_tokens 13. The output limit was specified using max_completion_tokens.

Calling from the OpenAI SDK using IAM role environment variables

The official OpenAI SDK basic example uses a Bedrock API key. The code in this article is not a replacement for that SDK sample's authentication method, but rather a proof-of-concept that adds SigV4 signing to the HTTP client. The endpoint specification states that both Runtime and Mantle support SigV4 authentication. Here, with AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN obtained from an IAM role or similar already set as environment variables, I added SigV4 signing to the HTTP requests sent by the OpenAI SDK.

The principal executing the Responses API on Runtime needs bedrock:InvokeModel for the inference profile and the default project. The code below assumes that temporary credentials with those permissions are already set in environment variables.

import json
import os

import httpx
from botocore.auth import SigV4Auth
from botocore.awsrequest import AWSRequest
from botocore.credentials import Credentials
from openai import OpenAI

REGION = "us-west-2"
SIGNING_SERVICE = "bedrock"
MODEL_ID = "global.openai.gpt-6-astra"

credentials = Credentials(
    os.environ["AWS_ACCESS_KEY_ID"],
    os.environ["AWS_SECRET_ACCESS_KEY"],
    os.environ.get("AWS_SESSION_TOKEN"),
)

class SigV4Signer(httpx.Auth):
    requires_request_body = True

    def auth_flow(self, request):
        aws_request = AWSRequest(
            method=request.method,
            url=str(request.url),
            data=request.content,
            headers={"content-type": request.headers.get("content-type", "application/json")},
        )
        SigV4Auth(credentials, SIGNING_SERVICE, REGION).add_auth(aws_request)
        for key, value in aws_request.headers.items():
            request.headers[key] = value
        yield request

client = OpenAI(
    api_key="unused-sigv4",
    base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
    http_client=httpx.Client(auth=SigV4Signer(), timeout=120.0),
)

response = client.responses.create(
    model=MODEL_ID,
    input="Can you explain the features of Amazon Bedrock?",
)
print("=== output_text ===")
print(response.output_text)
print("=== usage ===")
print(json.dumps(response.usage.model_dump(), indent=2))

I installed openai, botocore, and httpx in a python:3.12-slim container and ran it with credentials passed only as environment variables. response.output_text returned the body explaining Bedrock's features, and usage was input 16, output 1,010 (of which reasoning 145), total 1,026 tokens. An excerpt of the output is as follows.

=== output_text ===
**Amazon Bedrock is AWS's managed platform for building generative AI applications.** It gives you access to foundation models and tools for connecting them to your data, automating workflows, and adding security controls—without having to manage the underlying model-serving infrastructure for its standard managed offerings.

Here are its main features:

### 1. Access to multiple foundation models
...

=== usage ===
{
  "input_tokens": 16,
  "output_tokens": 1010,
  "total_tokens": 1026
}

Mantle

The official documentation recommends bedrock-runtime for new applications, but GPT-6 Astra was also available from bedrock-mantle. When I sent openai.gpt-6-astra to the OpenAI-compatible Responses API in us-west-2, it returned HTTP 200 with status: completed. The output text was ok, and usage was also the same 8 / 5 / 13.

Unlike bedrock-runtime, the model ID specified for bedrock-mantle does not include a profile prefix. When I specified the same model ID in us-east-1, I received an HTTP 404 with The model 'openai.gpt-6-astra' does not exist. The model card also states that bedrock-mantle availability is limited to us-west-2 only.

Calling Mantle from the OpenAI SDK using IAM role environment variables

The same SigV4Signer can be used with Mantle. All that is needed is credentials in environment variables with bedrock-mantle:CreateInference permitted. From the Runtime version of the code, change the region, signing service name, model ID, and base_url as follows.

REGION = "us-west-2"
SIGNING_SERVICE = "bedrock-mantle"
MODEL_ID = "openai.gpt-6-astra"

client = OpenAI(
    api_key="unused-sigv4",
    base_url=f"https://bedrock-mantle.{REGION}.api.aws/openai/v1",
    http_client=httpx.Client(auth=SigV4Signer(), timeout=120.0),
)

response = client.responses.create(
    model=MODEL_ID,
    input="Can you explain the features of Amazon Bedrock?",
)
print(response.output_text)

I saved this block together with the Runtime version's SigV4Signer in a single file and ran it. In actual measurements using a python:3.12-slim container with temporary credentials passed as environment variables, response.output_text returned a long explanation of Bedrock's features. The beginning was as follows.

**Amazon Bedrock is AWS's fully managed service for building generative AI applications.** It lets you access foundation models, connect them to your data, and deploy AI-powered workflows without managing the underlying model-serving infrastructure.

Its main features include:

### 1. Access to multiple foundation models
...

As shown, the SDK call itself is the same, and you can switch between Runtime and Mantle simply by changing the endpoint, SigV4 service name, and model ID.

Pricing

Bedrock's unit pricing is listed on the model card, and direct pricing is on the OpenAI model page. The table below shows the list price per 1M tokens for short contexts up to 272K tokens.

Invocation method Input Output
Bedrock / Global cross-region inference $10.00 $50.00
Bedrock / In-region inference & geography-based cross-region inference $11.00 $55.00
OpenAI direct $10.00 $50.00

Summary

I was able to call GPT-6 Astra immediately after GA from both Bedrock's native Converse and the OpenAI-compatible Responses API.

I look forward to seeing GPT-6 Astra, which is now available on Amazon Bedrock, deployed to AI agents such as Kiro, and to geography-based cross-region inference expanding to regions beyond North America.


AI白書2026 配布中

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

AI白書2026

無料でダウンロードする

Share this article

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