Connect your tool in 3 lines
Pick your harness, copy the snippet, paste your key. Your code keeps working at a fraction of the price.
Claude Code setup
export ANTHROPIC_BASE_URL=https://cheapapi.site
export ANTHROPIC_AUTH_TOKEN=sk-tm-YOUR-KEY
# Optional: pin a default model
export ANTHROPIC_MODEL=claude-sonnet-5-5
claudePaste these three lines in your shell profile (.zshrc or .bashrc) before running claude. Your existing slash commands and /reset all work as before.
Cursor setup
Cursor Settings -> Models -> OpenAI API Key section
Base URL: https://cheapapi.site/v1
API Key: sk-tm-YOUR-KEY
# Then add any model name from the cheapapi catalogue,
# e.g. claude-sonnet-5-5 or gpt-6-solCursor uses the OpenAI-compatible endpoint. You do not need an Anthropic key. Any model in the cheapapi catalogue works.
Cline setup
Cline sidebar -> gear icon -> API Provider: OpenAI Compatible
OpenAI API Base URL: https://cheapapi.site/v1
OpenAI API Key: sk-tm-YOUR-KEYSelect "OpenAI Compatible" as the provider in the Cline sidebar settings. Cline auto-discovers models from the /v1/models endpoint.
Codex CLI setup
export OPENAI_BASE_URL=https://cheapapi.site/v1
export OPENAI_API_KEY=sk-tm-YOUR-KEY
codex "refactor this function to be async"Codex CLI reads the standard OpenAI env vars. No config file needed.
Python (OpenAI SDK) setup
from openai import OpenAI
client = OpenAI(
api_key="sk-tm-YOUR-KEY",
base_url="https://cheapapi.site/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "hello"}],
)The base_url override is the only change. Everything else, streaming, tool calls, function calling, stays the same.
Python (Anthropic SDK) setup
from anthropic import Anthropic
client = Anthropic(
api_key="sk-tm-YOUR-KEY",
base_url="https://cheapapi.site",
)
msg = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "hello"}],
)The Anthropic SDK accepts a base_url argument. Use the root URL, not /v1.
Node.js (OpenAI SDK) setup
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-tm-YOUR-KEY",
baseURL: "https://cheapapi.site/v1",
});
const resp = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "hello" }],
});Works the same way for TypeScript. The baseURL change is the only line you touch.
Node.js (Anthropic SDK) setup
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "sk-tm-YOUR-KEY",
baseURL: "https://cheapapi.site",
});
const msg = await client.messages.create({
model: "claude-sonnet-5-5",
maxTokens: 1024,
messages: [{ role: "user", content: "hello" }],
});Use the root URL without /v1 for the Anthropic SDK. baseURL replaces the entire host.
curl setup
curl https://cheapapi.site/v1/chat/completions \
-H "Authorization: Bearer sk-tm-YOUR-KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"messages": [{"role": "user", "content": "hello"}]
}'OpenAI-compatible endpoint. Anthropic-native endpoint also available at /messages for models that support it.
n8n setup
Credentials -> New -> OpenAI API
Base URL: https://cheapapi.site/v1
API Key: sk-tm-YOUR-KEY
# In any OpenAI node, select your new credential.
# Use model names from the cheapapi catalogue.n8n uses OpenAI-compatible credentials. You can use any model in your workflows by typing the model name directly.
Hermes Agent setup
# ~/.hermes/config.yaml
provider: anthropic
api_key: sk-tm-YOUR-KEY
base_url: https://cheapapi.site
# Or use as a custom OpenAI provider:
provider: openai
api_key: sk-tm-YOUR-KEY
base_url: https://cheapapi.site/v1Hermes reads base_url from config.yaml. The Anthropic provider route is recommended for Claude models.
$5 free credit after email verification. No subscription.