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

Подключение 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 уменьшается после завершённого запроса.

Внимание: поддержка функций зависит от модели.

Detta передаёт tools и другие поля запроса downstream без изменений, но фактическая поддержка tool use, computer use и конкретных моделей определяется upstream-провайдером. Прежде чем полагаться на функцию в рабочем процессе, проверьте её отдельным тестовым запросом через ваш аккаунт 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. Секреты и содержимое приватного запроса не отправляйте.