Перейти к основному содержимому

Подключение Anthropic-клиентов к Detta

Detta предоставляет Anthropic Messages API для клиентов, которые ожидают нативный endpoint Claude:

https://api.detta.one/v1/messages

Один API-ключ Detta можно использовать с Claude Code, Anthropic SDK, совместимыми настройками в IDE и обычным HTTP-запросом. Ключ создаётся в панели Detta и имеет префикс dk_.

Быстрая проверка

  1. Откройте панель Detta и войдите через Telegram.
  2. В Dashboard погасите код пополнения, если он у вас есть.
  3. В разделе API keys создайте ключ.
  4. Скопируйте ключ сразу: полный ключ показывается только один раз.
  5. Получите актуальный идентификатор Claude-модели из каталога Detta или из списка моделей в Dashboard.
  6. Выполните тестовый 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. Если ваша версия предоставляет такую настройку:

  1. Откройте настройки Claude Desktop.
  2. Найдите раздел API, Developer или Third-party provider.
  3. Укажите:
ПараметрЗначение
Base URLhttps://api.detta.one
API key / Auth tokenваш ключ dk_...
API formatAnthropic Messages
Modelточный id из каталога Detta
  1. Сохраните настройки и отправьте короткое тестовое сообщение.

Если в вашей версии 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 / APIAnthropic-compatible / Custom Anthropic
Base URLhttps://api.detta.one
API keydk_...
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. Секреты и содержимое приватного запроса не отправляйте.