DeepSeek API из России в 2026: ключ, base_url и проверка первого ответа
Подключить DeepSeek API из России в 2026 году можно двумя путями: напрямую через платформу DeepSeek или через российский шлюз вроде Provod, где ключ выпускается в рублёвом кабинете, а запрос уходит на совместимый адрес. В обоих случаях первый вызов считается удачным только тогда, когда модель вернула ровно тот текст, который вы попросили, а в ответе видны поля расхода.
Ниже разберём, какой ключ и base_url подставлять, как выглядит минимальный безопасный запрос и где искать usage, чтобы понимать, во что обходится каждая строчка.
Чат, прямой API и вызов через шлюз: три разные проверки
Начнём с того, что часто путают. Официальным веб-чатом DeepSeek из России пользоваться можно, это подтверждают публичные данные, а в мае Роскомнадзор сообщил Интерфаксу, что ограничений против сервиса не вводил. О том, как выглядит доступ к DeepSeek у нас, писали и в РБК Трендах.
Только вот открытый чат ничего не говорит о вашем коде. Чат, прямой DeepSeek API и вызов DeepSeek через шлюз живут каждый своей жизнью: у них разные ключи, разные адреса, разная оплата и разные причины отказа. Если чат работает, а скрипт падает, это нормальная ситуация, и чинить её надо в своём слое.
Поэтому дальше я буду держать в голове три вопроса, на которые отвечает первый запрос: какой ключ и адрес использовать, что считать успешным ответом и где посмотреть usage. Если на все три есть ответ, интеграция стоит на ногах, и можно идти писать бизнес-логику.
Ключ и base_url: что куда подставлять
Любой OpenAI-совместимый клиент просит у вас всего четыре вещи: ключ, базовый адрес, идентификатор модели и сообщение. Запутаться можно в каждой, поэтому разложу по маршрутам.
Прямой DeepSeek API по официальной документации выглядит так:
- base_url: https://api.deepseek.com, метод /chat/completions, для формата Anthropic отдельный адрес https://api.deepseek.com/anthropic;
- ключ создаётся в кабинете платформы DeepSeek, условия пополнения и оплаты для российского аккаунта сверяйте там же и отдельно от доступности чата;
- модели на ноябрь 2026 года: deepseek-v4-flash и deepseek-v4-pro, а старые имена deepseek-chat и deepseek-reasoner документация переводила на режимы deepseek-v4-flash и объявляла к отключению 24 июля 2026 года.
Через Provod маршрут похож, меняются только адрес и ключ. Ключ выпускается на странице API Provod в кабинете вашего пространства, полностью показывается один раз, так что копируйте его сразу и кладите в переменную окружения. Базовый адрес для OpenAI-совместимых клиентов: https://api.provod.ai/v1, метод тот же, Chat Completions. Авторизация обычная, заголовок Authorization: Bearer.
С идентификатором модели осторожнее всего. В каталоге Provod на 11.11.2026 у DeepSeek шесть текстовых моделей, среди них deepseek-v4-flash, deepseek-v4-pro и deepseek-v4.1-flash, все с контекстом около миллиона токенов. Но документация по выбору модели прямо просит копировать поле id из ответа GET /v1/models для своего пространства: имя на сайте или старый скриншот здесь плохие подсказки. В том же ответе есть поле available: если там false, рядом стоит причина, и для части моделей в личном пространстве это FIRST_TOP_UP_REQUIRED, то есть модель откроется после первого реального пополнения.
Минимальный запрос: одна строка, которую модель должна вернуть
Для первого вызова не нужен ни промт на три абзаца, ни стриминг. Нужен самый скучный запрос на свете: попросите модель вернуть заранее заданную строку и больше ничего. Тогда проверка ответа сводится к сравнению двух строк, и вы сразу видите, где сломалось.
Пример ниже документационный: он собран по опубликованному описанию Chat Completions в Provod, в рамках этой статьи запрос не запускался, поэтому вывод модели в нём не показан. Ключ берётся из переменной окружения, в коде его нет.
То же самое на Python через официальный SDK OpenAI, где меняется только base_url:
Для прямого DeepSeek API код тот же, только base_url="https://api.deepseek.com" и ключ платформы DeepSeek. Параметр max_tokens ограничивает длину ответа, и это ваша страховка на случай, если модель решит поговорить. Учтите, что поддержка параметров зависит от модели: список смотрите в поле supported_parameters каталога.
Как прочитать ответ: три признака, что запрос сработал
Код 200 сам по себе ничего не доказывает. Сервер может честно ответить 200 и вернуть пустую строку, обрезанный текст или ответ другой модели, если вы указали алиас. Основатель Provod Александр Нестеров предлагает простой метод: проверять содержимое ответа, а статус считать только пропуском к этой проверке. Я бы смотрел на три вещи подряд.
Первое: текст. Он лежит в choices[0].message.content, и там должна стоять ваша строка PROVOD-OK-2026 без лишних слов. Пришло что-то похожее, но с пояснениями, значит модель работает, а вот инструкцию надо формулировать жёстче, это пригодится и в бою.
Второе: завершённость. Поле finish_reason со значением stop означает, что модель закончила сама. Если там length, ответ упёрся в ваш max_tokens, и текст может быть обрезан на полуслове, что для первого запроса ещё не трагедия, а вот для рабочего сценария уже повод поднять лимит.
Третье: модель. Поле model в ответе показывает, кто на самом деле отвечал. Если вы просили одну модель, а там другая, лучше выяснить это на тестовой строке, чем на счёте за месяц.
Где смотреть usage и сколько стоит первый вызов в рублях
Теперь деньги. В ответе Chat Completions есть блок usage с полями prompt_tokens, completion_tokens и total_tokens: это сколько токенов ушло на вопрос, на ответ и всего. По описанию учёта использования Provod добавляет туда же фактическое списание: usage.cost и валюту в usage.currency, а точная строка итоговой суммы лежит в provod.billing.total_charge.
Токены и рубли полезно считать отдельными наблюдениями. Токены говорят, сколько модель прочитала и написала, рубли говорят, сколько с вас списали, и между ними стоит тариф, кэш и рассуждения. Документация отдельно предупреждает, что токены рассуждений входят в стоимость всегда, даже если отдельной строки под них в ответе нет, а итоговая сумма запроса видна в разделе «Использование» вашего пространства.
Для ориентира: по публичному прайсу Provod на 11.11.2026 у deepseek-v4-flash вход стоит 54,56 ₽ за миллион токенов, выход 163,67 ₽, а у deepseek-v4.1-flash 24,80 ₽ и 99,19 ₽. Наш тестовый запрос укладывается в несколько десятков токенов, так что по этим ставкам он стоит доли копейки. Прайс при этом не обещает цену навсегда и не гарантирует наличие модели завтра, поэтому финальную цифру берите из usage.cost и раздела «Использование».
Есть ещё один нюанс, на котором спотыкаются при первом пополнении. Перед запросом с баланса резервируется сумма, и доступный остаток временно меньше общего. Резерв не равен списанию: если запрос упал до ответа модели, резерв возвращается целиком. Подробности про пополнение картой, СБП или счётом для ООО и ИП собраны на странице баланса и пополнения.
Что чаще всего ломает первый запрос
Большинство неудачных первых вызовов DeepSeek API ломаются на одном из пяти мест, и все они видны ещё до того, как вы начнёте подозревать модель.
- Старое имя модели. Если в коде остался deepseek-chat из прошлогодней статьи, сверьте его с актуальным каталогом выбранного маршрута.
- Чужое пространство. Ключ создан в личном пространстве, а пополнен баланс организации, или наоборот: у каждого пространства свой баланс, свои ключи и своя история.
- Модель недоступна именно вам. Поле available в GET /v1/models подскажет, и причина там тоже написана.
- Ключ в клиентском коде. Ключ, который уехал в браузер или мобильное приложение, считайте скомпрометированным: держите его на сервере и выпускайте отдельный ключ на каждый проект.
- Смешанные форматы. Тело запроса в стиле Anthropic Messages, отправленное на адрес Chat Completions, вернёт ошибку, хотя оба формата у шлюза есть.
Разбор конкретных кодов ошибок, когда запрос всё-таки не прошёл, тянет на отдельный текст, здесь важнее другое: если тестовая строка вернулась целиком, finish_reason равен stop, а в usage видны токены и рубли, первый запрос сработал.
Коротко: что проверить на первом вызове
Официальный чат DeepSeek из России открывается, но доступность чата ничего не говорит о работе DeepSeek API в вашем коде.
Для прямого DeepSeek API базовый адрес https://api.deepseek.com, для вызова через Provod https://api.provod.ai/v1, ключи у маршрутов разные.
Идентификатор модели берите из GET /v1/models своего пространства, старые имена deepseek-chat и deepseek-reasoner документация DeepSeek выводила из оборота.
Минимальный запрос с заданной строкой и max_tokens превращает проверку первого ответа в сравнение двух строк.
Успешный ответ подтверждают три поля: текст в choices[0].message.content, finish_reason со значением stop и model с той моделью, которую вы просили.
Расход смотрите отдельно в токенах из usage и в рублях из usage.cost и раздела «Использование», потому что резерв и итоговое списание различаются.
Если хочется пройти этот путь руками, проще всего выпустить ключ на странице API Provod, пополнить баланс на небольшую сумму и отправить ту самую тестовую строку: в ответе будет текст, модель и цена первого запроса в рублях.
Подробнее:
А вы как проверяете первый вызов новой модели: смотрите только на 200 или сверяете текст и расход? Расскажите в комментариях.