Подключение Anthropic-клиентов к Detta
Detta предоставляет Anthropic Messages API для клиентов, которые ожидают нативный endpoint Claude:
https://api.detta.one/v1/messages
Один API-ключ Detta можно использовать с Claude Code, Anthropic SDK, совместимыми настройками в IDE и обычным HTTP-запросом. Ключ создаётся в панели Detta и имеет префикс dk_.
Быстрая проверка
- Откройте панель Detta и войдите через Telegram.
- В Dashboard погасите код пополнения, если он у вас есть.
- В разделе API keys создайте ключ.
- Скопируйте ключ сразу: полный ключ показывается только один раз.
- Получите актуальный идентификатор Claude-модели из каталога Detta или из списка моделей в Dashboard.
- Выполните тестовый Messages-запрос, приведённый ниже.
Внимание: API-ключ — секрет.
Не публикуйте ключ в Lark, Git, issue, скриншотах или логах CI. Не вставляйте реальный ключ прямо в команды, которые сохраняются в shell history. Если ключ потерян, отзовите его или создайте новый.
1. Проверка через HTTP
Для Anthropic-клиентов Detta поддерживает оба способа передачи ключа:
x-api-key: dk_...— стандартный заголовок Anthropic;Authorization: Bearer dk_...— совместимый вариант для HTTP-клиентов и существующих интеграций Detta.
Передайте ключ через переменную окружения:
export DETTA_API_KEY='dk_<ваш-ключ>'
Минимальный non-streaming запрос:
MODEL='<модель-из-каталога>'
curl "https://api.detta.one/v1/messages" \
-H "x-api-key: $DETTA_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"$MODEL\",
\"max_tokens\": 128,
\"messages\": [{\"role\": \"user\", \"content\": \"Reply with exactly: Detta works\"}]
}"
Успешный ответ имеет Anthropic Messages-формат: type: "message", role: "assistant", массив content и usage с input_tokens и output_tokens. Поля ответа могут отличаться для разных моделей.
Проверка streaming:
curl "https://api.detta.one/v1/messages" \
-H "x-api-key: $DETTA_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-d "{
\"model\": \"$MODEL\",
\"max_tokens\": 128,
\"stream\": true,
\"messages\": [{\"role\": \"user\", \"content\": \"Say hello in one sentence\"}]
}"
В streaming-ответе должны приходить именованные Anthropic-события (message_start, content_block_delta, message_delta, message_stop). Не подставляйте /v1 второй раз: URL для прямого HTTP-запроса уже содержит этот префикс.
2. Claude Code CLI
Claude Code использует Anthropic Messages API напрямую. Установите Claude Code способом, рекомендованным для вашей операционной системы, затем передайте ему базовый URL Detta и ключ:
export ANTHROPIC_BASE_URL='https://api.detta.one'
export ANTHROPIC_AUTH_TOKEN="$DETTA_API_KEY"
claude
ANTHROPIC_BASE_URL указывается без /v1: Claude Code добавляет /v1/messages сам. ANTHROPIC_AUTH_TOKEN содержит ключ Detta, а не ключ Anthropic.
Для постоянной настройки сохраните переменные в локальном секрет-менеджере или профиле shell, который не попадает в репозиторий. Не сохраняйте ключ в скрипте проекта.
После запуска отправьте короткий запрос и проверьте, что:
- Claude Code не предлагает OAuth-вход Anthropic вместо заданного endpoint;
- выбранная модель доступна в каталоге Detta;
- ответ приходит без ошибки авторизации;
- баланс Detta уменьшается после завершённого запроса.
Внимание: ограничения Claude Code.
Наличие Messages API не означает, что каждая функция Claude Code поддерживается upstream-каналом. Не обещайте tool use, computer use или конкретную модель, пока не проверили её отдельным запросом через ваш аккаунт Detta.
3. Claude Desktop
Claude Desktop поддерживает сторонние API только в конфигурациях и версиях, где разрешён custom provider или developer API. Если ваша версия предоставляет такую настройку:
- Откройте настройки Claude Desktop.
- Найдите раздел API, Developer или Third-party provider.
- Укажите:
| Параметр | Значение |
|---|---|
| Base URL | https://api.detta.one |
| API key / Auth token | ваш ключ dk_... |
| API format | Anthropic Messages |
| Model | точный id из каталога Detta |
- Сохраните настройки и отправьте короткое тестовое сообщение.
Если в вашей версии Claude Desktop нет поля для custom base URL, этот способ недоступен без стороннего расширения. Используйте Claude Code, прямой HTTP-запрос или Anthropic SDK вместо изменения системного приложения.
4. VS Code и Cursor
Поддержка зависит от конкретного расширения. Выберите расширение, которое явно поддерживает Anthropic-compatible API или пользовательский provider. Не выбирайте только OpenAI-compatible режим: для этого сценария нужен endpoint /v1/messages и Anthropic-формат тела.
Обычно нужны следующие параметры:
| Параметр | Значение |
|---|---|
| Provider / API | Anthropic-compatible / Custom Anthropic |
| Base URL | https://api.detta.one |
| API key | dk_... |
| Model | точный id из каталога Detta |
Если расширение само добавляет /v1, используйте base URL без /v1. Если оно ожидает полный endpoint, укажите https://api.detta.one/v1 и проверьте, что /v1 не добавляется повторно.
Некоторые расширения поддерживают только официальный Anthropic endpoint и не позволяют менять base URL. В этом случае настройка Detta через такое расширение невозможна; используйте расширение с custom endpoint или OpenAI-совместимый режим и соответствующий Detta-гайд.
5. Python и TypeScript
Официальный Anthropic SDK можно направить на Detta через custom base_url.
Python
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["DETTA_API_KEY"],
base_url="https://api.detta.one",
)
message = client.messages.create(
model=os.environ["DETTA_MODEL"],
max_tokens=128,
messages=[{"role": "user", "content": "Reply with exactly: Detta works"}],
)
print(message.content[0].text)
Перед запуском задайте DETTA_API_KEY и DETTA_MODEL. Не записывайте реальные значения в исходный файл.
JavaScript / TypeScript
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
apiKey: process.env.DETTA_API_KEY,
baseURL: 'https://api.detta.one',
})
const message = await client.messages.create({
model: process.env.DETTA_MODEL!,
max_tokens: 128,
messages: [{ role: 'user', content: 'Reply with exactly: Detta works' }],
})
console.log(message.content[0]?.type === 'text' ? message.content[0].text : message.content)
Если SDK вашей версии требует x-api-key явно или не поддерживает baseURL, используйте прямой HTTP-клиент и отправляйте запрос на https://api.detta.one/v1/messages.
Доступные модели и баланс
- Используйте точный
modelиз актуального каталога; идентификаторы чувствительны к регистру. - Каждый inference-запрос требует активного API-ключа и положительного баланса.
- Стоимость зависит от модели, input/output tokens и доступных cache-полей.
- Streaming списывается после получения итогового usage.
- При недостаточном балансе запрос отклоняется до отправки downstream-провайдеру.
- Партнёрские и административные аккаунты предназначены для управления и не используют inference API keys.
Тест tools и content blocks
После базового запроса отдельно проверьте только те возможности, которые нужны вашему клиенту. Пример запроса с tool:
{
"model": "<модель-из-каталога>",
"max_tokens": 256,
"tools": [
{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
],
"messages": [
{"role": "user", "content": "What is the weather in Berlin?"}
]
}
Проверяйте tool use на небольшой тестовой задаче. Не делайте вывод о поддержке инструментов только по успешному обычному текстовому запросу.
Диагностика
401 Unauthorized
Проверьте, что:
- используется активный ключ
dk_...; - для Anthropic SDK передаётся
x-api-keyили корректныйapiKey; - для Claude Code задан
ANTHROPIC_AUTH_TOKEN, а не OAuth-токен Anthropic; - в
ANTHROPIC_BASE_URLнет лишнего/v1; - ключ не был отозван или заменён ротацией.
402 или недостаточный баланс
Погасите код пополнения в Dashboard и повторите запрос с тем же ключом. Не создавайте новый ключ: ключ не пополняет баланс.
404 для модели или endpoint
Для модели сверяйте точный id с текущим каталогом. Для endpoint проверьте, что клиент отправляет POST /v1/messages, а base URL не добавляет /v1 дважды.
400 или ошибка формата
Проверьте обязательные поля model, max_tokens и messages. В messages используйте Anthropic-формат ролей и content blocks. Не отправляйте OpenAI-специфичный chat/completions body в Messages endpoint.
502 или 504
Это ошибка или недоступность downstream-провайдера. Повторите запрос позже и передайте поддержке время, endpoint, HTTP-статус и x-request-id, если он был в ответе. Не отправляйте API-ключ и полный приватный prompt.
Клиент добавляет /v1 дважды
Проверьте итоговый URL в debug-логе клиента:
- SDK и Claude Code: base URL обычно
https://api.detta.one; - прямой HTTP: полный URL
https://api.detta.one/v1/messages.
Чек-лист перед передачей пользователю
- Пользователь вошёл в Dashboard и пополнил баланс.
- Создан активный ключ
dk_...и сохранён в секрет-менеджере. - Модель взята из актуального каталога Detta.
- Базовый URL выбран без повторного
/v1. - Выполнен non-streaming Messages-запрос.
- При необходимости отдельно проверен streaming.
- При необходимости отдельно проверены tools/content blocks.
- Проверено списание баланса после успешного запроса.
- В документации, логах и скриншотах нет ключей и приватных prompt-ов.
Если проблема сохраняется, сообщите поддержке время запроса, способ подключения, endpoint, HTTP-статус и x-request-id. Секреты и содержимое приватного запроса не отправляйте.