Skip to main content

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

PyPI version Python License: MIT

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

Google

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 list to 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

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

bedrockrouter-0.1.1.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bedrockrouter-0.1.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

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

Hashes for bedrockrouter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f95aac211943432b726466bd15df058f47adac990cda81e9cce74f64e2a54e5a
MD5 929d7d4318a13364d243933f3c5d66dd
BLAKE2b-256 ea48abba3ee77027340aba1302b6eff92334bffbfa62eecb72560293d8924b18

See more details on using hashes here.

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

Hashes for bedrockrouter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ac6218f3ff8bd1abcadf6158f1dade7f96c6bbf0b7775ed2517d3d97e4eca67e
MD5 af63b8e7f10f780447068fdd6da32cc1
BLAKE2b-256 31c683cef2631af0ecab8f3e23300ff7b11eaac1e337d184d6ce3dd62696da58

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page