Практическое подключение

Claude API: подключение Messages

Отправим один запрос Messages, прочитаем все текстовые блоки и проверим stop_reason. Для Claude Code используются тот же базовый домен и ключ, но настройка терминального клиента разобрана отдельно.

Где получить ключ Claude API

Создайте ключ в кабинете CLODEx и проверьте доступные ему модели через /v1/models. Сохраните секрет в CLODEX_API_KEY, а выбранный ID — в CLODEX_MODEL. Публичная карточка Claude Fable не означает, что любой ключ получит к нему доступ.

claude-fable-5 и claude-fable-5.1 — разные ID. Не заменяйте точку дефисом и не переносите настройки одной версии на другую без проверки. Для IDE и терминального агента используйте отдельную инструкцию Claude Code: успешный текстовый запрос сам по себе не проверяет работу tools.

Создание и проверка ключа · Настройка Claude Code

Адрес и обязательные поля

Роль system задаётся отдельным верхнеуровневым полем Messages, а не сообщением с role=system. В минимальном примере ниже системная инструкция не нужна. Не переносите параметры Chat Completions в Messages по совпадению названий.

ПунктЗначениеЧастая ошибка
Raw HTTPhttps://clodex.xyz/v1/messagesВызов /chat/completions с телом Messages.
Anthropic SDK base URLhttps://clodex.xyzДублирование /v1: SDK добавляет его сам.
Заголовкиx-api-key; anthropic-version: 2023-06-01; content-type: application/jsonКлюч в теле запроса вместо заголовка.
Телоmodel, max_tokens, messagesПропущенный max_tokens или ID, которого нет у ключа.

Один текстовый запрос на Python

Нужен Python 3; пример использует стандартную библиотеку, без установки SDK. CLODEX_API_KEY и CLODEX_MODEL должны быть заданы в защищённом окружении. Запуск выполняет платную генерацию. max_tokens=128 ограничивает выход, но не делает запрос бесплатным.

Если сервер вернёт HTTP-ошибку, urlopen завершится исключением. Пример не повторяет запрос автоматически. При таймауте сначала проверьте расход и состояние запроса, а не запускайте ту же генерацию снова.

import json
import os
from urllib.request import Request, urlopen

payload = {
    "model": os.environ["CLODEX_MODEL"],
    "max_tokens": 128,
    "stream": False,
    "messages": [{"role": "user", "content": "Reply with one word: ready"}],
}
request = Request(
    "https://clodex.xyz/v1/messages",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "content-type": "application/json",
        "x-api-key": os.environ["CLODEX_API_KEY"],
        "anthropic-version": "2023-06-01",
    },
    method="POST",
)
with urlopen(request, timeout=60) as response:
    result = json.load(response)
if result.get("stop_reason") != "end_turn":
    raise RuntimeError(f"Incomplete text turn: {result.get('stop_reason')}")
blocks = result.get("content", [])
if not blocks or any(block.get("type") != "text" for block in blocks):
    raise RuntimeError("Expected text blocks only")
print("\n".join(block["text"] for block in blocks))
print(result.get("usage"))

Как разбирать ответ с несколькими блоками

content — массив блоков. Текст может находиться в нескольких блоках type=text; пример объединяет их по порядку. Он намеренно отвергает другой тип блока, потому что в этой пробе инструменты не запрашивались.

end_turn означает завершение хода. max_tokens означает, что лимит выхода достигнут: не считайте такой ответ полным. tool_use требует отдельного обработчика инструментов, проверки аргументов и разрешения на действие; выполнять команду только потому, что её вернула модель, нельзя.

Для streaming нужен обработчик событий Messages. Закрытие TCP-соединения не заменяет ожидаемое завершающее событие message_stop. Проверяйте поток отдельно после обычного запроса.

Официальная спецификация Messages

Публичные цены и единицы расчёта

Сверьте тариф точного ID перед отправкой и фактический расход после неё. Не выводите цену Fable 5 из цены Fable 5.1 и не путайте лимит max_tokens с числом реально использованных токенов.

Доступ через CLODEx не является подпиской на сайт Anthropic. Ключ работает с адресом CLODEx; совместимость протокола не подтверждает все beta-функции, лимиты контекста или официальное партнёрство.

Актуальные тарифы · Справочник расхода · Разобрать ошибку Messages

Документация и проверка примера

Адреса и настройки подключения сверены с документацией CLODEx. Примеры предназначены для указанного протокола; они не являются журналом выполненных запросов и не обещают одинаковые функции у всех моделей. Рабочий запрос на генерацию может списать средства.

Подключение клиентов · Протоколы API

Частые вопросы

Почему нельзя читать choices[0] в ответе Claude?

В Messages ответ находится в content blocks. choices относится к Chat Completions; смешение обработчиков приводит к ошибке даже при HTTP 200.

Работает ли любой Claude alias из чужой инструкции?

Нет такой гарантии. Используйте точный ID, доступный ключу CLODEx, и поддерживаемый им маршрут.

Что приложить к обращению в поддержку?

Время, HTTP-статус, ID модели, stop_reason или текст ошибки и безопасный ID запроса. Удалите ключ и личные данные; не отправляйте полный заголовок x-api-key.

Подключите CLODEX API к своему проекту

Один ключ, единый endpoint и несколько семейств LLM для разработки, приложений и ботов.