DeepSeek API через cURL
Быстрый способ убедиться, что ключ рабочий, а сеть доступна: один запрос в терминале, без SDK, виртуальных окружений и зависимостей. Эти же команды удобно вставлять в shell-скрипты и задачи CI.
Первый запрос
export DEEPSEEK_API_KEY="ваш-ключ"
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": "Ты — полезный ассистент."},
{"role": "user", "content": "Привет! Представься в двух предложениях."}
],
"stream": false
}'
Тело запроса в одинарных кавычках — внутри нельзя использовать одинарные кавычки, для них есть '\''. Переменная $DEEPSEEK_API_KEY должна быть в двойных кавычках, иначе оболочка подставит пустоту. Ключ не должен попадать в историю команд: используйте переменную окружения или файл .env.
Читаем ответ удобно
Ответ — обычный JSON. Чтобы достать только текст, поставьте jq:
curl -s https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-flash",
"messages": [{"role": "user", "content": "Одно предложение о кофе."}]
}' | jq -r '.choices[0].message.content'
# Расход токенов
curl -s https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{"model":"deepseek-flash","messages":[{"role":"user","content":"Привет"}]}' \
| jq '.usage'
В объекте usage обратите внимание на три поля: prompt_cache_hit_tokens, prompt_cache_miss_tokens и completion_tokens. Именно они определяют стоимость запроса — подробнее на странице «Цены и расчёт».
Потоковая выдача
Флаг -N отключает буферизацию вывода, иначе вы увидите ответ целиком в конце, а не по мере генерации. Ответ приходит в формате SSE, строки начинаются с data: .
curl -N https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-flash",
"messages": [{"role": "user", "content": "Перечисли пять фактов о Луне."}],
"stream": true,
"stream_options": {"include_usage": true}
}'
Нужен API-ключ сегодня
Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.
Служебные запросы
Два эндпоинта пригодятся при отладке: список моделей и проверка баланса.
# Какие модели доступны аккаунту
curl -s https://api.deepseek.com/models \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" | jq
# Баланс аккаунта
curl -s https://api.deepseek.com/user/balance \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" | jq
Отключаем рассуждения в запросе
Режим рассуждений включён по умолчанию: модель тратит выходные токены на цепочку размышлений. Для простых задач её лучше выключить — ответ дешевле и быстрее.
curl -s https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-flash",
"messages": [{"role": "user", "content": "Переведи на английский: «спасибо»"}],
"thinking": {"type": "disabled"}
}' | jq -r '.choices[0].message.content'
Windows: PowerShell и cmd
В PowerShell удобнее не собирать JSON руками, а отдать это ConvertTo-Json — так не придётся экранировать кавычки.
$headers = @{
"Authorization" = "Bearer $env:DEEPSEEK_API_KEY"
"Content-Type" = "application/json"
}
$body = @{
model = "deepseek-flash"
messages = @(@{ role = "user"; content = "Привет! Кто ты?" })
stream = $false
} | ConvertTo-Json -Depth 5
$response = Invoke-RestMethod -Uri "https://api.deepseek.com/chat/completions" `
-Method Post -Headers $headers -Body $body
$response.choices[0].message.content
В Windows PowerShell 5.1 русский текст в теле запроса иногда «портится». Надёжный приём — отправлять байты UTF-8: -Body ([System.Text.Encoding]::UTF8.GetBytes($body)). В PowerShell 7 этой проблемы обычно нет. Если используете curl в командной строке Windows, помните, что там нужен curl.exe и свои правила экранирования кавычек.
Тот же запрос через агрегатор
Если нужен доступ с оплатой в рублях, меняются только адрес и ключ. Название модели берите из каталога сервиса: там идентификаторы отличаются от официальных.
curl -s https://api.aitunnel.ru/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AITUNNEL_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "Привет!"}]
}' | jq -r '.choices[0].message.content'
Нужен API-ключ сегодня
Регистрация по email или Telegram занимает пару минут, оплата идёт в рублях, VPN не нужен. Один ключ работает и с DeepSeek, и с другими моделями.
Читайте также
- Подключение через AITUNNEL Как получить ключ, сколько стоит и как настроить Cursor, Claude Code и n8n.
- Примеры на Python Если удобнее работать через SDK: стриминг, инструменты, расчёт стоимости.
- Быстрый старт Что означает каждое поле запроса и ответа, разбор первых ошибок.
- Ошибки и лимиты Расшифровка кодов 400–503 и правила повторных попыток.