Skip to content

SDK Overview ​

SandBase is fully compatible with the official OpenAI and Anthropic SDKs. You don't need a custom SandBase SDK — just point your existing SDK at SandBase's base URL and use your SandBase API key.

Why No Custom SDK? ​

SandBase implements the OpenAI Chat Completions API and Anthropic Messages API byte-for-byte. This means:

  • ✅ All existing OpenAI SDK features work (streaming, tools, structured output)
  • ✅ All existing Anthropic SDK features work (streaming, thinking, caching)
  • ✅ No new library to learn or maintain
  • ✅ Switch between SandBase and direct providers by changing one line

Quick Setup ​

OpenAI SDK → SandBase ​

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.sandbase.ai/v1",  # ← Only change needed
    api_key="sk-sb-your-key"
)

# Everything else works exactly the same
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}]
)
javascript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://api.sandbase.ai/v1',  // ← Only change needed
  apiKey: 'sk-sb-your-key',
});

const response = await client.chat.completions.create({
  model: 'gpt-4o',
  messages: [{ role: 'user', content: 'Hello!' }],
});

Anthropic SDK → SandBase ​

python
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.sandbase.ai",  # ← Only change needed
    api_key="sk-sb-your-key"
)

response = client.messages.create(
    model="claude-sonnet-4",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)
javascript
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  baseURL: 'https://api.sandbase.ai',  // ← Only change needed
  apiKey: 'sk-sb-your-key',
});

const response = await client.messages.create({
  model: 'claude-sonnet-4',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Hello!' }],
});

Supported SDK Versions ​

SDKMinimum VersionRecommended
openai (Python)1.0.0+Latest
openai (Node.js)4.0.0+Latest
anthropic (Python)0.18.0+Latest
@anthropic-ai/sdk (Node.js)0.18.0+Latest

Cross-Provider Access ​

The key advantage of SandBase is accessing any model through any SDK:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.sandbase.ai/v1",
    api_key="sk-sb-your-key"
)

# Access Claude through the OpenAI SDK
response = client.chat.completions.create(
    model="claude-sonnet-4",  # Anthropic model via OpenAI SDK!
    messages=[{"role": "user", "content": "Hello!"}]
)

# Access Gemini through the OpenAI SDK
response = client.chat.completions.create(
    model="gemini-2.5-pro",  # Google model via OpenAI SDK!
    messages=[{"role": "user", "content": "Hello!"}]
)

SDK-Specific Guides ​

Environment Variables ​

For convenience, set these environment variables instead of hardcoding:

bash
export OPENAI_BASE_URL="https://api.sandbase.ai/v1"
export OPENAI_API_KEY="sk-sb-your-key"

# Or for Anthropic SDK
export ANTHROPIC_BASE_URL="https://api.sandbase.ai"
export ANTHROPIC_API_KEY="sk-sb-your-key"

Then your code doesn't need any SandBase-specific configuration:

python
from openai import OpenAI
client = OpenAI()  # Reads from environment variables automatically