API compatible OpenAI d'Amazon Bedrock : URL de base, authentification, modèles et code (2026)
Oui. Amazon Bedrock propose une API compatible OpenAI. Pointez le SDK OpenAI vers https://bedrock-runtime.{region}.amazonaws.com/openai/v1, authentifiez-vous avec une clé API Bedrock (ou AWS SigV4) et indiquez un ID de modèle Bedrock comme openai.gpt-oss-120b-1:0. Bedrock sert ainsi les API Chat Completions et Responses. AWS recommande le endpoint bedrock-runtime pour les nouvelles applications et conserve bedrock-mantle comme option de compatibilité. Attention : bedrock-runtime n'implémente pas GET /models. Toutes les informations proviennent de la documentation officielle Chat Completions de Bedrock, vérifiée le 20 octobre 2026.
Ce guide couvre les deux endpoints, les deux types de clés API, les ID de modèles, du code curl, Python et Node, les Guardrails, les tarifs, les erreurs que vous rencontrerez et les cas où Bedrock convient mieux qu'une passerelle multi-fournisseurs.
Référence rapide
| Élément | Valeur (au 20 octobre 2026) |
|---|---|
| URL de base recommandée | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
| URL de base de compatibilité | https://bedrock-mantle.{region}.api.aws/v1 (certains modèles utilisent /openai/v1) |
| API OpenAI prises en charge | Chat Completions, Responses (selon le modèle), ainsi que l'API Messages d'Anthropic |
| Authentification | Clé API Bedrock en Authorization: Bearer …, ou AWS SigV4 |
| Exemples d'ID de modèles | openai.gpt-oss-120b-1:0, openai.gpt-oss-20b-1:0, global.openai.gpt-5.6-sol |
Lister les modèles via /models |
Uniquement sur bedrock-mantle. Sur bedrock-runtime, utilisez ListFoundationModels |
| Portée régionale | Les clés et les endpoints sont régionaux |
Sources : API Chat Completions, Endpoints d'inférence, Démarrage rapide.
bedrock-runtime ou bedrock-mantle : quel endpoint choisir
Selon AWS, les deux endpoints « utilisent le même moteur d'inférence Mantle sous-jacent ». Le nom désigne une surface d'endpoint, pas un moteur différent. Les fonctionnalités, elles, diffèrent :
bedrock-runtime (recommandé) |
bedrock-mantle (compatibilité) |
|
|---|---|---|
| URL de base | bedrock-runtime.{region}.amazonaws.com/openai/v1 |
bedrock-mantle.{region}.api.aws/v1 |
| API | InvokeModel, Converse, Chat Completions, Responses, Messages | Chat Completions, Responses, Messages |
GET /models |
Non implémenté (404 UnknownOperationException) |
Pris en charge |
| Guardrails, routage intelligent des prompts, inférence interrégionale | Oui | Voir la fiche du modèle |
| Outils côté serveur (par exemple recherche web), inférence en arrière-plan, Projects, Workspaces | Non | Oui |
| Quotas | Quotas par modèle pour ce endpoint | Quotas par modèle distincts |
Règle empirique d'AWS : commencez par bedrock-runtime. Passez à bedrock-mantle uniquement si un modèle ou une fonctionnalité dont vous avez besoin n'existe que là. Sur bedrock-mantle, le préfixe du chemin varie selon le modèle. Une requête avec le mauvais préfixe échoue avec « model … isn't supported on this route » : vérifiez donc le tableau Programmatic Access de la fiche du modèle.
Authentification : clés API Bedrock ou SigV4
Les clés API Bedrock permettent au SDK OpenAI de s'authentifier avec un jeton bearer au lieu de signer les requêtes avec des identifiants AWS (documentation des clés API, 20 octobre 2026) :
| Type de clé | Durée de vie | Adossée à | Recommandation AWS |
|---|---|---|---|
| Courte durée | Jusqu'à 12 heures (ou la durée de la session) | Autorisations du principal IAM qui l'a générée | Production |
| Longue durée | Jusqu'à l'expiration configurée | Un utilisateur IAM dédié avec des stratégies attachées | Exploration uniquement |
Conseils pratiques :
- Générez des clés de courte durée dans le code avec
pip install aws-bedrock-token-generator(Python) ounpm install @aws/bedrock-token-generator(Node), et appelez le fournisseur avant chaque requête. Il renvoie un jeton en cache tant que celui-ci est valide. - Les clés de longue durée ne fonctionnent que dans la région où elles ont été créées. Un appel vers une autre région échoue avec
Credential should be scoped to a valid region. - Restreignez l'usage des clés avec les actions IAM
bedrock:CallWithBearerTokenetbedrock-mantle:CallWithBearerToken. - Les appels API sont journalisés dans CloudTrail. Les clés elles-mêmes ne le sont pas.
- Avec boto3, la variable
AWS_BEARER_TOKEN_BEDROCKnécessite boto3 1.39.0 ou ultérieur (Démarrage rapide).
Code : appeler Bedrock avec le SDK OpenAI
curl (clé 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, sans clé 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 avec renouvellement automatique des clés de courte durée
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);
Lister les modèles
client.models.list() renvoie une erreur 404 sur bedrock-runtime. Utilisez aws bedrock list-foundation-models --region us-east-1, ou pointez le SDK vers bedrock-mantle pour lister les modèles :
curl -s "https://bedrock-mantle.us-east-1.api.aws/v1/models" -H "Authorization: Bearer $OPENAI_API_KEY"
Ajouter un Guardrail Bedrock à une requête de style OpenAI
Les Guardrails sont transmis via des en-têtes supplémentaires. Un champ facultatif dans le corps active le balisage de l'entrée :
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"}},
)
Les noms d'en-têtes proviennent de l'exemple officiel de guardrail.
Quels modèles fonctionnent avec l'API compatible OpenAI ?
La prise en charge varie selon le modèle et selon l'endpoint : vérifiez chaque fiche de modèle (tableau de compatibilité des API). Exemples tirés de la documentation AWS au 20 octobre 2026 :
| Modèle | Chat Completions sur runtime | Responses sur runtime | Remarques |
|---|---|---|---|
openai.gpt-oss-120b-1:0 / -20b-1:0 |
Oui | Non (Responses uniquement sur mantle) | GPT OSS à poids ouverts |
global.openai.gpt-5.6-sol |
Oui | Oui | Présent dans le démarrage rapide AWS, profil d'inférence global |
| Famille GPT-6, GPT-5.x | Selon la fiche du modèle | Selon la fiche du modèle | Listés dans la section OpenAI du tableau de compatibilité |
| Anthropic Claude | Utiliser l'API Messages (/anthropic) |
n/a | ANTHROPIC_BASE_URL=https://bedrock-runtime.{region}.amazonaws.com/anthropic |
Tarifs Bedrock pour les appels compatibles OpenAI
Vous payez le tarif Bedrock habituel par token pour le modèle. L'interface compatible OpenAI n'entraîne aucun supplément. Exemples tirés de la page de tarifs Bedrock, 20 octobre 2026, par million de tokens :
| Modèle | Région | Entrée | Sortie |
|---|---|---|---|
| gpt-oss-20b | Asie-Pacifique (Sydney) | $0.0721 | $0.3090 |
| gpt-oss-120b | Asie-Pacifique (Sydney) | $0.1545 | $0.6180 |
| GPT OSS Safeguard 20B | USA Est/Ouest | $0.07 | $0.20 |
| GPT OSS Safeguard 120B | USA Est/Ouest | $0.15 | $0.60 |
Les tarifs varient selon la région, et Bedrock propose aussi les niveaux Priority, Flex et Batch. Utilisez le sélecteur de région de la page de tarifs pour connaître le tarif exact.
Erreurs courantes et solutions
| Erreur | Cause | Solution |
|---|---|---|
404 UnknownOperationException sur /models |
bedrock-runtime n'implémente pas l'API Models |
Utilisez ListFoundationModels, ou appelez /models sur bedrock-mantle |
model … isn't supported on this route |
Mauvais préfixe de chemin sur bedrock-mantle |
Vérifiez /v1 ou /openai/v1 dans la fiche du modèle |
Credential should be scoped to a valid region |
Clé de longue durée utilisée hors de sa région | Générez une clé dans la région cible |
Unable to locate credentials |
boto3 antérieur à 1.39.0 ignore AWS_BEARER_TOKEN_BEDROCK |
pip install --upgrade boto3 |
| API Responses non prise en charge pour GPT OSS | GPT OSS ne prend en charge Responses que sur bedrock-mantle |
Utilisez Chat Completions ou changez d'endpoint |
AccessDenied |
Accès au modèle manquant ou CallWithBearerToken refusé |
Activez l'accès au modèle et vérifiez les stratégies IAM |
Bedrock, OpenAI en direct ou passerelle multi-fournisseurs
| Besoin | Bedrock compatible OpenAI | API directe du fournisseur | Passerelle multi-fournisseurs (ex. Flatkey) |
|---|---|---|---|
| Rester dans un compte AWS, avec IAM et CloudTrail | Idéal | Non | Non |
| Utiliser des crédits AWS ou des engagements Enterprise Discount Program (EDP) | Oui | Non | Non |
| Guardrails et contrôles proches du VPC | Oui | Propre au fournisseur | Propre à la passerelle |
| Le modèle le plus récent dès son lancement | Selon le modèle | Généralement en premier | Variable |
| Une seule clé pour OpenAI, Anthropic, Google, Alibaba, DeepSeek, Moonshot, Zhipu | Uniquement les modèles hébergés sur Bedrock | Non | Oui |
| Gestion régionale des clés | Obligatoire | Non | Non |
Si vous êtes entièrement sur AWS, l'API compatible OpenAI de Bedrock est l'option la plus propre. Si vous avez aussi besoin de modèles que Bedrock n'héberge pas, gardez le même code SDK OpenAI et changez l'URL de base. Avec Flatkey, une seule clé sur https://router.flatkey.ai/v1 donne accès à GPT, Claude, Gemini, Qwen, DeepSeek, Kimi et 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"))
Au 20 octobre 2026, la page gpt-6-sol de Flatkey affiche $1.20 en entrée et $6.00 en sortie par million de tokens, un prix promotionnel face à un tarif catalogue de $2 / $10. Comparez-le à votre tarif Bedrock pour le même modèle. Pour aller plus loin : URL de base des API compatibles OpenAI, comptes fournisseurs directs ou passerelle d'API IA et checklist de passerelle d'API IA pour l'entreprise.
Checklist de migration : d'une app OpenAI vers Bedrock
- Choisissez la région et confirmez l'accès au modèle dans la console Bedrock.
- Remplacez
OPENAI_BASE_URLparhttps://bedrock-runtime.{region}.amazonaws.com/openai/v1. - Remplacez la clé par un fournisseur de clés API Bedrock de courte durée. Ne déployez pas de clés de longue durée en production.
- Faites correspondre les noms de modèles aux ID Bedrock, par exemple
gpt-oss-120b→openai.gpt-oss-120b-1:0. - Supprimez les appels à
client.models.list()ou déplacez-les versbedrock-mantle. - Testez le streaming, les appels d'outils et la sortie structurée selon chaque fiche de modèle.
- Ajoutez les en-têtes de guardrail là où votre politique l'exige.
- Vérifiez les quotas du endpoint choisi (gestion des limites de débit).
- Suivez les dépenses par modèle et par équipe (attribution des coûts).
FAQ
Amazon Bedrock prend-il en charge l'API OpenAI ?
Oui. Bedrock implémente les API Chat Completions et Responses d'OpenAI sur https://bedrock-runtime.{region}.amazonaws.com/openai/v1 : le code SDK OpenAI existant fonctionne en changeant l'URL de base, la clé API et l'ID du modèle.
Quelle est l'URL de base compatible OpenAI de Bedrock ?
L'URL recommandée est https://bedrock-runtime.{region}.amazonaws.com/openai/v1, par exemple https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1. Le endpoint de compatibilité est https://bedrock-mantle.{region}.api.aws/v1.
Comment authentifier le SDK OpenAI auprès de Bedrock ?
Utilisez une clé API Amazon Bedrock comme api_key, envoyée en Authorization: Bearer. AWS recommande des clés de courte durée (jusqu'à 12 heures) en production. La signature SigV4 fonctionne aussi sur bedrock-runtime.
Pourquoi models.list() échoue-t-il sur Bedrock ?
Le endpoint bedrock-runtime n'implémente pas l'opération OpenAI GET /models et renvoie 404 UnknownOperationException. Utilisez ListFoundationModels, ou appelez /models sur bedrock-mantle.
Puis-je utiliser GPT OSS avec l'API Responses sur Bedrock ?
Pas sur bedrock-runtime. GPT OSS y prend en charge Chat Completions, et l'API Responses pour GPT OSS n'est disponible que sur bedrock-mantle.
Le endpoint compatible OpenAI est-il facturé en plus ?
AWS n'indique aucun frais distinct pour l'interface. Vous payez le tarif standard par token Bedrock du modèle, selon votre région et votre niveau.
En résumé
Pour utiliser le SDK OpenAI sur AWS, définissez l'URL de base sur bedrock-runtime.{region}.amazonaws.com/openai/v1, utilisez des clés API Bedrock de courte durée, faites correspondre vos ID de modèles et supprimez models.list(). Si votre stack a aussi besoin de modèles hors de Bedrock, le même schéma SDK fonctionne avec une seule clé via le routeur Flatkey.
Dernière mise à jour : 20 octobre 2026 · Flatkey Team. Les informations sont tirées de la documentation officielle AWS citée dans le texte.


