Anthropic API: как подключиться к Claude через API

Как подключить Anthropic API: создать ключ в Console, сохранить его в переменной окружения, отправить первый запрос к Messages API через Python или JavaScript и подготовить интеграцию к production.

Anthropic API: как подключиться к Claude через API

В терминале уже мигает курсор, а в задаче написано: «подключить Claude». Для первого рабочего запроса нужны четыре вещи: аккаунт в Claude Console, API key, переменная окружения и вызов POST /v1/messages. Дальше начинается обычная инженерная работа: выбрать доступную модель, не засветить секрет и не устроить себе шторм из 429.

Что даёт Anthropic API

Anthropic API нужен, когда Claude должен отвечать внутри вашего продукта, бэкенда, скрипта, бота или внутреннего сервиса. Вы отправляете данные на API, получаете структурированный ответ и сами решаете, где его показать, сохранить или передать дальше. Личный чат и подписка Claude.ai относятся к другому сценарию, их здесь не смешиваем.

Если сначала хотите понять сам интерфейс Claude и ограничения использования из России, посмотрите отдельный материал: как пользоваться Claude из России. Для API важнее другое: серверная интеграция, ключи и контроль запросов.

Схема первого запроса к Anthropic API: Console, переменная окружения, SDK и Messages API
Первый путь короткий: Console → API key → env → SDK → Messages API.

Ключ в Console и переменная окружения

Откройте Claude Console, перейдите в Settings → API keys и создайте ключ для нужного workspace. Ключ живёт как секрет: не вставляйте его в исходники, README, скриншоты, frontend-код и сообщения в чатах. Локально передайте его через окружение:

bash
export ANTHROPIC_API_KEY='ваш_секретный_ключ'

Для dev, stage и prod заведите отдельные ключи или workspace. Тогда утечка ключа разработчика не открывает production, а в логах и биллинге проще найти источник запроса. В CI, облаке и Kubernetes храните секрет в secrets manager. Если инфраструктура поддерживает workload identity, изучите короткоживущие токены вместо постоянного ключа.

!

Браузер, мобильное приложение и публичный JavaScript не должны знать API key. Вызов к Anthropic API делает ваш backend или serverless-функция, а клиент обращается уже к ней.

Первый запрос через Python и JavaScript

Официальные SDK читают ANTHROPIC_API_KEY из окружения и сами добавляют служебные заголовки. В Python создайте виртуальное окружение и установите пакет anthropic. В Node.js установите @anthropic-ai/sdk. Идентификатор модели не копируйте из старой статьи: перед запуском проверьте актуальную документацию и список моделей, доступных вашему аккаунту через GET /v1/models.

python
import anthropic

client = anthropic.Anthropic()
message = client.messages.create(
    model="MODEL_ID_FROM_GET_V1_MODELS",
    max_tokens=300,
    system="Отвечай кратко и на русском.",
    messages=[
        {"role": "user", "content": "Объясни REST API в двух предложениях."}
    ],
)

text = "".join(
    block.text for block in message.content if block.type == "text"
)
print(text)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();
const message = await client.messages.create({
  model: "MODEL_ID_FROM_GET_V1_MODELS",
  max_tokens: 300,
  system: "Отвечай кратко и на русском.",
  messages: [
    { role: "user", content: "Объясни REST API в двух предложениях." }
  ]
});

const text = message.content
  .filter((block) => block.type === "text")
  .map((block) => block.text)
  .join("");
console.log(text);

В Python вызов синхронный. В JavaScript нужен await. У обоих примеров одна логика: system передаётся отдельным полем, messages содержит реплики пользователя, а max_tokens ограничивает верхнюю границу ответа. Он не обещает, что модель обязательно вернёт ровно столько токенов.

Как выглядит raw HTTP запрос

SDK удобен, но полезно видеть проводку. Прямой запрос идёт на https://api.anthropic.com/v1/messages. Для raw HTTP обязательны x-api-key, anthropic-version и content-type: application/json.

bash
curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "MODEL_ID_FROM_GET_V1_MODELS",
    "max_tokens": 300,
    "messages": [
      {"role": "user", "content": "Составь короткий план релиза."}
    ]
  }'

POST /v1/messages создаёт сообщение. Для проверки доступных моделей используйте Models API: GET /v1/models. А если нужно заранее оценить размер prompt и бюджет, пригодится Token Counting API: POST /v1/messages/count_tokens. Не ставьте temperature, top_p или top_k по привычке: совместимость параметров зависит от выбранной модели.

Что проверитьЗачем это нужноДействие
МодельДоступ и параметры меняютсяЗапросить `GET /v1/models` и свериться с документацией
max_tokensОграничивает длину генерацииЗадать предел под конкретный UX
system и messagesРазделяют инструкции и диалогДержать системные правила отдельно
ТокеныВлияют на лимиты и расходыСчитать вход до дорогих вызовов
streamДаёт ответ частями через SSEОбработать обрыв потока и ошибки mid-stream

429, request-id и production режим

В тестовом скрипте один запрос проходит почти всегда. В production картина другая: очередь сдвинулась, несколько воркеров проснулись одновременно, API вернул 429. Лимиты учитывают не только число запросов, но и входные и выходные токены. Даже при среднем RPM короткий burst может упереться в ограничение.

  • На 429 читайте retry-after, ставьте запрос в очередь и повторяйте с exponential backoff и случайным jitter.
  • На 500, 504 и 529 делайте ограниченное число повторов. Бесконечный retry превращает временную ошибку в собственную DDoS-атаку.
  • На 400 исправляйте JSON, model ID или параметры. На 401 проверяйте ключ и заголовки. На 402, 403 и 413 не ретрайте вслепую.
  • Сохраняйте request-id, HTTP-статус, задержку и счётчики токенов. Не логируйте API key и полный чувствительный prompt.
  • Ограничьте параллелизм, добавьте budget alerts и постепенно наращивайте нагрузку.

Простейшая политика backoff выглядит так: первая пауза небольшая, затем интервалы растут, к ним добавляется случайная доля секунды, а после заданного числа попыток задача получает понятную ошибку. Если SDK сам делает временные ретраи, продуктовая политика всё равно нужна: она решает, когда остановиться, что показать пользователю и как не задублировать работу.

Безопасный production workflow Anthropic API с очередью, backoff, метриками и request-id
Продовая интеграция держится на очереди, ограниченном backoff, метриках и диагностике по request-id.
@yourself_realize

Практика AI-разработки без магии

В Telegram разбираю API-интеграции, AI-агентов и рабочие схемы, которые можно проверить в своём проекте.

Подписаться

Когда Anthropic API не нужен

Для разового диалога и проверки идеи чаще быстрее открыть обычный интерфейс Claude. Для работы с кодовой базой есть отдельный сценарий: как использовать Claude Code. А MCP отвечает за подключение инструментов к модели, а не за первый HTTP-вызов, поэтому его лучше изучать отдельно: как подключить инструменты через MCP.

Если вы строите агентный процесс вокруг репозитория, полезно заранее описать правила проекта и ожидаемый формат работы. Для этого есть отдельный разбор: как написать CLAUDE.md для проекта. API при этом остаётся транспортом между вашим приложением и моделью.

FAQ

В Claude Console: Settings → API keys. Храните ключ в переменной окружения или secrets manager, а не в исходниках.
POST https://api.anthropic.com/v1/messages. Для raw HTTP нужны x-api-key, anthropic-version и content-type: application/json.
Ключ нельзя безопасно передать в браузер. Сделайте server-side endpoint или serverless-функцию, которая хранит секрет и вызывает API от имени приложения.
Помимо запросов учитываются входные и выходные токены, а короткие всплески трафика могут ограничиваться отдельно. Учитывайте retry-after, используйте очередь и backoff с jitter.
Не привязывайтесь к списку из статьи. Проверьте модели, доступные вашему аккаунту через GET /v1/models, затем сравните актуальные параметры, цену и качество на своей задаче.
@yourself_realize

Следующий шаг

Подключите один безопасный запрос, добавьте request-id и обработку 429, а уже потом собирайте вокруг него продуктовую логику. Так в логах будет меньше дыма.

Перейти в Telegram