Anthropic Messages

POST https://router.1-lab.online/v1/messages — эндпоинт в формате API Anthropic. Он нужен, если ваш код уже написан на SDK anthropic или программа умеет работать только с API Anthropic. Используйте его с моделями Claude (anthropic/...).

Для нового кода проще Chat Completions: там доступны все модели, а модели Claude работают так же.

Заголовки

Заголовок Значение
x-api-key ваш ключ sk-... (можно и Authorization: Bearer sk-...)
anthropic-version 2023-06-01
content-type application/json

cURL

curl https://router.1-lab.online/v1/messages \
  -H "x-api-key: $ROUTER_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5.5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Составь план статьи про выбор CRM для малого бизнеса"}
    ]
  }'

Параметр max_tokens в этом формате обязателен. Системная инструкция передаётся отдельным полем system, а не сообщением.

Python (SDK Anthropic)

Адрес указывается без /v1 — SDK добавит путь сам.

pip install anthropic
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://router.1-lab.online",
    api_key=os.environ["ROUTER_API_KEY"],
)

msg = client.messages.create(
    model="anthropic/claude-sonnet-5.5",
    max_tokens=1024,
    system="Ты маркетолог. Пиши просто и по делу.",
    messages=[{"role": "user", "content": "Составь план статьи про выбор CRM для малого бизнеса"}],
)
print(msg.content[0].text)
print(msg.usage)  # input_tokens, output_tokens, cache_read_input_tokens ...

TypeScript (SDK Anthropic)

npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://router.1-lab.online",
  apiKey: process.env.ROUTER_API_KEY,
});

const msg = await client.messages.create({
  model: "anthropic/claude-sonnet-5.5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Составь план статьи про выбор CRM для малого бизнеса" }],
});
console.log(msg.content);

Потоковый ответ

Добавьте "stream": true в тело запроса или используйте client.messages.stream(...) в SDK. События приходят в формате API Anthropic: message_start, content_block_delta, message_stop и другие.

with client.messages.stream(
    model="anthropic/claude-sonnet-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Напиши короткое поздравление коллеге."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Кэш

Повторяющееся начало запроса (длинная инструкция, документ) можно пометить полем cache_control, как в API Anthropic. Повторные запросы с тем же началом оплачиваются дешевле. Сколько токенов записано в кэш и прочитано из него, видно в usage ответа и в разбивке стоимости в истории запросов. Цены — в разделе Модели и цены.