Python SDK for interacting with BitRouter - the zero-ops LLM gateway for autonomous agents.
# Core client only
pip install bitrouter
# With Solana support
pip install bitrouter[solana]
# With Ethereum support
pip install bitrouter[evm]
# With OpenAI provider
pip install bitrouter[openai]
# Everything
pip install bitrouter[all]import asyncio
from solders.keypair import Keypair
import base58
from bitrouter import BitRouterClient, BitRouterClientOptions
from bitrouter.svm import SvmClientSigner, SOLANA_MAINNET_CHAIN_ID
async def main():
# Create a Solana keypair from your private key
secret = base58.b58decode("your-base58-private-key")
keypair = Keypair.from_bytes(secret)
# Create the client signer
signer = SvmClientSigner(keypair=keypair, chain_id=SOLANA_MAINNET_CHAIN_ID)
# Create the BitRouter client
async with BitRouterClient(BitRouterClientOptions(
signer=signer,
base_url="https://app.bitrouter.ai",
)) as client:
# Query your session balance
balance = await client.session_balance()
print(f"Balance: {balance.balance_usd} USD")
# Make a chat completion request (OpenAI-compatible)
response = await client.chat_completions({
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello, what is BitRouter?"}],
})
if response.status_code == 200:
data = response.json()
print(data["choices"][0]["message"]["content"])
asyncio.run(main())import asyncio
from eth_account import Account
from bitrouter import BitRouterClient, BitRouterClientOptions
from bitrouter.evm import EvmClientSigner, EVM_MAINNET_CHAIN_ID
async def main():
# Create an EVM account from your private key
account = Account.from_key("0x...")
# Create the client signer
signer = EvmClientSigner(account=account, chain_id=EVM_MAINNET_CHAIN_ID)
# Create the BitRouter client
async with BitRouterClient(BitRouterClientOptions(
signer=signer,
base_url="https://app.bitrouter.ai",
)) as client:
balance = await client.session_balance()
print(f"Balance: {balance.balance_usd} USD")
asyncio.run(main())Use BitRouter as a drop-in OpenAI replacement:
import asyncio
from solders.keypair import Keypair
import base58
from bitrouter.svm import SvmClientSigner, SOLANA_MAINNET_CHAIN_ID
from bitrouter.provider import create_openai_client
async def main():
secret = base58.b58decode("your-base58-private-key")
keypair = Keypair.from_bytes(secret)
signer = SvmClientSigner(keypair=keypair, chain_id=SOLANA_MAINNET_CHAIN_ID)
# Get a standard OpenAI client that authenticates via wallet
openai_client = create_openai_client(signer)
response = await openai_client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[{"role": "user", "content": "What is BitRouter?"}],
)
print(response.choices[0].message.content)
asyncio.run(main())import asyncio
import json
from bitrouter import BitRouterClient, BitRouterClientOptions
from bitrouter.svm import SvmClientSigner, SOLANA_MAINNET_CHAIN_ID
async def main():
# ... create signer as above ...
async with BitRouterClient(BitRouterClientOptions(
signer=signer,
base_url="https://app.bitrouter.ai",
)) as client:
response = await client.chat_completions({
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Tell me a story"}],
"stream": True,
})
async for line in response.aiter_lines():
if line.startswith("data: ") and line[6:] != "[DONE]":
chunk = json.loads(line[6:])
content = chunk["choices"][0]["delta"].get("content", "")
print(content, end="", flush=True)
asyncio.run(main())client = BitRouterClient(BitRouterClientOptions(
signer=signer,
base_url="http://localhost:8000",
siwx_domain="app.bitrouter.ai", # Override SIWx signing domain
))The SDK uses SIWx (Sign-In-With-X) for wallet-based authentication. Each request is automatically signed with your wallet.
The SDK integrates with x402 for seamless micropayments when making API requests that require payment.
ISC