Назад до блогу

Початок роботиПосібник

Перший API-запит у VS Code: файл .http, ключ із .env

Надішліть свій перший chat completion до 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 та Ваш перший API-запит із 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 і вставте його замість заповнювача. Чому рядок ігнорування важливий і що робити, якщо ключ колись потрапить у коміт, описано в Безпечне зберігання API-ключа.

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

Розташуйте налаштування в правильному порядку

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

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

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

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. Модель записана повним ідентифікатором, 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 вихідних токенів на запит. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.

Таблиця показує поточну ціну такого навантаження на кожній моделі, з колонкою OpenRouter для порівняння. Крихітне «Hello» коштує набагато менше.

Замініть модель одним рядком#

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

Хочете зберегти обидва? Вставте другий запит нижче рядка ### з іншим ідентифікатором моделі. Кожен запит отримує власне посилання Send Request, тож ви можете запускати їх один за одним і порівнювати. Не впевнені в ідентифікаторі? Список моделей через GET /v1/models показує точні рядки.

Якщо не працює#

З'єднайте пари

Зіставте симптом із причиною

  • 401 UnauthorizedКлюч порожній або неправильний, часто через те, що .env не в тій самій теці, що й файл .http
  • 404 Not FoundДрукарська помилка в шляху URL або в ідентифікаторі моделі
  • Відповідь обривається посеред речення, finish_reason дорівнює lengthДосягнуто ліміту токенів, збільште max_tokens

Для перших двох API 401 або 404: неправильний ключ, базова URL-адреса або ідентифікатор моделі проводить через перевірки. Повні подробиці запиту — у документації CheapTokens, а поточні ціни — на сторінці цін.

Ось і весь робочий процес: один файл, один ключ у .env, один ярлик. Звідси ви можете додати системне повідомлення, змінити max_tokens або перетворити те саме тіло на код будь-якою мовою.