Назад в блог

Начало работыИнструкция

Первый запрос к API из VS Code: файл .http и ключ из .env

Отправьте первый запрос к CheapTokens из VS Code через REST Client, держите ключ вне git и найдите текст ответа и расход токенов.

Автор: CheapTokens TeamОпубликовано 4 мин чтения

Файл запроса в VS Code: POST к API CheapTokens и ключ из .env
Содержание
  1. Поставьте расширение и положите ключ в .env
  2. Напишите файл .http
  3. Отправьте и найдите ответ
  4. Смените модель одной строкой
  5. Если не работает

Первый запрос к CheapTokens можно отправить, не выходя из VS Code: поставьте расширение REST Client, напишите файл .http, положите ключ в .env рядом и нажмите Ctrl+Alt+R. Ответ откроется в панели рядом с файлом, а текст ответа и число токенов — два поля, которые легко найти в ответе.

Если редактор и так открыт, это проще, чем ставить ещё одну программу ради «Hello» модели. А сам запрос лежит в обычном текстовом файле: завтра его можно запустить снова или отдать коллеге в коммите (без ключа). Другие способы отправить тот же запрос — в статьях Первый запрос через HTTPie и Первый запрос к CheapTokens.

Поставьте расширение и положите ключ в .env#

REST Client — это расширение humao.rest-client. В VS Code нажмите F1, введите ext install, найдите rest-client и установите. (Сверено с README расширения 9 ноября 2026 года.)

Теперь ключ. В README описано {{$dotenv NAME}}: оно берёт значение из файла .env, который лежит в одной папке с вашим .http. Нам это и нужно — в файле запроса ключа не будет. Заведите папку для опыта и положите в неё два файла.

.env:

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore:

text
.env

Создайте ключ в личном кабинете CheapTokens и вставьте вместо заглушки. Зачем нужна строка в .gitignore и что делать, если ключ всё же попал в коммит, — в статье Как хранить API-ключ безопасно.

Расставьте по порядку

Расставьте настройку по порядку

  1. Установить расширение REST Client
  2. Добавить .env в .gitignore
  3. Положить ключ в .env рядом с .http
  4. Нажать Ctrl+Alt+R на запросе

Напишите файл .http#

Создайте в той же папке first.http. Синтаксис короткий: строка запроса (POST URL HTTP/1.1, метод можно не указывать — по умолчанию GET), затем заголовки Имя: значение до первой пустой строки, после пустой строки — тело. Запросы разделяет строка из трёх и более #.

http
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json

{
  "model": "zai-org/GLM-5.3-Flash",
  "messages": [{ "role": "user", "content": "Hello" }]
}

Обратите внимание на три вещи. Адрес — база API CheapTokens https://api.cheaptokens.dev/v1 плюс /chat/completions. Модель указана полным id zai-org/GLM-5.3-Flash: контекст 390K, до 8 192 токенов в одном ответе. А ключ — только заглушка {{$dotenv …}}, так что файл можно коммитить.

Ключ лежит в .env, а в first.http только ссылка на него
Ключ лежит в .env, а в first.http только ссылка на него

Если .env у вас не подхватился, в README есть и {{$processEnv NAME}} — оно читает переменную из окружения вашего компьютера.

Отправьте и найдите ответ#

Нажмите «Send Request» над строкой запроса или Ctrl+Alt+R (Cmd+Alt+R на macOS). Можно ещё щёлкнуть правой кнопкой или вызвать F1. Ответ откроется в отдельной панели. Если удобнее обычная вкладка, где можно искать и сворачивать текст, поставьте в настройках rest-client.previewResponseInUntitledDocument в true.

Ответ — стандартный JSON chat completions. В первый день важны два места:

  • choices[0].message.content — текст ответа. Рядом finish_reason говорит, почему модель остановилась: length значит, что ответ оборвал лимит токенов.
  • usage — число токенов этого запроса: сколько вы отправили и сколько написала модель. За это вы и платите, поэтому заглядывайте сюда каждый раз.
От Ctrl+Alt+R до текста ответа и поля usage
Куда смотреть в панели ответа
Попробуйте самиПопробуйте: как понять, что ответ оборвался?Показать ответ

Посмотрите на finish_reason в ответе. Если там length, модель упёрлась в лимит токенов раньше, чем закончила. Добавьте в тело строку "max_tokens" или увеличьте её и отправьте снова.

Чтобы почувствовать деньги: допустим, вы отправляете такой запрос 100 раз, по 1 000 токенов на входе и 300 на выходе (допущение для примера, не замер).

Модель За запрос 100 запросов OpenRouter, 100 запросов
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $0.000095 $0.0095 $0.114

1 000 входных и 300 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.

Таблица показывает живую цену этой нагрузки на каждой модели и столбец OpenRouter для сравнения. Одинокий «Hello» стоит намного меньше.

Смените модель одной строкой#

Удобство текстового файла: поменяли строку — отправили снова. Замените id модели на deepseek-ai/DeepSeek-V4-Flash-0731 (контекст 380K, до 32 768 токенов в ответе, одна цена в любое время суток, в сумме дешевле OpenRouter с учётом входа и выхода) и ещё раз нажмите Ctrl+Alt+R. То же тело, тот же ключ, другой ответ и другой usage.

Хотите оставить обе? Вставьте второй запрос ниже под строкой ### с другим id модели. У каждого запроса своя ссылка Send Request, так что их можно запустить по очереди и сравнить. Не уверены в id? Список моделей через GET /v1/models покажет точные строки.

Если не работает#

Найдите пары

Сопоставьте признак и причину

  • 401 UnauthorizedКлюч пустой или неверный, часто потому что .env лежит не в одной папке с .http
  • 404 Not FoundОпечатка в пути URL или в id модели
  • Ответ оборвался на полуслове, finish_reason равен lengthДостигнут лимит токенов, увеличьте max_tokens

По первым двум пунктам проверки разобраны в статье Ошибка API 401 или 404: ключ, base URL или id модели. Подробности запроса — в документации CheapTokens, актуальные цены — на странице цен.

Вот и весь процесс: один файл, один ключ в .env, одно сочетание клавиш. Дальше можно добавить системное сообщение, поменять max_tokens или превратить то же тело в код на любом языке.