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 tool

Claude 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 tool

Settings → 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 tool

Add 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.5

Aider

Coding tool

Pass 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 tool

Settings → 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.js

Chat 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 TypeScript

Anthropic'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

TypeScript

Use 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 JavaScript

ChatOpenAI 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

Python

The 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.

Read the docs →

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.

Integrations: SDKs and coding tools · SparrowCodes