API Kompatibel OpenAI di Amazon Bedrock: Base URL, Autentikasi, Model, dan Kode (2026)
Ya. Amazon Bedrock memiliki API yang kompatibel dengan OpenAI. Arahkan OpenAI SDK ke https://bedrock-runtime.{region}.amazonaws.com/openai/v1, lakukan autentikasi dengan API key Bedrock (atau AWS SigV4), lalu gunakan ID model Bedrock seperti openai.gpt-oss-120b-1:0. Dengan cara ini Bedrock melayani Chat Completions API maupun Responses API. AWS merekomendasikan endpoint bedrock-runtime untuk aplikasi baru dan mempertahankan bedrock-mantle sebagai opsi kompatibilitas. Satu catatan: bedrock-runtime tidak mengimplementasikan GET /models. Semua informasi berasal dari dokumentasi resmi Chat Completions Bedrock, diperiksa pada 20 Oktober 2026.
Panduan ini membahas kedua endpoint, dua jenis API key, ID model, kode curl, Python, dan Node, Guardrails, harga, error yang akan Anda temui, serta kapan Bedrock lebih cocok daripada gateway multi-penyedia.
Referensi cepat
| Item | Nilai (per 20 Oktober 2026) |
|---|---|
| Base URL yang direkomendasikan | https://bedrock-runtime.{region}.amazonaws.com/openai/v1 |
| Base URL kompatibilitas | https://bedrock-mantle.{region}.api.aws/v1 (beberapa model memakai /openai/v1) |
| API OpenAI yang didukung | Chat Completions, Responses (tergantung model), plus Anthropic Messages API |
| Autentikasi | API key Bedrock sebagai Authorization: Bearer …, atau AWS SigV4 |
| Contoh ID model | openai.gpt-oss-120b-1:0, openai.gpt-oss-20b-1:0, global.openai.gpt-5.6-sol |
Menampilkan model lewat /models |
Hanya di bedrock-mantle. Di bedrock-runtime, gunakan ListFoundationModels |
| Cakupan region | Key dan endpoint bersifat per region |
Sumber: Chat Completions API, Endpoint inferensi, Mulai cepat.
bedrock-runtime vs bedrock-mantle: endpoint mana yang dipakai
Menurut AWS, kedua endpoint "menggunakan mesin inferensi Mantle yang sama". Namanya menunjukkan permukaan endpoint, bukan mesin yang berbeda. Perbedaannya ada pada fitur:
bedrock-runtime (direkomendasikan) |
bedrock-mantle (kompatibilitas) |
|
|---|---|---|
| Base URL | 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 |
Tidak diimplementasikan (404 UnknownOperationException) |
Didukung |
| Guardrails, perutean prompt cerdas, inferensi lintas region | Ya | Lihat kartu model |
| Tool sisi server (misalnya pencarian web), inferensi latar belakang, Projects, Workspaces | Tidak | Ya |
| Kuota | Kuota per model untuk endpoint ini | Kuota per model terpisah |
Patokan dari AWS: mulailah dengan bedrock-runtime. Pindah ke bedrock-mantle hanya jika model atau fitur yang Anda butuhkan hanya tersedia di sana. Di bedrock-mantle, prefiks path berbeda-beda per model. Permintaan dengan prefiks yang salah gagal dengan pesan "model … isn't supported on this route", jadi periksa tabel Programmatic Access di kartu model.
Autentikasi: API key Bedrock vs SigV4
API key Bedrock memungkinkan OpenAI SDK melakukan autentikasi dengan bearer token, bukan menandatangani permintaan dengan kredensial AWS (dokumentasi API key, 20 Oktober 2026):
| Jenis key | Masa berlaku | Didukung oleh | Rekomendasi AWS |
|---|---|---|---|
| Jangka pendek | Hingga 12 jam (atau sepanjang sesi) | Izin principal IAM yang membuatnya | Produksi |
| Jangka panjang | Hingga tanggal kedaluwarsa yang diatur | Pengguna IAM khusus dengan kebijakan terlampir | Hanya untuk eksplorasi |
Catatan praktis:
- Buat key jangka pendek di kode dengan
pip install aws-bedrock-token-generator(Python) ataunpm install @aws/bedrock-token-generator(Node), lalu panggil provider sebelum setiap permintaan. Provider mengembalikan token dari cache selama token tersebut masih berlaku. - Key jangka panjang hanya berfungsi di region tempat key dibuat. Panggilan lintas region gagal dengan
Credential should be scoped to a valid region. - Batasi penggunaan key dengan aksi IAM
bedrock:CallWithBearerTokendanbedrock-mantle:CallWithBearerToken. - Panggilan API dicatat di CloudTrail. Key-nya sendiri tidak dicatat.
- Dengan boto3, variabel
AWS_BEARER_TOKEN_BEDROCKmemerlukan boto3 1.39.0 atau lebih baru (Mulai cepat).
Kode: memanggil Bedrock dengan OpenAI SDK
curl (API key)
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, tanpa API key)
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 dengan key jangka pendek yang diperbarui otomatis
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);
Menampilkan daftar model
client.models.list() mengembalikan 404 di bedrock-runtime. Jalankan aws bedrock list-foundation-models --region us-east-1, atau arahkan SDK ke bedrock-mantle untuk menampilkan daftar model:
curl -s "https://bedrock-mantle.us-east-1.api.aws/v1/models" -H "Authorization: Bearer $OPENAI_API_KEY"
Menambahkan Bedrock Guardrail ke permintaan bergaya OpenAI
Guardrails dikirim sebagai header tambahan. Field opsional di body mengaktifkan penandaan input:
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"}},
)
Nama header diambil dari contoh guardrail resmi.
Model apa saja yang bisa dipakai dengan API kompatibel OpenAI?
Dukungan API berbeda per model dan per endpoint, jadi periksa setiap kartu model (tabel kompatibilitas API). Contoh dari dokumentasi AWS per 20 Oktober 2026:
| Model | Chat Completions di runtime | Responses di runtime | Catatan |
|---|---|---|---|
openai.gpt-oss-120b-1:0 / -20b-1:0 |
Ya | Tidak (Responses hanya di mantle) | GPT OSS open-weight |
global.openai.gpt-5.6-sol |
Ya | Ya | Ditampilkan di panduan mulai cepat AWS, profil inferensi global |
| Keluarga GPT-6, GPT-5.x | Sesuai kartu model | Sesuai kartu model | Tercantum di bagian OpenAI pada tabel kompatibilitas |
| Anthropic Claude | Gunakan Messages API (/anthropic) |
n/a | ANTHROPIC_BASE_URL=https://bedrock-runtime.{region}.amazonaws.com/anthropic |
Harga Bedrock untuk panggilan kompatibel OpenAI
Anda membayar tarif per token Bedrock yang biasa untuk model tersebut. Antarmuka kompatibel OpenAI tidak dikenai biaya tambahan. Contoh dari halaman harga Bedrock, 20 Oktober 2026, per 1 juta token:
| Model | Region | Input | Output |
|---|---|---|---|
| gpt-oss-20b | Asia Pasifik (Sydney) | $0.0721 | $0.3090 |
| gpt-oss-120b | Asia Pasifik (Sydney) | $0.1545 | $0.6180 |
| GPT OSS Safeguard 20B | AS Timur/Barat | $0.07 | $0.20 |
| GPT OSS Safeguard 120B | AS Timur/Barat | $0.15 | $0.60 |
Tarif berbeda per region, dan Bedrock juga menyediakan tier Priority, Flex, dan Batch. Gunakan pemilih region di halaman harga untuk melihat tarif persis yang akan Anda bayar.
Error umum dan solusinya
| Error | Penyebab | Solusi |
|---|---|---|
404 UnknownOperationException di /models |
bedrock-runtime tidak mengimplementasikan Models API |
Gunakan ListFoundationModels, atau panggil /models di bedrock-mantle |
model … isn't supported on this route |
Prefiks path salah di bedrock-mantle |
Periksa kartu model: /v1 atau /openai/v1 |
Credential should be scoped to a valid region |
Key jangka panjang dipakai di luar region-nya | Buat key di region tujuan |
Unable to locate credentials |
boto3 versi di bawah 1.39.0 mengabaikan AWS_BEARER_TOKEN_BEDROCK |
pip install --upgrade boto3 |
| Responses API tidak didukung untuk GPT OSS | GPT OSS hanya mendukung Responses di bedrock-mantle |
Gunakan Chat Completions atau ganti endpoint |
AccessDenied |
Akses model belum aktif atau CallWithBearerToken ditolak |
Aktifkan akses model dan tinjau kebijakan IAM |
Bedrock vs OpenAI langsung vs gateway multi-penyedia
| Kebutuhan | Bedrock kompatibel OpenAI | API penyedia langsung | Gateway multi-penyedia (mis. Flatkey) |
|---|---|---|---|
| Tetap di dalam akun AWS, dengan IAM dan CloudTrail | Terbaik | Tidak | Tidak |
| Memakai kredit AWS atau komitmen Enterprise Discount Program (EDP) | Ya | Tidak | Tidak |
| Guardrails dan kontrol dekat VPC | Ya | Tergantung penyedia | Tergantung gateway |
| Model terbaru pada hari peluncuran | Tergantung model | Biasanya paling cepat | Bervariasi |
| Satu key untuk OpenAI, Anthropic, Google, Alibaba, DeepSeek, Moonshot, Zhipu | Hanya model yang di-host Bedrock | Tidak | Ya |
| Pengelolaan key per region | Wajib | Tidak | Tidak |
Jika Anda sepenuhnya menggunakan AWS, API kompatibel OpenAI dari Bedrock adalah pilihan paling rapi. Jika Anda juga butuh model yang tidak di-host Bedrock, pertahankan kode OpenAI SDK yang sama dan cukup ganti base URL. Dengan Flatkey, satu key di https://router.flatkey.ai/v1 menjangkau GPT, Claude, Gemini, Qwen, DeepSeek, Kimi, dan 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"))
Per 20 Oktober 2026, halaman gpt-6-sol di Flatkey mencantumkan $1.20 input dan $6.00 output per 1 juta token, harga promo dibandingkan harga resmi $2 / $10. Bandingkan dengan tarif Bedrock Anda untuk model yang sama. Bacaan lanjutan: base URL API kompatibel OpenAI, akun penyedia langsung vs AI API gateway, dan checklist AI API gateway untuk enterprise.
Checklist migrasi: dari aplikasi OpenAI ke Bedrock
- Pilih region dan pastikan akses model di konsol Bedrock.
- Ganti
OPENAI_BASE_URLdenganhttps://bedrock-runtime.{region}.amazonaws.com/openai/v1. - Ganti key dengan provider API key Bedrock jangka pendek. Jangan pakai key jangka panjang di produksi.
- Petakan nama model ke ID Bedrock, misalnya
gpt-oss-120b→openai.gpt-oss-120b-1:0. - Hapus panggilan
client.models.list(), atau pindahkan kebedrock-mantle. - Uji streaming, pemanggilan tool, dan output terstruktur sesuai kartu tiap model.
- Tambahkan header guardrail di tempat yang diwajibkan kebijakan.
- Periksa kuota endpoint yang Anda pilih (penanganan rate limit).
- Pantau pengeluaran per model dan per tim (atribusi biaya).
FAQ
Apakah Amazon Bedrock mendukung API OpenAI?
Ya. Bedrock mengimplementasikan OpenAI Chat Completions dan Responses API di https://bedrock-runtime.{region}.amazonaws.com/openai/v1, sehingga kode OpenAI SDK yang sudah ada tetap berjalan cukup dengan mengganti base URL, API key, dan ID model.
Apa base URL kompatibel OpenAI dari Bedrock?
URL yang direkomendasikan adalah https://bedrock-runtime.{region}.amazonaws.com/openai/v1, misalnya https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1. Endpoint kompatibilitasnya adalah https://bedrock-mantle.{region}.api.aws/v1.
Bagaimana cara mengautentikasi OpenAI SDK dengan Bedrock?
Gunakan API key Amazon Bedrock sebagai api_key, yang dikirim sebagai Authorization: Bearer. AWS merekomendasikan key jangka pendek (hingga 12 jam) untuk produksi. Penandatanganan SigV4 juga berfungsi di bedrock-runtime.
Mengapa models.list() gagal di Bedrock?
Endpoint bedrock-runtime tidak mengimplementasikan operasi OpenAI GET /models dan mengembalikan 404 UnknownOperationException. Gunakan ListFoundationModels, atau panggil /models di bedrock-mantle.
Bisakah GPT OSS dipakai dengan Responses API di Bedrock?
Tidak di bedrock-runtime. Di sana GPT OSS mendukung Chat Completions, sedangkan Responses API untuk GPT OSS hanya tersedia di bedrock-mantle.
Apakah ada biaya tambahan untuk endpoint kompatibel OpenAI?
AWS tidak mencantumkan biaya terpisah untuk antarmuka ini. Anda membayar harga token Bedrock standar untuk model tersebut sesuai region dan tier Anda.
Kesimpulan
Untuk memakai OpenAI SDK di AWS, atur base URL ke bedrock-runtime.{region}.amazonaws.com/openai/v1, gunakan API key Bedrock jangka pendek, petakan ID model Anda, dan tinggalkan models.list(). Jika stack Anda juga memerlukan model di luar Bedrock, pola SDK yang sama bekerja dengan satu key melalui router Flatkey.
Terakhir diperbarui: 20 Oktober 2026 · Flatkey Team. Informasi dikutip dari dokumentasi resmi AWS yang ditautkan di dalam artikel.


