Python SDK and CLI for BedrockRouter — use every AWS Bedrock model through a self-hosted proxy with friendly aliases and cost tracking
Project description
bedrockrouter
Official Python SDK and CLI for BedrockRouter — route requests to every AWS Bedrock model through your self-hosted proxy, with friendly model aliases, cost tracking, and streaming support.
Install
pip install bedrockrouter
Quick Start
Anthropic-compatible client
from bedrockrouter import BedrockRouter, Models
client = BedrockRouter(
api_key="sk_m11_...", # from bedrockrouter.com dashboard
base_url="https://your-proxy-url",
)
msg = client.messages.create(
model=Models.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=1024,
)
print(msg.content[0].text)
OpenAI-compatible client
from bedrockrouter import BedrockOpenAI, Models
client = BedrockOpenAI(
api_key="sk_m11_...",
base_url="https://your-proxy-url",
)
resp = client.chat.completions.create(
model=Models.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=1024,
)
print(resp.choices[0].message.content)
CLI — Model Discovery
All 100+ AWS Bedrock models are built into the package as static values (no AWS credentials needed for listing).
List all models
bedrockrouter models list
Filter by provider
bedrockrouter models list --provider anthropic
bedrockrouter models list --provider amazon
bedrockrouter models list --provider meta
bedrockrouter models list --provider mistral
bedrockrouter models list --provider cohere
bedrockrouter models list --provider minimax
bedrockrouter models list --provider moonshot
bedrockrouter models list --provider google
bedrockrouter models list --provider nvidia
bedrockrouter models list --provider openai
bedrockrouter models list --provider qwen
bedrockrouter models list --provider zai
Filter by keyword
bedrockrouter models list --filter sonnet
bedrockrouter models list --filter llama
bedrockrouter models list --filter nova
bedrockrouter models list --filter minimax
bedrockrouter models list --filter deepseek
bedrockrouter models list --filter gemma
bedrockrouter models list --filter qwen
bedrockrouter models list --filter nemotron
Show only thinking / reasoning models
bedrockrouter models list --thinking
Show only models with short aliases
bedrockrouter models list --alias-only
Search by name
bedrockrouter models find "sonnet 4.5"
bedrockrouter models find "opus thinking"
bedrockrouter models find "haiku"
bedrockrouter models find "kimi"
bedrockrouter models find "llama 70b"
bedrockrouter models find "llama 4"
bedrockrouter models find "gemma"
bedrockrouter models find "glm"
Live-fetch from AWS Bedrock (requires AWS credentials)
bedrockrouter models fetch
bedrockrouter models fetch --filter sonnet
bedrockrouter models fetch --filter minimax
bedrockrouter models fetch --region us-west-2
bedrockrouter models fetch --ids-only # one model ID per line
SDK Usage
Basic (non-streaming) — Anthropic format
from bedrockrouter import BedrockRouter, Models
client = BedrockRouter(
api_key="sk_m11_...",
base_url="https://your-proxy-url",
)
msg = client.messages.create(
model=Models.CLAUDE_SONNET_4_5,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=1024,
)
print(msg.content[0].text)
Streaming — Anthropic format
with client.messages.stream(
model=Models.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "Tell me a story"}],
max_tokens=1024,
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Basic (non-streaming) — OpenAI format
from bedrockrouter import BedrockOpenAI, Models
client = BedrockOpenAI(
api_key="sk_m11_...",
base_url="https://your-proxy-url",
)
resp = client.chat.completions.create(
model=Models.NOVA_PRO,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=1024,
)
print(resp.choices[0].message.content)
Streaming — OpenAI format
stream = client.chat.completions.create(
model="meta.llama4-maverick-17b-instruct-v1:0",
messages=[{"role": "user", "content": "Tell me a joke"}],
max_tokens=512,
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
With system prompt
msg = client.messages.create(
model=Models.CLAUDE_OPUS_4_6,
system="You are a helpful Python tutor.",
messages=[{"role": "user", "content": "Explain list comprehensions."}],
max_tokens=512,
)
Thinking / reasoning models
msg = client.messages.create(
model=Models.CLAUDE_SONNET_4_6_THINKING,
messages=[{"role": "user", "content": "Solve: 2x + 5 = 13"}],
max_tokens=2048,
)
Use any Bedrock model (native ID)
All 100+ Bedrock models work through the proxy — just pass the native model ID directly:
# Meta Llama 4
msg = client.messages.create(
model="meta.llama4-maverick-17b-instruct-v1:0",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=512,
)
# Google Gemma 3
msg = client.messages.create(
model="google.gemma-3-27b-it",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=512,
)
# Qwen3
msg = client.messages.create(
model="qwen.qwen3-32b-v1:0",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=512,
)
# NVIDIA Nemotron
msg = client.messages.create(
model="nvidia.nemotron-super-3-120b",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=512,
)
Available Models
Anthropic Claude (short aliases via BedrockRouter proxy)
| Constant | Alias | Model |
|---|---|---|
Models.CLAUDE_HAIKU_4_5 |
claude-haiku-4-5 |
Claude Haiku 4.5 |
Models.CLAUDE_HAIKU_4_5_THINKING |
claude-4.5-haiku-thinking |
Claude Haiku 4.5 (thinking) |
Models.CLAUDE_SONNET_4_5 |
claude-sonnet-4-5 |
Claude Sonnet 4.5 |
Models.CLAUDE_SONNET_4_5_THINKING |
claude-4.5-sonnet-thinking |
Claude Sonnet 4.5 (thinking) |
Models.CLAUDE_SONNET_4_6 |
claude-sonnet-4-6 |
Claude Sonnet 4.6 |
Models.CLAUDE_SONNET_4_6_THINKING |
claude-4.6-sonnet-medium-thinking |
Claude Sonnet 4.6 (thinking) |
Models.CLAUDE_OPUS_4_5 |
claude-opus-4-5 |
Claude Opus 4.5 |
Models.CLAUDE_OPUS_4_5_THINKING |
claude-4.5-opus-high-thinking |
Claude Opus 4.5 (thinking) |
Models.CLAUDE_OPUS_4_6 |
claude-opus-4-6 |
Claude Opus 4.6 |
Models.CLAUDE_OPUS_4_6_THINKING |
claude-4.6-opus-high-thinking |
Claude Opus 4.6 (thinking) |
Anthropic Claude (native Bedrock IDs)
| Constant | Model ID |
|---|---|
Models.CLAUDE_SONNET_4 |
anthropic.claude-sonnet-4-20250514-v1:0 |
Models.CLAUDE_OPUS_4 |
anthropic.claude-opus-4-20250514-v1:0 |
Models.CLAUDE_35_SONNET_V2 |
anthropic.claude-3-5-sonnet-20241022-v2:0 |
Models.CLAUDE_35_SONNET_V1 |
anthropic.claude-3-5-sonnet-20240620-v1:0 |
Models.CLAUDE_35_HAIKU |
anthropic.claude-3-5-haiku-20241022-v1:0 |
Models.CLAUDE_3_OPUS |
anthropic.claude-3-opus-20240229-v1:0 |
Models.CLAUDE_3_SONNET |
anthropic.claude-3-sonnet-20240229-v1:0 |
Models.CLAUDE_3_HAIKU |
anthropic.claude-3-haiku-20240307-v1:0 |
Amazon
| Constant | Model ID |
|---|---|
Models.NOVA_MICRO |
amazon.nova-micro-v1:0 |
Models.NOVA_LITE |
amazon.nova-lite-v1:0 |
Models.NOVA_PRO |
amazon.nova-pro-v1:0 |
Models.NOVA_PREMIER |
amazon.nova-premier-v1:0 |
Models.NOVA_2_LITE |
amazon.nova-2-lite-v1:0 |
Models.TITAN_TEXT_LITE |
amazon.titan-text-lite-v1 |
Models.TITAN_TEXT_EXPRESS |
amazon.titan-text-express-v1 |
Models.TITAN_TEXT_PREMIER |
amazon.titan-text-premier-v1:0 |
Meta Llama
| Constant | Model ID |
|---|---|
Models.LLAMA4_MAVERICK_17B |
meta.llama4-maverick-17b-instruct-v1:0 |
Models.LLAMA4_SCOUT_17B |
meta.llama4-scout-17b-instruct-v1:0 |
Models.LLAMA33_70B |
meta.llama3-3-70b-instruct-v1:0 |
Models.LLAMA32_90B |
meta.llama3-2-90b-instruct-v1:0 |
Models.LLAMA32_11B |
meta.llama3-2-11b-instruct-v1:0 |
Models.LLAMA31_405B |
meta.llama3-1-405b-instruct-v1:0 |
Models.LLAMA31_70B |
meta.llama3-1-70b-instruct-v1:0 |
Models.LLAMA31_8B |
meta.llama3-1-8b-instruct-v1:0 |
Mistral
| Constant | Model ID |
|---|---|
Models.MISTRAL_LARGE_3 |
mistral.mistral-large-3-v1:0 |
Models.MISTRAL_LARGE |
mistral.mistral-large-2407-v1:0 |
Models.MAGISTRAL_SMALL |
mistral.magistral-small-2506-v1:0 |
Models.DEVSTRAL_2 |
mistral.devstral-2-v1:0 |
Models.PIXTRAL_LARGE |
mistral.pixtral-large-2411-v1:0 |
Models.MISTRAL_NEMO |
mistral.mistral-nemo-2407-v1:0 |
Models.MINISTRAL_8B |
mistral.ministral-8b-2410-v1:0 |
Models.MINISTRAL_3B |
mistral.ministral-3b-2410-v1:0 |
Models.MIXTRAL_8X7B |
mistral.mixtral-8x7b-instruct-v0:1 |
| Constant | Model ID |
|---|---|
Models.GEMMA_3_27B |
google.gemma-3-27b-it |
Models.GEMMA_3_12B |
google.gemma-3-12b-it |
Models.GEMMA_3_4B |
google.gemma-3-4b-it |
NVIDIA
| Constant | Model ID |
|---|---|
Models.NEMOTRON_SUPER_120B |
nvidia.nemotron-super-3-120b |
Models.NEMOTRON_NANO_30B |
nvidia.nemotron-nano-3-30b |
Models.NEMOTRON_NANO_12B |
nvidia.nemotron-nano-12b-v2 |
Models.NEMOTRON_NANO_9B |
nvidia.nemotron-nano-9b-v2 |
Qwen
| Constant | Model ID |
|---|---|
Models.QWEN3_VL_235B |
qwen.qwen3-vl-235b-a22b |
Models.QWEN3_NEXT_80B |
qwen.qwen3-next-80b-a3b |
Models.QWEN3_CODER_NEXT |
qwen.qwen3-coder-next |
Models.QWEN3_CODER_30B |
qwen.qwen3-coder-30b-a3b-v1:0 |
Models.QWEN3_32B |
qwen.qwen3-32b-v1:0 |
Z.AI (GLM)
| Constant | Model ID |
|---|---|
Models.GLM_5 |
zai.glm-5 |
Models.GLM_4_7 |
zai.glm-4.7 |
Models.GLM_4_7_FLASH |
zai.glm-4.7-flash |
Other Providers
| Constant | Model ID | Provider |
|---|---|---|
Models.COMMAND_R_PLUS |
cohere.command-r-plus-v1:0 |
Cohere |
Models.COMMAND_R |
cohere.command-r-v1:0 |
Cohere |
Models.JAMBA_15_LARGE |
ai21.jamba-1-5-large-v1:0 |
AI21 Labs |
Models.DEEPSEEK_R1 |
us.deepseek.r1-v1:5 |
DeepSeek |
Models.DEEPSEEK_V3_2 |
deepseek.v3.2 |
DeepSeek |
Models.GPT_OSS_120B |
openai.gpt-oss-120b-1:0 |
OpenAI OSS |
Models.GPT_OSS_20B |
openai.gpt-oss-20b-1:0 |
OpenAI OSS |
Models.KIMI_K2_5 |
kimi-k2.5 |
Moonshot |
Models.KIMI_K2_THINKING |
kimi-k2-thinking |
Moonshot |
Models.KIMI_K2_6 |
kimi-k2.6 |
Moonshot |
Models.MINIMAX_M2_5 |
minimax-m2.5 |
MiniMax |
Models.PALMYRA_X5 |
writer.palmyra-x5-v1:0 |
Writer |
Models.PALMYRA_X4 |
writer.palmyra-x4-v1:0 |
Writer |
Run
bedrockrouter models listto see all 100+ models with pricing.
Two Clients — One Proxy
BedrockRouter exposes two fully compatible clients so you can use whichever SDK style you prefer:
BedrockRouter |
BedrockOpenAI |
|
|---|---|---|
| Format | Anthropic Messages API | OpenAI Chat Completions API |
| Response | msg.content[0].text |
resp.choices[0].message.content |
| Streaming | client.messages.stream(...) |
stream=True iterator |
| Models | All 100+ Bedrock models | All 100+ Bedrock models |
SDK vs Anthropic SDK
| Feature | Anthropic SDK | bedrockrouter |
|---|---|---|
| Install | pip install anthropic |
pip install bedrockrouter |
| Import | from anthropic import Anthropic |
from bedrockrouter import BedrockRouter |
| Client | Anthropic(api_key=...) |
BedrockRouter(api_key=..., base_url=...) |
| API call | client.messages.create(...) |
client.messages.create(...) (identical) |
| Models | Anthropic only | 100+ models: Anthropic, Meta, Amazon, Mistral, Cohere, Google, NVIDIA, Qwen, MiniMax, Kimi, DeepSeek, Z.AI, OpenAI OSS... |
| CLI | None | bedrockrouter models list |
| Cost tracking | None | Built into proxy |
| OpenAI format | No | BedrockOpenAI client included |
Migrating from the Anthropic SDK requires only changing the import and adding base_url.
Links
- Website: bedrockrouter.com
- PyPI: pypi.org/project/bedrockrouter
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bedrockrouter-0.1.1.tar.gz.
File metadata
- Download URL: bedrockrouter-0.1.1.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f95aac211943432b726466bd15df058f47adac990cda81e9cce74f64e2a54e5a
|
|
| MD5 |
929d7d4318a13364d243933f3c5d66dd
|
|
| BLAKE2b-256 |
ea48abba3ee77027340aba1302b6eff92334bffbfa62eecb72560293d8924b18
|
File details
Details for the file bedrockrouter-0.1.1-py3-none-any.whl.
File metadata
- Download URL: bedrockrouter-0.1.1-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac6218f3ff8bd1abcadf6158f1dade7f96c6bbf0b7775ed2517d3d97e4eca67e
|
|
| MD5 |
af63b8e7f10f780447068fdd6da32cc1
|
|
| BLAKE2b-256 |
31c683cef2631af0ecab8f3e23300ff7b11eaac1e337d184d6ce3dd62696da58
|