Integrations
Works with the tools you already use
SparrowCodes speaks the OpenAI and Anthropic APIs, so anything that lets you set a base URL works. Two settings: base URL https://api.sparrowcodes.com/v1 and your sk-sc-v1- key.
Coding tools
Claude Code
Coding toolClaude Code talks to /v1/messages. Point it at SparrowCodes to use your balance, or to run it on another model.
export ANTHROPIC_BASE_URL="https://api.sparrowcodes.com" export ANTHROPIC_AUTH_TOKEN="sk-sc-v1-…" export ANTHROPIC_MODEL="anthropic/claude-sonnet-5.5" claude
Cline
Coding toolSettings → API Provider → OpenAI Compatible, then fill in:
Base URL: https://api.sparrowcodes.com/v1 API key: sk-sc-v1-… Model ID: anthropic/claude-sonnet-5.5
Continue
Coding toolAdd a model to config.yaml:
models:
- name: Claude Sonnet via SparrowCodes
provider: openai
apiBase: https://api.sparrowcodes.com/v1
apiKey: sk-sc-v1-…
model: anthropic/claude-sonnet-5.5Aider
Coding toolPass the base URL and key on the command line, with the openai/ prefix on the model.
aider --model openai/anthropic/claude-sonnet-5.5 \ --openai-api-base https://api.sparrowcodes.com/v1 \ --openai-api-key $SPARROW_API_KEY
Cursor
Coding toolSettings → Models: enter your key as the OpenAI API key, turn on Override OpenAI Base URL and add the model id as a custom model. Some Cursor features always use Cursor's own models.
OpenAI API key: sk-sc-v1-… Override base URL: https://api.sparrowcodes.com/v1 Custom model: anthropic/claude-sonnet-5.5
SDKs and frameworks
OpenAI SDK
Python and Node.jsChat Completions and Responses both work, on every chat model.
from openai import OpenAI
client = OpenAI(base_url="https://api.sparrowcodes.com/v1", api_key="sk-sc-v1-…")
reply = client.chat.completions.create(
model="anthropic/claude-sonnet-5.5",
messages=[{"role": "user", "content": "Hello"}],
)Anthropic SDK
Python and TypeScriptAnthropic's own model ids work too, as do tools, PDFs, thinking and prompt caching.
import anthropic
client = anthropic.Anthropic(base_url="https://api.sparrowcodes.com", api_key="sk-sc-v1-…")
msg = client.messages.create(
model="claude-sonnet-5-5", max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)Vercel AI SDK
TypeScriptUse the OpenAI-compatible provider.
import { generateText } from "ai";
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
const sparrow = createOpenAICompatible({
name: "sparrowcodes", baseURL: "https://api.sparrowcodes.com/v1", apiKey: process.env.SPARROW_API_KEY,
});
const { text } = await generateText({ model: sparrow("anthropic/claude-sonnet-5.5"), prompt: "Hello" });LangChain
Python and JavaScriptChatOpenAI with a different base URL.
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="anthropic/claude-sonnet-5.5", base_url="https://api.sparrowcodes.com/v1",
api_key=os.environ["SPARROW_API_KEY"])
print(llm.invoke("Hello").content)LiteLLM
PythonThe openai/ prefix tells LiteLLM to use an OpenAI-compatible endpoint.
import os
from litellm import completion
reply = completion(model="openai/anthropic/claude-sonnet-5.5", api_base="https://api.sparrowcodes.com/v1",
api_key=os.environ["SPARROW_API_KEY"],
messages=[{"role": "user", "content": "Hello"}])Anything else
If it speaks OpenAI or Anthropic, it works
Use any SparrowCodes model id, which always includes the maker (openai/gpt-6.1-sol). Tools that only accept a provider's own model names work on /v1/messages, which also accepts Anthropic's ids.
Base URL: https://api.sparrowcodes.com/v1 (OpenAI format) or https://api.sparrowcodes.com (Anthropic SDKs).
Key: sent as Authorization: Bearer or x-api-key.
Models: GET https://api.sparrowcodes.com/v1/models, no key needed.
Prefer one tool that does it all?
The SparrowCodes CLI is our own coding agent for the terminal, with Sparrow Auto picking the model for each task.