API compatible con OpenAI de Amazon Bedrock: URL base, autenticación, modelos y código (2026)
Sí. Amazon Bedrock ofrece una API compatible con OpenAI. Apunta el SDK de OpenAI a https://bedrock-runtime.{region}.amazonaws.com/openai/v1, autentícate con una clave de API de Bedrock (o AWS SigV4) y pasa un ID de modelo de Bedrock como openai.gpt-oss-120b-1:0. Bedrock sirve así tanto la API Chat Completions como la API Responses. AWS recomienda el endpoint bedrock-runtime para aplicaciones nuevas y mantiene bedrock-mantle como opción de compatibilidad. Un detalle importante: bedrock-runtime no implementa GET /models. Todos los datos proceden de la documentación oficial de Chat Completions de Bedrock, revisada el 20 de octubre de 2026.
Esta guía cubre ambos endpoints, los dos tipos de clave de API, los IDs de modelo, código en curl, Python y Node, Guardrails, precios, los errores que te vas a encontrar y cuándo Bedrock encaja mejor que un gateway multiproveedor.
Referencia rápida
| Elemento | Valor (a 20 de octubre de 2026) |
|---|---|
| URL base recomendada | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
| URL base de compatibilidad | https://bedrock-mantle.{region}.api.aws/v1 (algunos modelos usan /openai/v1) |
| APIs de OpenAI compatibles | Chat Completions, Responses (según el modelo) y además la API Messages de Anthropic |
| Autenticación | Clave de API de Bedrock como Authorization: Bearer …, o AWS SigV4 |
| IDs de modelo de ejemplo | openai.gpt-oss-120b-1:0, openai.gpt-oss-20b-1:0, global.openai.gpt-5.6-sol |
Listar modelos con /models |
Solo en bedrock-mantle. En bedrock-runtime, usa ListFoundationModels |
| Ámbito regional | Las claves y los endpoints son regionales |
Fuentes: API Chat Completions, Endpoints de inferencia, Inicio rápido.
bedrock-runtime vs bedrock-mantle: qué endpoint usar
AWS indica que ambos endpoints "usan el mismo motor de inferencia Mantle subyacente". El nombre identifica una superficie de endpoint, no un motor distinto. Se diferencian en las funciones:
bedrock-runtime (recomendado) |
bedrock-mantle (compatibilidad) |
|
|---|---|---|
| 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 |
No implementado (404 UnknownOperationException) |
Compatible |
| Guardrails, enrutamiento inteligente de prompts, inferencia entre regiones | Sí | Consulta la ficha del modelo |
| Herramientas del lado del servidor (por ejemplo, búsqueda web), inferencia en segundo plano, Projects, Workspaces | No | Sí |
| Cuotas | Cuotas por modelo para este endpoint | Cuotas por modelo independientes |
Regla práctica de AWS: empieza con bedrock-runtime. Cambia a bedrock-mantle solo si un modelo o una función que necesitas únicamente está disponible allí. En bedrock-mantle, el prefijo de la ruta varía según el modelo. Una solicitud con el prefijo equivocado falla con "model … isn't supported on this route", así que revisa la tabla Programmatic Access de la ficha del modelo.
Autenticación: claves de API de Bedrock vs SigV4
Las claves de API de Bedrock permiten que el SDK de OpenAI se autentique con un token bearer en lugar de firmar las solicitudes con credenciales de AWS (documentación de claves de API, 20 de octubre de 2026):
| Tipo de clave | Duración | Respaldada por | Recomendación de AWS |
|---|---|---|---|
| Corta duración | Hasta 12 horas (o la duración de la sesión) | Permisos de la entidad IAM que la generó | Producción |
| Larga duración | Hasta la caducidad configurada | Un usuario IAM dedicado con políticas asociadas | Solo para pruebas |
Notas prácticas:
- Genera claves de corta duración en el código con
pip install aws-bedrock-token-generator(Python) onpm install @aws/bedrock-token-generator(Node) y llama al proveedor antes de cada solicitud. Devuelve un token en caché mientras siga siendo válido. - Las claves de larga duración solo funcionan en la región donde se crearon. Una llamada a otra región falla con
Credential should be scoped to a valid region. - Restringe el uso de las claves con las acciones IAM
bedrock:CallWithBearerTokenybedrock-mantle:CallWithBearerToken. - Las llamadas a la API quedan registradas en CloudTrail. Las claves en sí no se registran.
- Con boto3, la variable
AWS_BEARER_TOKEN_BEDROCKrequiere boto3 1.39.0 o posterior (Inicio rápido).
Código: llamar a Bedrock con el SDK de OpenAI
curl (clave 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, sin clave 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 con claves de corta duración que se renuevan solas
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() devuelve 404 en bedrock-runtime. Puedes ejecutar aws bedrock list-foundation-models --region us-east-1 o apuntar el SDK a bedrock-mantle para listar modelos:
curl -s "https://bedrock-mantle.us-east-1.api.aws/v1/models" -H "Authorization: Bearer $OPENAI_API_KEY"
Añadir un Guardrail de Bedrock a una solicitud estilo OpenAI
Los Guardrails se pasan como cabeceras adicionales. Un campo opcional en el cuerpo activa el etiquetado de la 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"}},
)
Los nombres de las cabeceras proceden del ejemplo oficial de guardrail.
¿Qué modelos funcionan con la API compatible con OpenAI?
La compatibilidad de la API varía según el modelo y según el endpoint, así que revisa cada ficha de modelo (tabla de compatibilidad de APIs). Ejemplos de la documentación de AWS a 20 de octubre de 2026:
| Modelo | Chat Completions en runtime | Responses en runtime | Notas |
|---|---|---|---|
openai.gpt-oss-120b-1:0 / -20b-1:0 |
Sí | No (Responses solo en mantle) | GPT OSS de pesos abiertos |
global.openai.gpt-5.6-sol |
Sí | Sí | Aparece en el inicio rápido de AWS, perfil de inferencia global |
| Familia GPT-6, GPT-5.x | Según la ficha del modelo | Según la ficha del modelo | Incluidos en la sección OpenAI de la tabla de compatibilidad |
| Anthropic Claude | Usa la API Messages (/anthropic) |
n/a | ANTHROPIC_BASE_URL=https://bedrock-runtime.{region}.amazonaws.com/anthropic |
Precios de Bedrock para llamadas compatibles con OpenAI
Pagas la tarifa normal por token de Bedrock para el modelo. La interfaz compatible con OpenAI no tiene recargo. Ejemplos de la página de precios de Bedrock, 20 de octubre de 2026, por cada millón de tokens:
| Modelo | Región | Entrada | Salida |
|---|---|---|---|
| gpt-oss-20b | Asia Pacífico (Sídney) | $0.0721 | $0.3090 |
| gpt-oss-120b | Asia Pacífico (Sídney) | $0.1545 | $0.6180 |
| GPT OSS Safeguard 20B | EE. UU. Este/Oeste | $0.07 | $0.20 |
| GPT OSS Safeguard 120B | EE. UU. Este/Oeste | $0.15 | $0.60 |
Las tarifas varían según la región, y Bedrock también ofrece los niveles Priority, Flex y Batch. Usa el selector de región de la página de precios para ver la tarifa exacta que pagarás.
Errores comunes y cómo solucionarlos
| Error | Causa | Solución |
|---|---|---|
404 UnknownOperationException en /models |
bedrock-runtime no implementa la API Models |
Usa ListFoundationModels o llama a /models en bedrock-mantle |
model … isn't supported on this route |
Prefijo de ruta incorrecto en bedrock-mantle |
Revisa en la ficha del modelo si es /v1 o /openai/v1 |
Credential should be scoped to a valid region |
Clave de larga duración usada fuera de su región | Genera una clave en la región de destino |
Unable to locate credentials |
boto3 anterior a 1.39.0 ignora AWS_BEARER_TOKEN_BEDROCK |
pip install --upgrade boto3 |
| La API Responses no es compatible con GPT OSS | GPT OSS solo admite Responses en bedrock-mantle |
Usa Chat Completions o cambia de endpoint |
AccessDenied |
Falta acceso al modelo o se deniega CallWithBearerToken |
Habilita el acceso al modelo y revisa las políticas IAM |
Bedrock vs OpenAI directo vs un gateway multiproveedor
| Necesidad | Bedrock compatible con OpenAI | API directa del proveedor | Gateway multiproveedor (p. ej., Flatkey) |
|---|---|---|---|
| Permanecer dentro de una cuenta de AWS, IAM y CloudTrail | La mejor opción | No | No |
| Usar créditos de AWS o compromisos del Enterprise Discount Program (EDP) | Sí | No | No |
| Guardrails y controles cercanos a la VPC | Sí | Depende del proveedor | Depende del gateway |
| El modelo más nuevo el mismo día de su lanzamiento | Depende del modelo | Normalmente primero | Varía |
| Una sola clave para OpenAI, Anthropic, Google, Alibaba, DeepSeek, Moonshot y Zhipu | Solo modelos alojados en Bedrock | No | Sí |
| Gestión regional de claves | Obligatoria | No | No |
Si todo tu stack está en AWS, la API compatible con OpenAI de Bedrock es la opción más limpia. Si también necesitas modelos que Bedrock no aloja, conserva el mismo código del SDK de OpenAI y cambia la URL base. Con Flatkey, una sola clave en https://router.flatkey.ai/v1 da acceso a GPT, Claude, Gemini, Qwen, DeepSeek, Kimi y 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"))
A 20 de octubre de 2026, la página de gpt-6-sol en Flatkey indica $1.20 de entrada y $6.00 de salida por millón de tokens, un precio promocional frente a una tarifa de lista de $2 / $10. Compáralo con tu tarifa de Bedrock para el mismo modelo. Más contexto: URLs base de APIs compatibles con OpenAI, cuentas directas con proveedores vs un gateway de API de IA y checklist de gateway de API de IA empresarial.
Checklist de migración: de una app de OpenAI a Bedrock
- Elige la región y confirma el acceso al modelo en la consola de Bedrock.
- Sustituye
OPENAI_BASE_URLporhttps://bedrock-runtime.{region}.amazonaws.com/openai/v1. - Sustituye la clave por un proveedor de claves de API de Bedrock de corta duración. No lleves claves de larga duración a producción.
- Asigna los nombres de modelo a IDs de Bedrock, por ejemplo
gpt-oss-120b→openai.gpt-oss-120b-1:0. - Elimina las llamadas a
client.models.list()o muévelas abedrock-mantle. - Prueba streaming, llamadas a herramientas y salida estructurada según la ficha de cada modelo.
- Añade las cabeceras de guardrail donde la política lo exija.
- Revisa las cuotas del endpoint elegido (gestión de límites de tasa).
- Controla el gasto por modelo y por equipo (atribución de costes).
Preguntas frecuentes
¿Amazon Bedrock es compatible con la API de OpenAI?
Sí. Bedrock implementa las APIs Chat Completions y Responses de OpenAI en https://bedrock-runtime.{region}.amazonaws.com/openai/v1, así que el código existente del SDK de OpenAI funciona cambiando la URL base, la clave de API y el ID del modelo.
¿Cuál es la URL base compatible con OpenAI de Bedrock?
La URL recomendada es https://bedrock-runtime.{region}.amazonaws.com/openai/v1, por ejemplo https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1. El endpoint de compatibilidad es https://bedrock-mantle.{region}.api.aws/v1.
¿Cómo autentico el SDK de OpenAI con Bedrock?
Usa una clave de API de Amazon Bedrock como api_key, enviada como Authorization: Bearer. AWS recomienda claves de corta duración (hasta 12 horas) en producción. La firma SigV4 también funciona en bedrock-runtime.
¿Por qué falla models.list() en Bedrock?
El endpoint bedrock-runtime no implementa la operación GET /models de OpenAI y devuelve 404 UnknownOperationException. Usa ListFoundationModels o llama a /models en bedrock-mantle.
¿Puedo usar GPT OSS con la API Responses en Bedrock?
No en bedrock-runtime. Allí GPT OSS admite Chat Completions, y la API Responses para GPT OSS solo está disponible en bedrock-mantle.
¿Hay un cargo adicional por el endpoint compatible con OpenAI?
AWS no indica ninguna tarifa aparte por la interfaz. Pagas el precio estándar por token de Bedrock para el modelo, según tu región y nivel.
Conclusión
Para usar el SDK de OpenAI en AWS, configura la URL base como bedrock-runtime.{region}.amazonaws.com/openai/v1, usa claves de API de Bedrock de corta duración, asigna tus IDs de modelo y elimina models.list(). Si tu stack también necesita modelos fuera de Bedrock, el mismo patrón del SDK funciona con una sola clave a través del router de Flatkey.
Última actualización: 20 de octubre de 2026 · Flatkey Team. Los datos se citan de la documentación oficial de AWS enlazada en el texto.


