Subchapter 25.54
references/shared/openai-on-bedrock.mdMarkdown19 KBView on GitHub
Last verified: 2026-08-21 Sources: OpenAI model cards (per-model cards linked below), , ,
OpenAI’s proprietary models are available on Bedrock, not just the open-weight gpt-oss family. This changes the
default shape of every OpenAI → AWS migration: the source model itself is frequently a Bedrock target, so a
cross-family swap to Claude/Nova is no longer the only option — and is no longer the default.
This file is the single source of truth for OpenAI-on-Bedrock facts in this plugin. ai-openai-to-bedrock.md
(mapping policy), design-ai.md (selection), estimate-ai.md (costing), and ai-migration-guardrails.md (quota
risk) all defer to it. Do not restate model IDs, regions, or endpoint paths elsewhere — link here.
| Model | Model ID (mantle) | Launched | Context | Lifecycle | Model card |
|---|---|---|---|---|---|
| GPT-5.6 Sol | openai.gpt-5.6-sol | Jul 13, 2026 | 1M | Active | card (opens in a new tab) |
| GPT-5.6 Terra | openai.gpt-5.6-terra | Jul 13, 2026 | 1M | Active | card (opens in a new tab) |
| GPT-5.6 Luna | openai.gpt-5.6-luna | Jul 13, 2026 | 1M | Active | card (opens in a new tab) |
| GPT-5.5 | openai.gpt-5.5 | Jun 1, 2026 | 272K | Active | card (opens in a new tab) |
| GPT-5.4 | openai.gpt-5.4 | Jun 1, 2026 | 272K | Active | card (opens in a new tab) |
| gpt-oss-120b | openai.gpt-oss-120b | Aug 5, 2025 | 128K | Active | open-weight; also on bedrock-runtime as openai.gpt-oss-120b-1:0 |
| gpt-oss-20b | openai.gpt-oss-20b | Aug 5, 2025 | 128K | Active | open-weight; also on bedrock-runtime as openai.gpt-oss-20b-1:0 |
| GPT OSS Safeguard | openai.gpt-oss-safeguard-120b / -20b | — | — | Active | content-moderation / guardrail enforcement, not general chat |
| Daybreak Blue / Red | (gated) | — | — | Active | GPT-5.6 Cyber variants; require Trusted Access for Cyber enrollment — listed so they are not misread as “not on Bedrock”; unlikely migration targets |
Naming: GPT-5.6 uses generation number + capability tier. Sol = flagship reasoning, Terra = balanced
production, Luna = high-volume / low-latency. Tiers advance on independent cadences, so a future Terra may not
share a generation with a future Sol.
Context-window conflict (resolved): the GPT-5.6 launch blog states 272K for all three variants; all three model cards state 1M. The model cards are authoritative — use 1M for GPT-5.6. GPT-5.5 and GPT-5.4 are 272K on both sources. Re-check on refresh; if AWS corrects the blog, the cards still win.
Not on Bedrock (as of this refresh): GPT-4o, GPT-4.1, GPT-4 / GPT-4 Turbo, GPT-3.5 Turbo, the o-series
(o1/o3/o4-mini), GPT-5 / GPT-5.1 / GPT-5.2, and the *-Pro variants (GPT-5.5 Pro, GPT-5.4 Pro). Sources whose model
is on this list have no same-model landing target — see ai-openai-to-bedrock.md for the two-option path.
GPT-5.5 and GPT-5.4 are bedrock-mantle-only and in-region only. Their model cards list a single
Programmatic Access row (bedrock-mantle, Geo/Global “Not supported”) and In-Region pricing only.
GPT-5.6 Sol / Terra / Luna have TWO endpoints (verified 2026-08-21 — this changed after this file’s original 2026-08-10 verification; the Refresh Checklist predicted it):
| Endpoint | Reach | Model id form | Base URL |
|---|---|---|---|
bedrock-mantle | In-region only | openai.gpt-5.6-sol / -terra / -luna | https://bedrock-mantle.{region}.api.aws/openai/v1 |
bedrock-runtime | CRIS only (no in-region form) | Geo us.openai.gpt-5.6-* (or in. in India Regions), Global global.openai.gpt-5.6-* | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
The GPT-5.6 model cards now carry an explicit tip: “Whenever possible, we recommend using the bedrock-runtime
endpoint for new applications.”
Constraints that still break naive assumptions:
/openai/v1 on BOTH endpoints — a bare /v1 404s. Every GPT model card states the
mantle path explicitly, and the runtime example gives bedrock-runtime.{region}.amazonaws.com/openai/v1.openai.gpt-5.6-* id and has no CRIS;
bedrock-runtime takes ONLY a CRIS inference-profile id (us. / in. / global. prefixed) and has no
in-region form. bedrock:ListInferenceProfiles returns the 5.6 CRIS profiles; it never returns the bare mantle
ids, and it returns nothing for GPT-5.5 / GPT-5.4.Responses, Chat Completions, Invoke, and
Converse as supported APIs, with runtime-side feature splits: Guardrails are Converse-only; prompt caching is
Responses-only on runtime; server-side tool use, structured outputs, and application inference profiles are NOT
supported on runtime (server-side tool calling IS supported on mantle). For GPT-5.5 / GPT-5.4 treat Responses on
mantle as the only verified surface.Requires the OpenAI SDK at >= 2.45.0. Preferred client auto-refreshes a short-term Bedrock token:
from aws_bedrock_token_generator import provide_token
from openai import BedrockOpenAI
region = "us-east-1"
client = BedrockOpenAI(
aws_region=region,
bedrock_token_provider=lambda: provide_token(region=region),
max_retries=6,
)
response = client.responses.create(
model="openai.gpt-5.6-terra",
input="...",
reasoning={"effort": "medium"},
)The alternative — OpenAI(base_url=".../openai/v1", api_key=os.environ["AWS_BEARER_TOKEN_BEDROCK"]) — uses a key
that expires within 12 hours and is not refreshed. Do not recommend it for production.
IAM: on the mantle path, the managed policy AmazonBedrockMantleInferenceAccess grants what inference needs,
including bedrock-mantle:CreateInference and bedrock-mantle:CallWithBearerToken — bedrock:InvokeModel does not
authorize mantle calls. On the GPT-5.6 bedrock-runtime path the usual bedrock:InvokeModel* against the CRIS
inference-profile ARN applies, as for any other runtime model.
Reasoning effort: all five accept none, low, medium, high, xhigh, max. Because these models reason
before responding, the model’s output items (which may include reasoning items) must be passed back in the next
request for multi-turn and tool-calling flows.
The mantle in-region matrix (the only reach for GPT-5.5 / GPT-5.4, and the in-region option for GPT-5.6):
| Model | us-east-1 | us-east-2 | us-west-2 | us-gov-west-1 | us-gov-east-1 |
|---|---|---|---|---|---|
| GPT-5.6 Sol | yes | yes | — | — | — |
| GPT-5.6 Terra | yes | yes | yes | yes | yes |
| GPT-5.6 Luna | yes | yes | yes | yes | yes |
| GPT-5.5 | yes | yes | — | — | — |
| GPT-5.4 | yes | yes | yes | yes | — |
Terra and Luna reached AWS GovCloud (US-West, US-East) in August 2026 — newer than the rest of this matrix.
GPT-5.6 additionally reaches most commercial regions via bedrock-runtime CRIS (Geo us. / in., Global
global. inference profiles; the Sol card’s runtime footprint spans 30+ regions). So a region outside the mantle
matrix does NOT make the same-model path unavailable for GPT-5.6 — it means using the runtime endpoint with a CRIS
id, with the data-residency implications of cross-region routing. For GPT-5.5 / GPT-5.4 the mantle matrix is a hard
gate: no CRIS, no fallback.
Verify current footprints per model card / aws___get_regional_availability (AWS MCP Server) — the CRIS lists move faster than this file.
Read off the model cards, 2026-08-31. All rates per 1M tokens, Standard tier (Priority and Flex are NOT supported for these models). Sol rates reflect the Aug 21, 2026 reduction (−20% input / −33% output vs launch rates), which the AWS What’s New announcement lists as promotional through at least Nov 21, 2026. Pricing now has an inference-option dimension:
So the honest cost statement is conditional, not flat: a same-model GPT-5.6 move on Global CRIS is cost-neutral; the same move in-region or Geo (and any GPT-5.5 / GPT-5.4 move) is ~10% more expensive. Never state either number without stating the inference option it belongs to.
| Model | In-Region / Geo (in · out) | Global CRIS (in · out) | Cache write / read (In-Region) |
|---|---|---|---|
| Sol | 4.40 · 22.00 | 4.00 · 20.00 | 5.50 / 0.44 |
| Terra | 2.20 · 13.20 | 2.00 · 12.00 | 2.75 / 0.22 |
| Luna | 0.22 · 1.32 | 0.20 · 1.20 | 0.275 / 0.022 |
| Model | In-Region / Geo (in · out) | Global CRIS (in · out) |
|---|---|---|
| Sol | 8.80 · 33.00 | 8.00 · 30.00 |
| Terra | 4.40 · 19.80 | 4.00 · 18.00 |
| Luna | 0.44 · 1.98 | 0.40 · 1.80 |
A workload above 272K context must be priced at the long-context tier.
| Model | In-Region (in · out) | Cache read | Notes |
|---|---|---|---|
| GPT-5.5 | 5.50 · 33.00 | 0.55 | no cache-write rate published |
| GPT-5.4 | 2.75 · 16.50 | 0.275 | GovCloud (US-West): 3.30 · 19.80 |
The Luna “blog discrepancy” resolved differently than first recorded. The AWS News Blog’s 0.20 / 1.20 is not an error — it is the Global CRIS rate, now published on the Luna card. An earlier revision of this file said global pricing was unpublished and treated the blog figure as wrong; both statements are corrected here. Separately, the AWS Price List API still carries no GPT-5.x rows (checked 2026-08-04): a missing or empty price-list result must not be read as “model unavailable.”
Listed as a supported feature on the Sol, Terra, and Luna model cards. The GPT-5.5 and GPT-5.4 cards list client-side tool calling in that slot instead and do not list prompt caching. Do not assume caching on 5.5/5.4.
| Property | Value |
|---|---|
| Cached input read | 90% discount vs uncached input |
| Cache write | 1.25x the uncached input rate |
| Minimum prefix | 1,024 tokens (below this nothing caches, cached_tokens= 0) |
| Breakpoints | up to 4 per request |
| Retention | at least 30 minutes |
| Modes | implicit (on by default) and explicit (cache breakpoints) |
Explicit mode uses prompt_cache_options={"mode": "explicit"} plus a prompt_cache_breakpoint on the content block
ending the reusable prefix; a stable prompt_cache_key improves match reliability. Cached input tokens do not
count against the input-TPM quota, which compounds the benefit at scale.
Inference on bedrock-mantle is governed by two per-model, per-region quotas: input tokens per minute and output
tokens per minute. There is no requests-per-minute quota. Exceeding a TPM quota returns HTTP 429.
This corrects two claims that were previously applied to all Mantle traffic in this plugin:
bedrock-runtime“ is not a throughput remedy for GPT-5.5 / GPT-5.4 — they have no
bedrock-runtime path at all. For GPT-5.6 the runtime path DOES exist (CRIS only; see Access Paths above), so
moving there is a legitimate option — but treat it as an endpoint/architecture choice with its own quota family
and residency implications, not a free throughput escape hatch.The supported mitigations are: exponential backoff with a bounded retry count (max_retries on the OpenAI SDK),
spreading load across minutes rather than bursting, ramping request rate gradually, and prompt caching (cached input
is exempt from the input-TPM quota). For sustained volume beyond that, pursue a quota increase.
The model cards now state tier support in text: pricing shown is Standard, and Priority and Flex are not supported for these models. Do not recommend Flex as a cost lever for any GPT model here; Reserved is account-level via the AWS account team.
These are the remaining legitimate reasons to keep a workload on OpenAI’s own API. Cost is no longer one of them.
| OpenAI capability | Status on Bedrock |
|---|---|
| Realtime API | No equivalent |
| Image generation (gpt-image) | Not an OpenAI model on Bedrock; use Stability AI (see lifecycle) |
| Whisper (STT) / TTS | Amazon Transcribe / Polly — different service, API, pricing model |
Embeddings (text-embedding-3-*) | No OpenAI embedding model on Bedrock; use Titan Embeddings v2 |
| Assistants API with file search, vector stores, code interpreter | No direct equivalent — see the decision tree in the mapping guide |
A model not in the catalog above (GPT-4o, o-series, *-Pro, GPT-5/5.1/5.2) | No same-model target; cross-family or upgrade required |
Data handling: these are third-party models under OpenAI terms. Classifier-flagged traffic is retained up to 30 days for automated abuse detection; retained inputs/outputs are stored and processed by AWS and not shared with OpenAI unless the customer opts in. Prompts and completions are not used to train models. Calls run under the customer’s IAM policies, inside their VPC, logged to CloudTrail, and in-region inference keeps data in-region.
Codex on Bedrock is GA with pay-per-token pricing, inference through Bedrock, and usage counting toward AWS commitments — relevant when the source workload is a coding agent.
This model family is moving fast (two GA waves and a repricing inside 10 weeks). On each refresh:
estimate-ai.md price these models from the MCP.bedrock-runtime support have been added or clarified.ai-model-lifecycle.md and any rate change into pricing-cache.md.bedrock-runtime/CRIS path, published Global CRIS pricing
at standard-price parity, and listed Chat Completions/Converse as supported — invalidating three of this file's
then-central claims in under two weeks. This family moves faster than a normal refresh cadence.