Документация API
DubDubAI — OpenAI-совместимый шлюз к 260+ моделям. Если ваш код работает с OpenAI, он заработает с нами после замены base_url и ключа.
1. Базовый URL и ключ
Параметры подключения
base_url: https://dubdub.ru/v1 api_key: sk-dubdub-... ← создаётся в кабинете → API-ключи
2. Первый запрос
curl
curl https://dubdub.ru/v1/chat/completions \
-H "Authorization: Bearer sk-dubdub-..." \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.8-flash",
"messages": [{"role": "user", "content": "Привет!"}]
}'3. Эндпоинты
| Метод и путь | Описание |
|---|---|
| POST /v1/chat/completions | Чат, стриминг, vision |
| GET /v1/models | Список доступных вашему ключу моделей + цены |
| POST /v1/embeddings | Эмбеддинги |
| POST /v1/images/generations | Генерация изображений |
| POST /v1/audio/* | Аудио (speech/transcriptions) |
4. Рассуждения (reasoning)
Для поддерживаемых моделей шлюз прокидывает параметры reasoning_effort ("low" | "medium" | "high") и enable_thinking (bool) — просто добавьте их в тело запроса.
Запрос с рассуждениями
{
"model": "deepseek-r1",
"messages": [
{"role": "user", "content": "Сколько будет 137 × 251?"}
],
"reasoning_effort": "high"
}Работает не на всех моделях: включить режим и оценить глубину рассуждений модель решает сама.
5. Наши дополнения
К ответу мы добавляем объект dubdub со стоимостью запроса и текущим балансом — OpenAI SDK его просто игнорирует. В заголовках всегда приходит X-DubDub-Balance, а при низком балансе — X-DubDub-Balance-Warning: low.
Формат ответа (фрагмент)
{
"choices": [ ... ],
"usage": { "prompt_tokens": 71, "completion_tokens": 2139 },
"dubdub": { "cost": 0.6488, "balance": 29.3512 }
}6. Ошибки и лимиты
| 401 | Нет ключа или ключ неверен |
| 402 | Баланс исчерпан — пополните кодом |
| 403 | Модель недоступна ключу / нужна подписка |
| 404 | Модель не найдена или отключена |
| 429 | Превышен RPM/TPM лимит ключа или месячная квота |
7. Поддержка
Вопросы и проблемы решаем через тикеты в кабинете — отвечаем обычно в течение дня. Забыли пароль? На странице входа есть форма «Забыли пароль?».