Anthropic SDK integration

Use the official Anthropic SDK for Python or TypeScript with Modellane: set the base URL and API key, then create messages as usual.

The official Anthropic SDKs work with Modellane through the Messages API. Point them at the Modellane base URL, use your key and pick a Modellane model.

The official Anthropic SDKs work with Modellane through the Messages API (POST /v1/messages). Change the base URL and the key, and use a Modellane model id instead of a Claude model name.

Install#

Python

pip install anthropic

Node.js

npm install @anthropic-ai/sdk

Configure the client#

The base URL is https://usemodellane.com, without /v1: the SDKs add /v1/messages themselves.

Python

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["MODELLANE_API_KEY"],
    base_url="https://usemodellane.com",
)

message = client.messages.create(
    model="lane-1",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Write a haiku about the sea."}],
)
print(message.content[0].text)

Node.js

import Anthropic from "@anthropic-ai/sdk"

const client = new Anthropic({
  apiKey: process.env.MODELLANE_API_KEY,
  baseURL: "https://usemodellane.com",
})

const message = await client.messages.create({
  model: "lane-1",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Write a haiku about the sea." }],
})
console.log(message.content[0].text)

The key is sent in the x-api-key header, as the SDKs always do. A bearer token in Authorization works as well.

Streaming#

Python

with client.messages.stream(
    model="lane-1",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Count to five."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Node.js

const stream = client.messages.stream({
  model: "lane-1",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Count to five." }],
})
stream.on("text", (text) => process.stdout.write(text))
await stream.finalMessage()

Count tokens#

client.messages.count_tokens (Python) and client.messages.countTokens (TypeScript) call POST /v1/messages/count_tokens. The count is a free estimate from the prompt size and can differ from the prompt tokens you are billed for.

Verify#

Run the first example. A printed reply means the base URL, key and model id are right. The SDK raises an authentication error for a wrong key and a not found error for a model id that is not in Models & pricing.

What is different#

  • Model ids: Claude model names are not mapped; use ids from Models & pricing.
  • Thinking: with thinking turned on, the model's reasoning comes back as thinking blocks with an empty signature, but budget_tokens is not applied.
  • Tools: your own tools work with tool_use and tool_result blocks. Server tools such as web search and code execution are ignored.
  • Not available: the Files API, Message Batches, document blocks and image URLs.

The Anthropic Messages API guide covers every mapping and limit, and Messages lists the fields.

Images#