Подключение OpenAI-клиентов к Detta
Detta предоставляет OpenAI-совместимый endpoint для клиентов, которые ожидают нативный OpenAI API:
https://api.detta.one/v1
Один API-ключ Detta (dk_...) можно использовать с OpenAI SDK, расширениями в IDE, приложениями с поддержкой OpenAI-compatible API и обычным HTTP-запросом. Ключ создаётся в панели Detta.
Быстрая проверка
- Откройте панель Detta и войдите через Telegram.
- В Dashboard погасите код пополнения, если он у вас есть.
- В разделе API keys создайте ключ.
- Скопируйте ключ сразу: полный ключ показывается только один раз. Base URL
https://api.detta.one/v1также виден в Dashboard рядом с ключами. - Получите актуальный идентификатор модели из каталога: список моделей есть прямо в Dashboard (раздел Модели), либо через
GET https://api.detta.one/v1/models. - Выполните тестовый запрос, приведённый ниже.
Внимание: 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 / API | OpenAI-compatible / OpenAI Completions |
| Base URL | https://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 URLhttps://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. Секреты и содержимое приватного запроса не отправляйте.