API compatível com OpenAI do Amazon Bedrock: URL base, autenticação, modelos e código (2026)
Sim. O Amazon Bedrock tem uma API compatível com OpenAI. Aponte o SDK da OpenAI para https://bedrock-runtime.{region}.amazonaws.com/openai/v1, autentique-se com uma chave de API do Bedrock (ou AWS SigV4) e informe um ID de modelo do Bedrock, como openai.gpt-oss-120b-1:0. Dessa forma, o Bedrock atende tanto a API Chat Completions quanto a API Responses. A AWS recomenda o endpoint bedrock-runtime para novas aplicações e mantém o bedrock-mantle como opção de compatibilidade. Um detalhe: o bedrock-runtime não implementa GET /models. Todas as informações vêm da documentação oficial de Chat Completions do Bedrock, conferida em 20 de outubro de 2026.
Este guia cobre os dois endpoints, os dois tipos de chave de API, IDs de modelo, código em curl, Python e Node, Guardrails, preços, os erros que você vai encontrar e quando o Bedrock é mais adequado do que um gateway multiprovedor.
Referência rápida
| Item | Valor (em 20 de outubro de 2026) |
|---|---|
| URL base recomendada | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
| URL base de compatibilidade | https://bedrock-mantle.{region}.api.aws/v1 (alguns modelos usam /openai/v1) |
| APIs da OpenAI compatíveis | Chat Completions, Responses (por modelo) e também a API Messages da Anthropic |
| Autenticação | Chave de API do Bedrock como Authorization: Bearer …, ou AWS SigV4 |
| Exemplos de IDs de modelo | openai.gpt-oss-120b-1:0, openai.gpt-oss-20b-1:0, global.openai.gpt-5.6-sol |
Listar modelos via /models |
Somente no bedrock-mantle. No bedrock-runtime, use ListFoundationModels |
| Escopo regional | Chaves e endpoints são regionais |
Fontes: API Chat Completions, Endpoints de inferência, Início rápido.
bedrock-runtime vs bedrock-mantle: qual endpoint usar
Segundo a AWS, os dois endpoints "usam o mesmo mecanismo de inferência Mantle subjacente". O nome identifica uma superfície de endpoint, não um mecanismo diferente. A diferença está nos recursos:
bedrock-runtime (recomendado) |
bedrock-mantle (compatibilidade) |
|
|---|---|---|
| URL base | bedrock-runtime.{region}.amazonaws.com/openai/v1 |
bedrock-mantle.{region}.api.aws/v1 |
| APIs | InvokeModel, Converse, Chat Completions, Responses, Messages | Chat Completions, Responses, Messages |
GET /models |
Não implementado (404 UnknownOperationException) |
Compatível |
| Guardrails, roteamento inteligente de prompts, inferência entre regiões | Sim | Confira o card do modelo |
| Ferramentas no servidor (por exemplo, busca na web), inferência em segundo plano, Projects, Workspaces | Não | Sim |
| Cotas | Cotas por modelo para este endpoint | Cotas por modelo separadas |
Regra prática da AWS: comece pelo bedrock-runtime. Mude para o bedrock-mantle só se um modelo ou recurso de que você precisa estiver disponível apenas lá. No bedrock-mantle, o prefixo do caminho varia conforme o modelo. Uma requisição com o prefixo errado falha com "model … isn't supported on this route", então confira a tabela Programmatic Access no card do modelo.
Autenticação: chaves de API do Bedrock vs SigV4
As chaves de API do Bedrock permitem que o SDK da OpenAI se autentique com um token bearer em vez de assinar as requisições com credenciais da AWS (documentação de chaves de API, 20 de outubro de 2026):
| Tipo de chave | Validade | Vinculada a | Recomendação da AWS |
|---|---|---|---|
| Curta duração | Até 12 horas (ou a duração da sessão) | Permissões da entidade IAM que a gerou | Produção |
| Longa duração | Até a expiração configurada | Um usuário IAM dedicado com políticas anexadas | Apenas para testes |
Dicas práticas:
- Gere chaves de curta duração no código com
pip install aws-bedrock-token-generator(Python) ounpm install @aws/bedrock-token-generator(Node) e chame o provedor antes de cada requisição. Ele retorna um token em cache enquanto esse token ainda for válido. - Chaves de longa duração só funcionam na região onde foram criadas. Uma chamada para outra região falha com
Credential should be scoped to a valid region. - Restrinja o uso das chaves com as ações IAM
bedrock:CallWithBearerTokenebedrock-mantle:CallWithBearerToken. - As chamadas de API são registradas no CloudTrail. As chaves em si não são registradas.
- Com boto3, a variável
AWS_BEARER_TOKEN_BEDROCKexige boto3 1.39.0 ou posterior (Início rápido).
Código: chamar o Bedrock com o SDK da OpenAI
curl (chave de API)
export OPENAI_API_KEY="<bedrock-api-key>"
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"model": "openai.gpt-oss-120b-1:0",
"messages": [{"role": "user", "content": "Hello from Bedrock"}]}'
curl (SigV4, sem chave de API)
curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
--aws-sigv4 "aws:amz:us-east-1:bedrock" \
--user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
-d '{"model": "openai.gpt-oss-120b-1:0", "messages": [{"role": "user", "content": "Hello"}]}'
Python com renovação automática de chaves de curta duração
from aws_bedrock_token_generator import provide_token # pip install aws-bedrock-token-generator openai
from openai import OpenAI
REGION = "us-east-1"
def bedrock_client() -> OpenAI:
# provide_token() returns a cached token or mints a fresh short-term key (<= 12h)
return OpenAI(base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
api_key=provide_token())
r = bedrock_client().chat.completions.create(
model="openai.gpt-oss-120b-1:0",
messages=[{"role": "user", "content": "Explain Bedrock API keys in one sentence."}],
)
print(r.choices[0].message.content, r.usage)
Node.js
import OpenAI from "openai";
import { getTokenProvider } from "@aws/bedrock-token-generator";
const provideToken = getTokenProvider();
const client = new OpenAI({
baseURL: "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1",
apiKey: await provideToken(),
});
const r = await client.chat.completions.create({
model: "openai.gpt-oss-20b-1:0",
messages: [{ role: "user", content: "Name two Bedrock endpoints." }],
});
console.log(r.choices[0].message.content);
Listar modelos
client.models.list() retorna 404 no bedrock-runtime. Use aws bedrock list-foundation-models --region us-east-1 ou aponte o SDK para o bedrock-mantle para listar os modelos:
curl -s "https://bedrock-mantle.us-east-1.api.aws/v1/models" -H "Authorization: Bearer $OPENAI_API_KEY"
Adicionar um Guardrail do Bedrock a uma requisição no estilo OpenAI
Os Guardrails são enviados como cabeçalhos extras. Um campo opcional no corpo ativa a marcação da entrada:
r = bedrock_client().chat.completions.create(
model="openai.gpt-oss-20b-1:0",
messages=[{"role": "user", "content": "What is the weather like today?"}],
extra_headers={
"X-Amzn-Bedrock-GuardrailIdentifier": "GR12345",
"X-Amzn-Bedrock-GuardrailVersion": "DRAFT",
"X-Amzn-Bedrock-Trace": "ENABLED",
},
extra_body={"amazon-bedrock-guardrailConfig": {"tagSuffix": "xyz"}},
)
Os nomes dos cabeçalhos vêm do exemplo oficial de guardrail.
Quais modelos funcionam com a API compatível com OpenAI?
O suporte varia por modelo e por endpoint, então confira cada card de modelo (tabela de compatibilidade de APIs). Exemplos da documentação da AWS em 20 de outubro de 2026:
| Modelo | Chat Completions no runtime | Responses no runtime | Observações |
|---|---|---|---|
openai.gpt-oss-120b-1:0 / -20b-1:0 |
Sim | Não (Responses só no mantle) | GPT OSS de pesos abertos |
global.openai.gpt-5.6-sol |
Sim | Sim | Aparece no início rápido da AWS, perfil de inferência global |
| Família GPT-6, GPT-5.x | Conforme o card do modelo | Conforme o card do modelo | Listados na seção OpenAI da tabela de compatibilidade |
| Anthropic Claude | Use a API Messages (/anthropic) |
n/a | ANTHROPIC_BASE_URL=https://bedrock-runtime.{region}.amazonaws.com/anthropic |
Preços do Bedrock para chamadas compatíveis com OpenAI
Você paga a tarifa normal por token do Bedrock para o modelo. A interface compatível com OpenAI não tem acréscimo. Exemplos da página de preços do Bedrock, 20 de outubro de 2026, por 1 milhão de tokens:
| Modelo | Região | Entrada | Saída |
|---|---|---|---|
| gpt-oss-20b | Ásia-Pacífico (Sydney) | $0.0721 | $0.3090 |
| gpt-oss-120b | Ásia-Pacífico (Sydney) | $0.1545 | $0.6180 |
| GPT OSS Safeguard 20B | EUA Leste/Oeste | $0.07 | $0.20 |
| GPT OSS Safeguard 120B | EUA Leste/Oeste | $0.15 | $0.60 |
As tarifas variam por região, e o Bedrock também oferece os níveis Priority, Flex e Batch. Use o seletor de região da página de preços para ver a tarifa exata que você vai pagar.
Erros comuns e como corrigir
| Erro | Causa | Correção |
|---|---|---|
404 UnknownOperationException em /models |
O bedrock-runtime não implementa a API Models |
Use ListFoundationModels ou chame /models no bedrock-mantle |
model … isn't supported on this route |
Prefixo de caminho errado no bedrock-mantle |
Confira no card do modelo se é /v1 ou /openai/v1 |
Credential should be scoped to a valid region |
Chave de longa duração usada fora da sua região | Gere uma chave na região de destino |
Unable to locate credentials |
boto3 anterior à 1.39.0 ignora AWS_BEARER_TOKEN_BEDROCK |
pip install --upgrade boto3 |
| API Responses não suportada para GPT OSS | O GPT OSS só suporta Responses no bedrock-mantle |
Use Chat Completions ou troque de endpoint |
AccessDenied |
Falta acesso ao modelo ou CallWithBearerToken foi negado |
Ative o acesso ao modelo e revise as políticas IAM |
Bedrock vs OpenAI direto vs gateway multiprovedor
| Necessidade | Bedrock compatível com OpenAI | API direta do provedor | Gateway multiprovedor (ex.: Flatkey) |
|---|---|---|---|
| Ficar dentro de uma conta AWS, com IAM e CloudTrail | Melhor opção | Não | Não |
| Usar créditos da AWS ou compromissos do Enterprise Discount Program (EDP) | Sim | Não | Não |
| Guardrails e controles próximos à VPC | Sim | Depende do provedor | Depende do gateway |
| O modelo mais novo no dia do lançamento | Depende do modelo | Geralmente primeiro | Varia |
| Uma chave para OpenAI, Anthropic, Google, Alibaba, DeepSeek, Moonshot e Zhipu | Só modelos hospedados no Bedrock | Não | Sim |
| Gerenciamento regional de chaves | Obrigatório | Não | Não |
Se você está totalmente na AWS, a API compatível com OpenAI do Bedrock é a opção mais limpa. Se também precisa de modelos que o Bedrock não hospeda, mantenha o mesmo código do SDK da OpenAI e troque a URL base. Com o Flatkey, uma única chave em https://router.flatkey.ai/v1 dá acesso a GPT, Claude, Gemini, Qwen, DeepSeek, Kimi e GLM:
import os
from openai import OpenAI
ROUTES = {
"bedrock": OpenAI(base_url="https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1",
api_key=os.environ["AWS_BEARER_TOKEN_BEDROCK"]),
"flatkey": OpenAI(base_url="https://router.flatkey.ai/v1",
api_key=os.environ["FLATKEY_API_KEY"]),
}
def ask(route, model, prompt):
r = ROUTES[route].chat.completions.create(model=model, messages=[{"role": "user", "content": prompt}])
return r.choices[0].message.content
print(ask("bedrock", "openai.gpt-oss-120b-1:0", "hi"))
print(ask("flatkey", "qwen3.8-max", "hi")) # same SDK, different provider
print(ask("flatkey", "claude-sonnet-5-5", "hi"))
Em 20 de outubro de 2026, a página do gpt-6-sol no Flatkey mostra $1.20 de entrada e $6.00 de saída por 1 milhão de tokens, um preço promocional em relação ao preço de tabela de $2 / $10. Compare com a sua tarifa do Bedrock para o mesmo modelo. Mais contexto: URLs base de APIs compatíveis com OpenAI, contas diretas com provedores vs gateway de API de IA e checklist de gateway de API de IA corporativo.
Checklist de migração: de um app OpenAI para o Bedrock
- Escolha a região e confirme o acesso ao modelo no console do Bedrock.
- Substitua
OPENAI_BASE_URLporhttps://bedrock-runtime.{region}.amazonaws.com/openai/v1. - Substitua a chave por um provedor de chaves de API do Bedrock de curta duração. Não leve chaves de longa duração para produção.
- Mapeie os nomes dos modelos para IDs do Bedrock, como
gpt-oss-120b→openai.gpt-oss-120b-1:0. - Remova as chamadas a
client.models.list()ou mova-as para obedrock-mantle. - Teste streaming, chamadas de ferramentas e saída estruturada conforme o card de cada modelo.
- Adicione os cabeçalhos de guardrail onde a política exigir.
- Verifique as cotas do endpoint escolhido (tratamento de limites de taxa).
- Acompanhe os gastos por modelo e por equipe (atribuição de custos).
Perguntas frequentes
O Amazon Bedrock suporta a API da OpenAI?
Sim. O Bedrock implementa as APIs Chat Completions e Responses da OpenAI em https://bedrock-runtime.{region}.amazonaws.com/openai/v1, então o código existente do SDK da OpenAI funciona trocando a URL base, a chave de API e o ID do modelo.
Qual é a URL base compatível com OpenAI do Bedrock?
A URL recomendada é https://bedrock-runtime.{region}.amazonaws.com/openai/v1, por exemplo https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1. O endpoint de compatibilidade é https://bedrock-mantle.{region}.api.aws/v1.
Como autenticar o SDK da OpenAI no Bedrock?
Use uma chave de API do Amazon Bedrock como api_key, enviada como Authorization: Bearer. A AWS recomenda chaves de curta duração (até 12 horas) em produção. A assinatura SigV4 também funciona no bedrock-runtime.
Por que models.list() falha no Bedrock?
O endpoint bedrock-runtime não implementa a operação GET /models da OpenAI e retorna 404 UnknownOperationException. Use ListFoundationModels ou chame /models no bedrock-mantle.
Posso usar o GPT OSS com a API Responses no Bedrock?
Não no bedrock-runtime. Lá, o GPT OSS suporta Chat Completions, e a API Responses para GPT OSS está disponível apenas no bedrock-mantle.
Há cobrança extra pelo endpoint compatível com OpenAI?
A AWS não lista nenhuma taxa separada pela interface. Você paga o preço padrão por token do Bedrock para o modelo, de acordo com a sua região e nível.
Conclusão
Para usar o SDK da OpenAI na AWS, defina a URL base como bedrock-runtime.{region}.amazonaws.com/openai/v1, use chaves de API do Bedrock de curta duração, mapeie seus IDs de modelo e remova models.list(). Se o seu stack também precisa de modelos fora do Bedrock, o mesmo padrão do SDK funciona com uma única chave pelo roteador do Flatkey.
Última atualização: 20 de outubro de 2026 · Flatkey Team. As informações foram extraídas da documentação oficial da AWS indicada no texto.


