Быстрый старт

Подключите приложение к нашему API. Нужны клиентский ключ, адрес сервиса и идентификатор модели.

  1. 1
    URLБазовый адрес
  2. 2
    КлючАвторизация
  3. 3
    ЗапросВызов модели
  4. 4
    ОтветВаш результат
1

Используйте наш базовый URL

Клиентские ключи работают с адресом вашего сервиса, а не напрямую с сайтом поставщика.

https://deep.mir19.ru/v1
Адрес сервиса: https://deep.mir19.ru/v1. Запросы отправляются только на этот адрес.
2

Укажите клиентский API-ключ

Передавайте ключ на своём сервере в заголовке Authorization. Не вставляйте его в публичный JavaScript.

Authorization: Bearer $SERVICE_API_KEY
Храните секрет в переменной окружения или серверном хранилище. Сервис не просит ваш официальный ключ DeepSeek.
3

Отправьте первый запрос

Примеры предназначены для запуска на вашей стороне. Они не выполняются на этой странице.

curl https://deep.mir19.ru/v1/chat/completions \
  -H "Authorization: Bearer $SERVICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-flash",
    "messages": [
      {"role": "user", "content": "Привет! Расскажи о себе."}
    ],
    "max_tokens": 1024
  }'
4

Получите ответ

После настройки реального сервера прочитайте текст в choices[0].message.content. Поле usage содержит фактические токены, а не списание из вашего пакета.

Следующий шаг: проверьте остаток пакета после тестового запроса. Открыть проверку ключа

Бот в Telegram

Если писать код не хочется, тот же пакет можно расходовать прямо в чате: бот @deepmir19bot работает на вашем ключе, а не на отдельном тарифе.

  1. Откройте @deepmir19bot и напишите привет или /start.
  2. Пришлите свой ключ sk-… — тот же, что и для API. Ключ никому не пересылайте: кто его знает, тот расходует ваш пакет.
  3. Через 1–2 минуты среда готова, дальше просто задавайте вопросы.
Команды бота
КомандаЧто делает
/helpКраткая справка
/resetНачать новый диалог: контекст переписки очищается, среда и память сохраняются
/token sk-…Заменить ключ (например, после покупки нового пакета) — среда и память остаются
/statusСостояние среды и остаток пакета
/supportОбращение в поддержку: вопрос увидят операторы сервиса, ответ придёт в этот же чат

Приватность. У каждого клиента отдельная изолированная среда: диалоги, файлы и память не видны другим клиентам и не смешиваются с ними.

Расход. Сообщения бота списываются из вашего пакета по тем же ставкам, что и запросы к API. Остаток и историю смотрите в кабинете.

Продление. Купите новый пакет и пришлите его ключ прямо в чат бота — он погасит ключ сам, объём прибавится к вашему остатку, среда и настройки сохранятся. Так же можно погасить ключ в кабинете, в блоке «Продление новым ключом».

Если пакет закончился, бот сообщит об этом и агент перестанет отвечать. Через 3 дня среда останавливается (данные сохраняются), через 14 дней — удаляется. Продлить можно в любой момент до удаления: среда включится сама.

Поддержка. Напишите /support ваш вопрос прямо в чате бота: обращение увидит оператор, ответ придёт в этот же чат. К сообщению можно приложить скриншот, а детали дописать реплаем на сообщение об обращении.
Если бот недоступен — напишите в чат на сайте (кнопка в правом нижнем углу любой страницы) или в разделе поддержки.

Что умеет ассистент в боте

Кроме обычного диалога ассистент работает с файлами и делает готовые документы. Достаточно попросить словами — специальных команд не нужно.

Возможности
Что нужноЧто делает ассистент
ДокументыСоздаёт и правит файлы Word, Excel, PDF и презентации: сметы, таблицы, отчёты, коммерческие предложения
Сканы и фотоРаспознаёт текст с фотографии или скана документа (русский и английский) и отдаёт результат текстом или таблицей
ГолосПринимает голосовые сообщения и может отвечать голосом
ВидеоРазбирает видео по ссылке: субтитры, расшифровка, краткое содержание
Схемы и графикиСтроит схемы, диаграммы, графики, инфографику и макеты для презентаций
НапоминанияСтавит регулярные задачи и напоминания: «каждый день в 9 присылай сводку»
ИсследованиеИщет информацию в интернете, разбирает статьи и страницы, следит за ценами и новостями конкурентов
Код и GitПомогает с кодом, разбирает репозитории, готовит pull request и ревью
Каждый клиент работает в отдельной изолированной среде: ваши диалоги, файлы и память не видны другим клиентам.

Идентификаторы моделей

Доступны deepseek-flash и deepseek-v4-pro. Точный список для вашего доступа возвращает GET /v1/models.

Открыть описание моделей

Как расходуется пакет

Обычный вход, кешированный вход и выход умножаются на отдельные коэффициенты модели и периода. Фактический usage не подменяется этими значениями.

Правила и калькулятор

Потоковый ответ

Для согласованного серверного API передайте "stream": true. При реализации обязательно обработайте разрыв соединения и окончательные данные об использовании.

Повтор запроса после обрыва не гарантирует отсутствие повторного расхода. Не отправляйте автоматический повтор без проверки статуса операции.

Обработка ошибок

Ниже — как отвечает сервис. Тело ошибки объясняет причину и содержит безопасный идентификатор запроса. За неудачный запрос списание не производится.

Ошибки клиентского API
HTTPПричинаДействие
400Некорректный запросПроверьте поля
401Ключ не принятПроверьте ключ и адрес
402Объём пакета исчерпан или остатка не хватает на запросПроверьте остаток, при исчерпании — пополните
403Модель или доступ запрещеныПроверьте разрешения
429Превышено число одновременных запросовПовторите запрос позже
502Поставщик модели недоступенПовторите позже, списание не производится
503Временная недоступностьПроверьте статус

Ограничения доступа

Разрешённые модели и объём задаются условиями вашего пакета. Действующие пакеты — бессрочные: объём расчётных токенов не сгорает по календарю, отсчёт идёт с первого платного запроса. Не считайте несколько ключей дополнительным балансом.

Пределы запроса соответствуют официальному DeepSeek: длина контекста — до 1 000 000 токенов, максимум выхода — 384 000 токенов на запрос (по умолчанию 4096, если max_tokens не указан). Лимита частоты у нас нет — так же, как в оригинальном DeepSeek: счётчика «запросов в минуту» на ключ не существует, ограничивать себя искусственно не нужно. Одновременность считается не на ключ, а на весь аккаунт поставщика: при исчерпании его ёмкости (2 500 одновременных запросов для Flash и 500 для V4-Pro) запрос вернётся с 429 и заголовком Retry-After — повторите позже, списание за отклонённый запрос не производится. Каждый ключ получает у поставщика отдельный user_id, поэтому кеш и проверки одного покупателя не пересекаются с другими. Остаток и разрешённые модели показывает проверка ключа.

Безопасность ключа

Не передавайте ключ в URL, чат поддержки, скриншоты и общедоступный репозиторий. Для разбора ошибки достаточно номера заказа и безопасного ID запроса.

Ключ утёк? Обратитесь к продавцу для замены доступа. Замена ключа не должна создавать новый пакет.

Остаток пакета по API

Остаток можно смотреть из своих скриптов, не заходя в кабинет. Запрос бесплатный: объём не расходуется.

curl -H "Authorization: Bearer sk-…" https://deep.mir19.ru/v1/balance
Поля ответа остатка
Поле ответаЧто означает
available_unitsСколько расчётных токенов осталось — это число показывает кабинет
consumed_unitsСколько уже израсходовано с начала пакета
granted_unitsСколько начислено по вашему пакету
available_atomsТочный внутренний остаток (1 расчётный токен = 150 атомов)
is_availabletrue, если по ключу можно отправлять запросы
modelsМодели, доступные именно по вашему ключу
expires_atСрок пакета; null — пакет бессрочный
Тот же остаток с историей запросов — в кабинете: Проверить ключ. Отдельный счётчик на каждый ключ не ведётся: объём считается по вашему доступу целиком.

Подключение программ и редакторов

Наш адрес совместим с OpenAI API, поэтому подходит любой клиент, который умеет «OpenAI Compatible». Ниже — проверенные настройки для популярных программ. Общие значения одинаковы везде:

Общие значения для всех программ
ПараметрЗначение
Базовый адрес (Base URL)https://deep.mir19.ru/v1
Ключ доступаваш ключ вида sk-… (35 знаков)
Заголовок авторизацииAuthorization: Bearer sk-… — принимаем также x-api-key
Моделиdeepseek-flash (быстрая и дешёвая), deepseek-v4-pro (сильнее на сложных задачах)
КодировкаUTF-8, без VPN: адрес работает напрямую из России

Cline (VS Code)

  1. Установите расширение Cline в VS Code или Cursor.
  2. Откройте Cline и нажмите шестерёнку (⚙️) справа сверху.
  3. В поле API Provider выберите OpenAI Compatible.
  4. Заполните: Base URL https://deep.mir19.ru/v1, API Key — ваш ключ, Model ID — deepseek-flash (или deepseek-v4-pro).
  5. Закройте настройки и напишите сообщение — если ответ пришёл, всё готово.

Kilo Code (VS Code)

  1. Установите расширение Kilo Code.
  2. Настройки (⚙️) → ProvidersCustom Provider.
  3. Provider ID — deepseek-portal, Display Name — любое, Provider API — OpenAI Compatible.
  4. Base URL — https://deep.mir19.ru/v1, API Key — ваш ключ, Model ID — deepseek-flash.
  5. Submit → выберите провайдера и модель в окне чата.

GitHub Copilot (VS Code)

  1. Copilot Chat → ModelManage ModelsAdd ModelsCustom Endpoint.
  2. Group Name — любое, API Key — ваш ключ, тип — Chat Completions.
  3. Модель: Id — deepseek-flash, Name — DeepSeek Flash, Url — https://deep.mir19.ru/v1.
  4. Сохраните и выберите модель в списке чата.

Opencode (терминал)

Создайте файл ~/.config/opencode/config.json:

config.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "deepseek/deepseek-flash",
  "provider": {
    "deepseek": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "DeepSeek API",
      "options": {
        "baseURL": "https://deep.mir19.ru/v1",
        "apiKey": "ваш ключ sk-…"
      },
      "models": {
        "deepseek-flash": { "id": "deepseek-flash", "name": "DeepSeek Flash" },
        "deepseek-v4-pro": { "id": "deepseek-v4-pro", "name": "DeepSeek V4 Pro" }
      }
    }
  }
}

Запуск: opencode — или разово: opencode run "вопрос" --model deepseek/deepseek-flash.

Opencode Desktop

  1. Настройки (⚙️) → ProviderCustom ProviderConnect.
  2. Provider ID — deepseek-portal, Display name — DeepSeek API, Base URL — https://deep.mir19.ru/v1.
  3. API key — ваш ключ, Model — deepseek-flash, Model display name — любое.
  4. Submit → выберите провайдера и модель в чате.

Chatbox AI (телефон)

  1. Установите Chatbox AI (iOS/Android), откройте Настройки.
  2. Model Provider → «+» → Custom Provider.
  3. Name — DeepSeek API, API Mode — OpenAI API Compatible, API Key — ваш ключ, API Host — https://deep.mir19.ru/v1.
  4. Добавьте модель deepseek-flash и сохраните. Если сеть мобильная капризная — включите «Improve Network Compatibility».

Codex CLI

Наш шлюз обслуживает Chat Completions. В ~/.codex/config.toml укажите адрес и режим wire_api = "chat":

config.toml
model = "deepseek-v4-pro"
model_provider = "deepseek"

[model_providers.deepseek]
name = "DeepSeek API"
base_url = "https://deep.mir19.ru/v1"
wire_api = "chat"
env_key = "DEEPSEEK_API_KEY"

Ключ в окружении: export DEEPSEEK_API_KEY="sk-…" — затем codex "ваш вопрос".

Свежие сборки Codex требуют режим Responses (wire_api = "responses"), которого у нас нет — мы отдаём Chat Completions. Если ваша версия поддерживает только Responses, работайте через Cline, Opencode или свой скрипт.

Kimi Code CLI

Файл ~/.kimi-code/config.toml:

config.toml
default_model = "deepseek-v4-pro"

[providers.deepseek]
name = "DeepSeek API"
type = "openai"
base_url = "https://deep.mir19.ru/v1"
api_key = "ваш ключ sk-…"

[models."deepseek-v4-pro"]
provider = "deepseek"
model = "deepseek-v4-pro"
max_context_size = 1000000

[models."deepseek-flash"]
provider = "deepseek"
model = "deepseek-flash"
max_context_size = 1000000

Pi Coding Agent

Файл ~/.pi/agent/models.json (и его копия в ~/.pi/models.json):

models.json
{
  "providers": {
    "deepseek": {
      "baseUrl": "https://deep.mir19.ru/v1",
      "api": "openai-completions",
      "apiKey": "ваш ключ sk-…",
      "models": [
        { "id": "deepseek-flash", "name": "DeepSeek Flash" },
        { "id": "deepseek-v4-pro", "name": "DeepSeek V4 Pro" }
      ]
    }
  }
}

Проверка и запуск: pi --list-models, затем pi --provider deepseek --model deepseek-flash "вопрос".

Hermes Agent

Если вы ставите Hermes Agent, подключите наш адрес как свой источник модели:

  1. Установка: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
  2. Настройка модели: hermes modelCustom endpoint → адрес https://deep.mir19.ru/v1, ключ sk-…, модель deepseek-v4-pro, режим совместимости Chat Completions.
  3. Проверка: hermes -z "проверка связи".

Или вручную в ~/.hermes/config.yaml:

config.yaml
model_provider: custom
custom_provider:
  base_url: "https://deep.mir19.ru/v1"
  api_key: "ваш ключ sk-…"
  model: "deepseek-v4-pro"
  context_window: 1000000

Свои скрипты: Python и Node.js

Подходит официальный SDK OpenAI — достаточно подменить адрес:

Python
from openai import OpenAI

client = OpenAI(
    base_url="https://deep.mir19.ru/v1",
    api_key="sk-…",  # ваш ключ
)

answer = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Привет!"}],
    max_tokens=300,  # модель сначала «думает»: 200–300 и больше
)
print(answer.choices[0].message.content)
Node.js
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://deep.mir19.ru/v1",
  apiKey: "sk-…", // ваш ключ
});

const answer = await client.chat.completions.create({
  model: "deepseek-flash",
  messages: [{ role: "user", content: "Привет!" }],
  max_tokens: 300,
});
console.log(answer.choices[0].message.content);
Claude Desktop и Claude Code CLI здесь не подойдут: они работают по протоколу Anthropic, а у нас OpenAI-совместимый адрес. Для них нужен отдельный шлюз-переходник.

Вызов инструментов (function calling)

Модели поддерживают function calling в стандарте OpenAI: описания инструментов уходят в поле tools, а вызов возвращается структурой tool_calls — и в обычном ответе, и в потоке.

  • Обычный ответ: choices[0].message.tool_calls[] — имя функции и аргументы в JSON.
  • Поток: вызов приходит кадрами choices[0].delta.tool_calls[], аргументы набираются по частям.
  • Размышление: если модель вернула reasoning_content, отправлять его обратно не нужно — шлюз подставит сам.
  • Редкий случай: если модель всё же написала вызов текстом, шлюз приводит его к tool_calls перед отдачей клиенту.

Цикл инструментов целиком (Python)

tools.py
import json
from openai import OpenAI

client = OpenAI(base_url="https://deep.mir19.ru/v1", api_key="sk-…")

tools = [{"type": "function", "function": {
    "name": "get_weather",
    "description": "Погода в городе",
    "parameters": {"type": "object",
                   "properties": {"city": {"type": "string"}},
                   "required": ["city"]}}}]

messages = [{"role": "user", "content": "Какая погода в Красноярске?"}]
answer = client.chat.completions.create(model="deepseek-flash", messages=messages, tools=tools)
message = answer.choices[0].message
messages.append(message)

for call in message.tool_calls or []:
    result = get_weather(**json.loads(call.function.arguments))  # ваша функция
    messages.append({"role": "tool", "tool_call_id": call.id,
                     "content": json.dumps(result, ensure_ascii=False)})

final = client.chat.completions.create(model="deepseek-flash", messages=messages, tools=tools)
print(final.choices[0].message.content)
Что учесть. Значения tool_choice: auto и none. Значение required модель не поддерживает — вернётся понятная ошибка 400. Параллельные вызовы в одном ответе поддерживаются (parallel_tool_calls). Описания инструментов уходят поставщику в каждом запросе и входят в расход входа, поэтому компактные схемы дешевле.

Hermes Agent

Hermes Agent подключает наш адрес как обычного OpenAI-совместимого провайдера — секцией custom_providers в файле конфигурации профиля. Переустановка агента не нужна: добавляете блок и перезапускаете шлюз профиля.

Шаг 1. Ключ и остаток пакета

Ключ выдаётся в формате sk-… (35 знаков). Проверьте, что он принят и пакет доступен:

curl
curl -H "Authorization: Bearer sk-ваш-ключ" https://deep.mir19.ru/v1/balance

Ответ:

json
{
  "object": "balance",
  "is_available": true,
  "available_units": "15001000.6",
  "consumed_units": "2959.4",
  "granted_units": "15003960",
  "available_atoms": 2250150000,
  "unit": "расчётный токен",
  "models": ["deepseek-flash", "deepseek-v4-pro"],
  "expires_at": null
}

Важны is_available: true, остаток available_units и нужная модель в списке models.

Шаг 2. Найдите конфигурацию профиля

пути
~/.hermes/profiles/<профиль>/config.yaml
~/.hermes/config.yaml            # профиль по умолчанию

Если профилей несколько (например, несколько ботов на одном сервере), правьте тот, в котором должна появиться модель: у каждого профиля своя конфигурация и свой шлюз.

Шаг 3. Добавьте провайдера в конфигурацию

В конец файла (или в существующую секцию, если она уже есть):

config.yaml
model:
  default: deepseek-flash
  provider: custom:deepseek-mir19

custom_providers:
  - name: deepseek-mir19
    base_url: https://deep.mir19.ru/v1
    api_key: sk-ваш-ключ
    model: deepseek-flash
    context_length: 1000000
  • name — идентификатор провайдера внутри Hermes: в списке моделей он показывается как custom:deepseek-mir19.
  • provider: custom:<name> — формат именно такой, с префиксом custom: и тем же именем, что в custom_providers.
  • model — точное имя нашей модели: deepseek-flash или deepseek-v4-pro. Суффиксы вида «(1)» из интерфейсов в конфиг не переносятся.
  • context_length — окно контекста (у нас 1 000 000). Поле context_window эта версия Hermes не читает, смысла в нём нет.
  • Ключ лежит в файле открытым текстом — держите на нём права 600.

Шаг 4. Перезапустите шлюз профиля

перезапуск
hermes --profile <профиль> gateway restart

# если профиль работает под systemd:
systemctl restart hermes-gateway-<профиль>

Шаг 5. Проверьте подключение

Быстрая проверка из терминала — без сессии и истории:

проверка
hermes --profile <профиль> -m deepseek-flash --provider custom:deepseek-mir19 -z "привет"

Если модель ответила — интеграция рабочая. В чате: /new (свежая сессия), затем /modeldeepseek-mir19deepseek-flash и любое сообщение.

Шаг 5.1. Как сменить модель прямо в чате бота

Модель переключается командой /model — править конфигурацию и перезапускать бота не нужно. В Telegram и Discord команда открывает выбор кнопками (сначала провайдер, затем модель), в остальных каналах печатает список текстом.

  • /model — открыть выбор модели для текущего диалога.
  • /model deepseek-v4-pro — переключить на эту модель (действует на сессию).
  • /model deepseek-flash --once — только на следующий ответ, дальше вернётся прежняя.
  • /model deepseek-v4-pro --global — записать выбор в config.yaml: сохранится и после /new, и после перезапуска бота.
  • /model --provider custom:deep-mir19 — сменить провайдера (в среде клиентского бота шлюз называется custom:deep-mir19; в своём профиле Hermes — имя из вашего блока custom_providers).
  • /model --refresh — заново запросить список доступных моделей у шлюза (/v1/models).

Доступные имена — deepseek-flash и deepseek-v4-pro. Ответ 404 model_not_allowed значит, что модель написана иначе или не входит в ваш пакет; сверьте имя в /v1/models.

Проверено на живом адресе: агент с полным набором инструментов (21 функция) отвечает нормально, включая вызовы инструментов. Описания инструментов уходят поставщику как есть, вызов возвращается в tool_calls; если модель всё же напишет вызов текстом своей внутренней разметкой, шлюз сам приведёт его к tool_calls. Возвращать reasoning_content при обратном вызове не нужно — шлюз подставляет его сам.

Шаг 6. Несколько профилей и ботов на одной машине

У каждого профиля Hermes своя конфигурация, свой шлюз и своя история. Ключ заводите отдельный на каждого бота — так расход по каждому будет виден в кабинете отдельно.

профили
# список профилей и их конфигураций
hermes profile list

# настройки нужного профиля (профиль по умолчанию — ~/.hermes/config.yaml,
# остальные — ~/.hermes/profiles/<профиль>/config.yaml)
hermes --profile <профиль> config set model.default deepseek-v4-pro
hermes --profile <профиль> config set model.provider custom:deepseek-mir19

# список провайдеров задаётся одной строкой JSON
hermes --profile <профиль> config set custom_providers '[{"name":"deepseek-mir19","base_url":"https://deep.mir19.ru/v1","api_key":"${DEEP_MIR19_KEY}","model":"deepseek-v4-pro","context_length":1000000}]'

# проверка до перезапуска бота
hermes --profile <профиль> -z "привет"

Если проверка ответила моделью — конфигурация верна, остаётся перезапустить шлюз профиля (шаг 4).

Ключ — в .env, конфигурация — без секретов

Ключ можно не писать в конфиг открытым текстом: положите его в .env профиля и сошлитесь на переменную.

.env + config.yaml
# ~/.hermes/profiles/<профиль>/.env   (права 600)
DEEP_MIR19_KEY=sk-ваш-ключ

# config.yaml
custom_providers:
  - name: deepseek-mir19
    base_url: https://deep.mir19.ru/v1
    api_key: ${DEEP_MIR19_KEY}
    model: deepseek-v4-pro
    context_length: 1000000

Если сторонний провайдер упёрся в лимиты

Частая история: бот работал на другом поставщике и замолчал — тот вернул 429 rate_limit_error и исчерпал квоту. Наш адрес можно сделать основным, а прежнего поставщика оставить резервом:

config.yaml
model:
  default: deepseek-v4-pro
  provider: custom:deepseek-mir19
  fallback: <ваша-прежняя-модель>

Hermes возьмёт нашу модель первой, а к резервной обратится только при недоступности нашей. После правки — перезапуск шлюза профиля.

Что учесть при работе через Hermes

  • У нас Chat Completions, Responses API нет — интеграциям нужен режим chat. Codex CLI, которому требуется wire_api = "responses", работать не будет (см. раздел про Codex выше).
  • tool_choice: поддерживаются auto и none; значение required модель не поддерживает — вернётся понятная ошибка 400.
  • При max_tokens меньше ~200 ответ может прийти пустым: бюджет расходуется на размышление модели. Ставьте 300 и больше.
  • Историю сообщений можно отправлять как есть: пустой content у шага с вызовом инструмента шлюз приводит к принимаемому виду.
  • Первое сообщение после переключения модели лучше отправлять в новой сессии (/new) — так в истории не остаётся сообщений, собранных под другую модель.

Пределы и лимиты

  • Контекст — до 1 000 000 расчётных токенов.
  • Ответ — до 393 216 токенов (384K) за запрос; по умолчанию 4 096, если max_tokens не указан.
  • Тело запроса — до 32 МБ.
  • Лимита частоты на ключ нет: число запросов в секунду мы не ограничиваем.
  • Одновременность — 2 500 запросов для deepseek-flash и 500 для deepseek-v4-pro: это потолок аккаунта поставщика, справочное значение.
  • Пакет бессрочный: объём не сгорает по календарю, отсчёт идёт с первого платного запроса.
  • При перегрузке возвращается 429 с заголовком Retry-After, списание не производится.

Частые ошибки

  • 401 — ключ не принят: проверьте, что api_key записан целиком, без обрезки.
  • 402 — пакет исчерпан: сверьте available_units запросом /v1/balance.
  • 400max_tokens больше допустимого предела.
  • 404 — модель не найдена: допустимы только deepseek-flash и deepseek-v4-pro.
  • 413 — тело запроса больше 32 МБ.
  • 422 — формат тела запроса: в ответе перечислены поля, которые надо поправить.
  • 429 — перегрузка: подождите Retry-After, конфиг менять не нужно.
  • «Unknown provider 'custom:…'» — имя в provider не совпадает с name в custom_providers либо правлен не тот профиль.
  • 502/503 — недоступен наш шлюз: повторите запрос позже.
  • Конфиг поправлен, а бот отвечает по-старому — шлюз профиля не перезапущен: конфигурация читается при старте. Перезапускайте из обычной оболочки (systemctl restart hermes-gateway-<профиль>); изнутри самого агента команда намеренно блокируется.
  • 401 после правки конфига — в api_key попала маска вместо ключа. Так бывает, если ключ читали командой, вывод которой маскируется (например cat в CI или в чате бота): вставьте ключ из файла целиком.

Частые ошибки

Частые ошибки клиентского API
ОтветПричинаЧто делать
401 invalid_api_keyКлюч не передан, отозван или отключёнПроверьте заголовок Authorization: Bearer sk-… без лишних пробелов
402 insufficient_creditsОплаченный объём израсходован или не хватает на запросУменьшите max_tokens либо пополните пакет: остаток виден в кабинете и в /v1/balance
404 model_not_allowedМодель не входит в ваш пакет или написана иначеСверьте имя с /v1/models: deepseek-flash, deepseek-v4-pro
400 max_tokens_too_largeЗапрошен выход больше потолка — 393 216 токенов; в поле max_tokens значение пишется без разделителей: 393216Уменьшите max_tokens (обычно достаточно 4096)
Пустой текст ответаМодель потратила весь лимит на внутреннее рассуждениеПоднимите max_tokens до 200–300 и выше
429Перегрузка на стороне поставщикаПовторите запрос через пару секунд: списания за отказ нет
Ответ обрываетсяТело запроса слишком большое либо поток прервала сетьДержите тело до 32 МБ, включите повтор в клиенте
Состояние шлюза и моделей — страница состояния. Если проблема не разбирается, напишите в поддержку: Контакты. В обращение вставьте время ошибки и код ответа, сам ключ не присылайте.