Для работы с DeepSeek через API нужен не только аккаунт на платформе, но и отдельный ключ доступа — строка, которая начинается с sk-. Без неё любой запрос к api.deepseek.com вернёт ошибку аутентификации, даже если на балансе есть деньги. Ниже — последовательность действий от регистрации до первого рабочего запроса, с проверкой на каждом этапе и разбором мест, где чаще всего спотыкаются.
Понадобится почта или Google-аккаунт, доступ к платёжному средству для пополнения (если планируете выходить за пределы стартового баланса) и минимальный набор инструментов: терминал с curl или Python с установленным пакетом openai.
Регистрация на platform.deepseek.com
Откройте platform.deepseek.com — это отдельный портал для разработчиков, он не совпадает с основным сайтом DeepSeek и чат-интерфейсом. Нажмите Sign Up, укажите email и пароль либо войдите через существующий Google-аккаунт.
После регистрации платформа попросит подтвердить почту — без этого шага создание ключа будет недоступно. Письмо приходит в течение пары минут; если его нет, проверьте папку «Спам», у некоторых корпоративных почтовых фильтров письма от DeepSeek попадают туда.
Важный момент по доступности: DeepSeek ограничивает регистрацию для ряда стран и территорий. Если при попытке входа вы видите сообщение о недоступности сервиса в вашем регионе, дело не в настройках браузера и не в VPN на стороне провайдера — платформа блокирует доступ на уровне аккаунта.
После подтверждения почты вы попадаете в консоль. В левом меню видны разделы API Keys, Usage (расход и баланс) и Top up (пополнение). Пока ключей нет, список в API Keys пуст — это нормальное состояние.
Создание API-ключа
В разделе API Keys нажмите Create new API key. Платформа попросит ввести имя ключа — оно нужно только для вашего удобства, чтобы позже отличать ключи для разных проектов или окружений. Если планируете использовать DeepSeek в нескольких сервисах, давайте ключам осмысленные имена вроде prod-backend или local-dev: при компрометации одного ключа вы удаляете только его, не затрагивая остальные.
После нажатия Create API key платформа покажет сгенерированную строку. Скопируйте её сразу — повторно увидеть значение нельзя. Если закрыть окно, не сохранив ключ, придётся генерировать новый: в целях безопасности платформа хранит только хеш, а не сам ключ.
Ключ выглядит как длинная строка, начинающаяся с sk-. Сохраните его в менеджере секретов или хотя бы в защищённом файле вне репозитория. Распространённая ошибка — отправить ключ в чат коллеге или сохранить в публичном GitHub-гисте «на минутку»: такие ключи сканеры находят за минуты, а расход на чужой трафик списывается с вашего баланса.
Пополнение баланса и проверка биллинга
Созданный ключ сам по себе не даёт бесплатных запросов. DeepSeek тарифицирует API по токенам: входные и выходные токены считаются отдельно, а цена зависит от модели и от того, попадает ли запрос в пиковые часы. Когда баланс нулевой, запросы возвращают HTTP 402 Insufficient Balance.
Перейдите в Top up. Для российских пользователей доступные способы пополнения стоит проверить на странице оплаты в момент входа — платформа поддерживает карты и электронные кошельки в зависимости от региона. Минимальная сумма пополнения обычно невелика, для тестов хватает нескольких долларов: deepseek-flash на cache miss стоит $0.15 за миллион входных токенов в непиковые часы, так что бюджет на первые эксперименты получается скромным.
Пиковые часы, если планируете считать расход заранее, — это 01:00–04:00 и 06:00–10:00 UTC по будням (китайские праздники не считаются). Всё остальное время действует пониженная ставка, обычно вдвое ниже пиковой. Для тестовых запросов это неважно, а вот при пакетной обработке разница в счёте заметна.
Отдельно проверьте в Usage, есть ли у аккаунта granted balance — стартовый или промо-баланс. Если он есть, списания сначала идут с него, и только потом с пополненного. Не полагайтесь на старые скриншоты из туториалов, где фигурируют конкретные суммы «бесплатных токенов»: условия меняются, смотреть нужно на свою страницу Usage.
Пополнение через банковский перевод для юрлиц доступно только после корпоративной верификации и идёт дольше — от десяти минут до часа. Для физического лица проще карта.
Проверка ключа первым запросом (curl)
Самый быстрый способ убедиться, что ключ рабочий, — отправить прямой HTTP-запрос через curl. Никаких SDK, только терминал.
Сначала положите ключ в переменную окружения, чтобы он не попал в историю команд в открытом виде:
export DEEPSEEK_API_KEY="sk-ваш-ключ-здесь"
Теперь сам запрос к чат-эндпоинту:
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
-d '{
"model": "deepseek-flash",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"thinking": {"type": "enabled"},
"reasoning_effort": "high"
}'
Разберём ключевые параметры. Адрес https://api.deepseek.com — база для OpenAI-совместимого формата. Тонкость с /v1: сам эндпоинт https://api.deepseek.com/v1/chat/completions валиден, но если вы работаете через Python SDK, то base_url нужно указывать без /v1. SDK дописывает версию сам, и при base_url="https://api.deepseek.com/v1" он сформирует путь /v1/v1/chat/completions, что даст 404. В curl вы путь пишете руками, поэтому здесь оба варианта рабочие.
Заголовок Authorization обязателен и содержит ключ с префиксом Bearer. Поле model принимает deepseek-flash или deepseek-v4-pro; имена из ранних туториалов вроде deepseek-chat и deepseek-reasoner всё ещё принимаются как legacy-алиасы, но запросы обслуживает актуальная модель Flash по её цене.
Блок thinking с reasoning_effort включает режим рассуждений. Для deepseek-flash это не обязательно — модель работает и без него, но с явным включением вы увидите в ответе поле reasoning_content с цепочкой рассуждений. Если ваш клиент не умеет обрабатывать это поле, уберите thinking из тела запроса, иначе некоторые инструменты могут вернуть ошибку о неожиданном поле.
Успешный ответ — JSON с массивом choices, где в message.content лежит текст ответа модели. Если вместо этого пришёл {"error": {"message": "Authentication Fails"}}, ключ скопирован неверно или переменная окружения не подхватилась в текущей сессии терминала.
Первый запрос через Python SDK
Если curl сработал, тот же запрос через Python занимает пару минут. SDK от OpenAI подходит без модификаций — достаточно подменить base_url и api_key.
Установите пакет:
pip install --upgrade openai
Создайте файл test_deepseek.py:
import os
from openai import OpenAI
api_key = os.environ.get("DEEPSEEK_API_KEY")
if not api_key:
raise RuntimeError("DEEPSEEK_API_KEY не задан в окружении")
client = OpenAI(
api_key=api_key,
base_url="https://api.deepseek.com",
)
response = client.chat.completions.create(
model="deepseek-flash",
messages=[
{"role": "system", "content": "Ты — лаконичный ассистент."},
{"role": "user", "content": "Назови три причины использовать API вместо веб-интерфейса."},
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}},
)
print(response.choices[0].message.content)
print(response.usage)
Запустите:
python test_deepseek.py
Обратите внимание на extra_body: параметр thinking не входит в стандартную схему OpenAI SDK, поэтому его нужно передавать именно так — в обходной части тела запроса. Если передать его напрямую в create(), Python выдаст TypeError о неожиданном именованном аргументе. Это отличие от curl, где JSON произвольной структуры и принимает любые поля.
Второй print выводит usage — количество входных и выходных токенов. Полезно сверить его с ожиданиями: если на короткий запрос ушло непропорционально много токенов, возможно, вы передали слишком длинный системный промпт или включили лишний контекст.
Типичные ошибки и способы их устранения
Ошибка 401 Authentication Fails. Самая частая причина — ключ скопирован с обрезанным началом или концом. Строка должна начинаться ровно с sk- и не содержать пробелов по краям. Вторая причина — переменная DEEPSEEK_API_KEY задана в одном терминале, а запрос запускается из другого или из IDE, которая не наследует окружение shell. Проверьте echo $DEEPSEEK_API_KEY в той же сессии, откуда уходит запрос.
Ошибка 402 Insufficient Balance. Баланс исчерпан или не пополнялся. Ключ при этом валиден — это не проблема аутентификации. Зайдите в Top up и пополните счёт, либо проверьте, не истёк ли срок действия промо-баланса.
Ошибка 429 Rate Limit Reached. Превышен лимит одновременных запросов: у deepseek-flash это 2500, у deepseek-v4-pro — 500. Для одиночных тестов неактуально, но при нагрузочном тестировании или пакетной обработке вы упрётесь именно в этот лимит, а не в баланс. Решение — ограничить конкурентность на своей стороне или добавить паузу между запросами.
Ответ приходит от OpenAI, а не от DeepSeek. Забыт base_url. Если в коде остаётся дефолтный https://api.openai.com/v1, запрос уйдёт в OpenAI с валидным DeepSeek-ключом и вернёт ошибку аутентификации. Явно указывайте base_url="https://api.deepseek.com" при создании клиента.
Модель не распознана. Используется имя, которого нет в текущей линейке — например, опечатка в deepseek-flash или устаревшее имя, которое уже вывели из обращения. Актуальные ID: deepseek-flash и deepseek-v4-pro; legacy-алиасы deepseek-chat и deepseek-reasoner пока принимаются, но лучше на них не закладываться в новых проектах. Проверять актуальный список моделей и цены стоит на странице Models & Pricing, а не по статьям полугодовой давности.
Ключ утёк в клиентский код. Если sk- попал в JavaScript фронтенда, мобильное приложение или публичный репозиторий, ключ нужно немедленно удалить в консоли и сгенерировать новый. Запросы к DeepSeek должны идти только с бэкенда: браузер не должен знать ваш API-ключ.
Запросы перестали проходить после серии успешных. Проверьте Usage: возможно, закончился баланс или вы приблизились к лимиту конкурентности. Оба сценария уже разобраны выше — 402 и 429 соответственно.
Каждая из перечисленных ошибок имеет конкретную причину и устранима без переустановки SDK или смены аккаунта.
