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

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

Detta предоставляет OpenAI-совместимый endpoint для клиентов, которые ожидают нативный OpenAI API:

https://api.detta.one/v1

Один API-ключ Detta (dk_...) можно использовать с OpenAI SDK, расширениями в IDE, приложениями с поддержкой OpenAI-compatible API и обычным HTTP-запросом. Ключ создаётся в панели Detta.

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

  1. Откройте панель Detta и войдите через Telegram.
  2. В Dashboard погасите код пополнения, если он у вас есть.
  3. В разделе API keys создайте ключ.
  4. Скопируйте ключ сразу: полный ключ показывается только один раз. Base URL https://api.detta.one/v1 также виден в Dashboard рядом с ключами.
  5. Получите актуальный идентификатор модели из каталога: список моделей есть прямо в Dashboard (раздел Модели), либо через GET https://api.detta.one/v1/models.
  6. Выполните тестовый запрос, приведённый ниже.

Внимание: API-ключ — секрет.

Не публикуйте ключ в чатах, Git, issue, скриншотах или логах CI. Не вставляйте реальный ключ прямо в команды, которые сохраняются в shell history. Если ключ потерян, отзовите его или создайте новый.

1. Проверка через curl​

Передайте ключ через переменную окружения:

export DETTA_API_KEY='dk_<ваш-ключ>'

Минимальный non-streaming запрос:

MODEL='<модель-из-каталога>'

curl https://api.detta.one/v1/chat/completions \
-H "Authorization: Bearer $DETTA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"$MODEL\",
\"messages\": [{\"role\": \"user\", \"content\": \"Reply with exactly: Detta works\"}]
}"

Успешный ответ имеет OpenAI-формат: choices[0].message.content и usage с prompt_tokens и completion_tokens. Поля ответа могут отличаться для разных моделей.

Проверка streaming:

curl https://api.detta.one/v1/chat/completions \
-H "Authorization: Bearer $DETTA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"$MODEL\",
\"stream\": true,
\"messages\": [{\"role\": \"user\", \"content\": \"Say hello in one sentence\"}]
}"

Каталог моделей публичный и не требует ключа:

curl -s https://api.detta.one/v1/models

2. OpenAI SDK​

Официальный OpenAI SDK подключается к Detta через кастомный base_url.

Python​

import os
from openai import OpenAI

client = OpenAI(
api_key=os.environ["DETTA_API_KEY"],
base_url="https://api.detta.one/v1",
)

response = client.chat.completions.create(
model=os.environ["DETTA_MODEL"],
messages=[{"role": "user", "content": "Reply with exactly: Detta works"}],
)

print(response.choices[0].message.content)

Перед запуском задайте DETTA_API_KEY и DETTA_MODEL. Не записывайте реальные значения в исходный файл.

JavaScript / TypeScript​

import OpenAI from 'openai'

const client = new OpenAI({
apiKey: process.env.DETTA_API_KEY,
baseURL: 'https://api.detta.one/v1',
})

const response = await client.chat.completions.create({
model: process.env.DETTA_MODEL!,
messages: [{ role: 'user', content: 'Reply with exactly: Detta works' }],
})

console.log(response.choices[0]?.message?.content)

3. VS Code и Cursor​

Используйте расширение или встроенный провайдер, который явно поддерживает OpenAI-compatible API. Обычно нужны следующие параметры:

ПараметрЗначение
Provider / APIOpenAI-compatible / OpenAI Completions
Base URLhttps://api.detta.one/v1
API keyваш ключ dk_...
Modelточный id из каталога Detta

Если расширение само добавляет /v1, укажите base URL https://api.detta.one; если ожидает полный URL — https://api.detta.one/v1. Проверьте, что /v1 не добавляется дважды.

4. Другие OpenAI-совместимые клиенты​

Любой клиент с поддержкой кастомного OpenAI-compatible base URL настраивается так же:

  • Base URL: https://api.detta.one/v1;
  • API key: dk_...;
  • Model: точный id из каталога.

Detta поддерживает OpenAI-совместимые HTTP-эндпоинты:

  • GET https://api.detta.one/v1/models — каталог моделей;
  • POST https://api.detta.one/v1/chat/completions — чат и streaming;
  • POST https://api.detta.one/v1/completions — legacy completions;
  • POST https://api.detta.one/v1/embeddings — embeddings, если модель доступна в каталоге.

Если клиент ожидает именно Anthropic Messages API (например, Claude Code), используйте гайд для Anthropic-клиентов — это другой endpoint и формат тела. Для pi.dev и OMP есть отдельные инструкции и настройка OMP.

Доступные модели и баланс​

  • Используйте точный model из актуального каталога; идентификаторы чувствительны к регистру.
  • Список моделей доступен прямо в Dashboard (раздел Модели) и совпадает с GET /v1/models.
  • Модели «за токены» (в Dashboard отмечены как «за токены») предназначены для обычного chat-запроса. Модели «за единицу» (видео, изображения) через chat/completions не вызываются.
  • Каждый inference-запрос требует активного API-ключа и положительного баланса.
  • Стоимость зависит от модели и количества input/output tokens.
  • Streaming поддерживается; списание выполняется после получения итогового usage.
  • При недостаточном балансе запрос отклоняется до отправки downstream-провайдеру.

Диагностика​

401 Unauthorized​

Проверьте, что:

  • заголовок имеет вид Authorization: Bearer dk_...;
  • в ключе нет лишних пробелов и кавычек;
  • ключ не был отозван или заменён ротацией;
  • вы используете ключ пользователя, а не код пополнения.

402 или недостаточный баланс​

Погасите код пополнения в Dashboard и повторите запрос с тем же ключом. Не создавайте новый ключ: ключ не пополняет баланс.

404 для модели​

Сверьте model с текущим id из каталога (Dashboard → Модели или GET /v1/models). Идентификатор чувствителен к регистру; устаревшие модели могут исчезнуть из активного каталога.

400 или ошибка формата​

Проверьте обязательные поля model и messages в OpenAI-формате ролей. Не отправляйте Anthropic-специфичный Messages body в chat/completions endpoint.

502 или 504​

Это ошибка или недоступность downstream-провайдера. Повторите запрос позже и передайте поддержке время, endpoint, HTTP-статус и x-request-id, если он был в ответе. Не отправляйте API-ключ и полный приватный prompt.

Клиент добавляет /v1 дважды​

Проверьте итоговый URL в debug-логе клиента:

  • SDK и расширения с авто-добавлением /v1: base URL https://api.detta.one;
  • прямой HTTP: полный URL https://api.detta.one/v1/chat/completions.

Чек-лист перед первым запросом​

  • Вы вошли в Dashboard и пополнили баланс.
  • Создан активный ключ dk_... и сохранён в секрет-менеджере.
  • Base URL https://api.detta.one/v1 взят из Dashboard.
  • Модель взята из актуального каталога (Dashboard → Модели).
  • Базовый URL выбран без повторного /v1.
  • Выполнен non-streaming запрос через chat/completions.
  • При необходимости отдельно проверен streaming.
  • Проверено списание баланса после успешного запроса.
  • В логах, скриншотах и файлах, которые попадают в репозиторий, нет ключей и приватных prompt-ов.

Если проблема сохраняется, сообщите поддержке время запроса, способ подключения, endpoint, HTTP-статус и x-request-id. Секреты и содержимое приватного запроса не отправляйте.