В этой статье
OpenAI API — это программный HTTP-сервис. Приложение отправляет ему запрос, сервис возвращает ответ модели, а ваш код решает, что делать с результатом: показать его пользователю, сохранить или передать дальше. Подключаться можно через официальный SDK или напрямую по HTTP. Для новых прямых запросов к моделям в документации используется Responses API (обзор API).
Ниже — минимальный запуск без лишних слоёв: ключ в переменной окружения, один запрос из Node.js, тот же запрос через curl и проверка, что выбранная модель вообще доступна проекту.
Сначала разделите API и ChatGPT
OpenAI API — отдельный программный сервис. Подписка ChatGPT Plus или Pro не является условием для вызова API и не превращает аккаунт в готовый серверный ключ. Для приложения нужен доступ к API, ключ проекта и настроенная политика оплаты API. Тарифы и биллинг здесь не разбираются: для первого подключения важнее не перепутать пользовательское приложение ChatGPT с интерфейсом разработчика.
Ключ остаётся на сервере
Ключ — секрет. Храните его на сервере или в менеджере секретов и передавайте процессу через переменную окружения. Не добавляйте его в браузерный JavaScript, мобильное приложение, Git-репозиторий или пример, который собирается в клиентский бандл. Официальный quickstart также рекомендует использовать OPENAI_API_KEY (Developer quickstart).
В локальном терминале задайте ключ так, чтобы он был доступен только текущему процессу или вашей среде разработки.
export OPENAI_API_KEY="ваш_api_ключ"
В Windows PowerShell аналогичная команда выглядит так:
$env:OPENAI_API_KEY = "ваш_api_ключ"
Не вставляйте реальное значение в исходный файл. Если ключ случайно попал в репозиторий, считайте его раскрытым: отзовите его и создайте новый.
Минимальный запрос из Node.js
Создайте небольшой проект и установите официальный пакет:
npm init -y
npm install openai
Версия пакета меняется, поэтому перед запуском сверяйте актуальный quickstart. Создайте index.mjs:
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-4.1-mini",
input: "Коротко объясни, зачем серверному приложению нужен API-ключ."
});
if (!response.output_text?.trim()) {
throw new Error("Модель вернула пустой output_text");
}
console.log(response.output_text);
Запустите файл:
node index.mjs
Здесь важны три границы. OpenAI берёт ключ из OPENAI_API_KEY, responses.create отправляет запрос через Responses API, а output_text — удобное текстовое представление результата. Не пытайтесь читать ответ как произвольное поле вроде response.text: форма объекта SDK определяется используемым API и версией пакета.
Имя gpt-4.1-mini — только пример. Алиасы моделей и доступность конкретной модели могут меняться, а доступ также зависит от проекта. Перед запуском сверяйте идентификатор с каталогом моделей, а не рассчитывайте, что старый пример будет работать всегда.
Тот же вызов через HTTP
SDK не скрывает принципиальную часть интеграции: нужен POST с Bearer-ключом и JSON-телом. Это можно проверить без Node.js:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-mini",
"input": "Ответь одной фразой: что проверяет первый API-запрос?"
}'
В PowerShell удобнее передать тело как объект, чтобы не разбираться с экранированием кавычек:
$body = @{
model = "gpt-4.1-mini"
input = "Ответь одной фразой: что проверяет первый API-запрос?"
} | ConvertTo-Json
Invoke-RestMethod `
-Uri "https://api.openai.com/v1/responses" `
-Method Post `
-Headers @{ Authorization = "Bearer $env:OPENAI_API_KEY" } `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Для приложения SDK обычно удобнее: он уменьшает объём HTTP-кода и даёт типизированный клиентский интерфейс. Прямой HTTP полезен для диагностики, интеграции в другой стек и проверки того, что проблема не в обвязке Node.js.
Проверьте модель до запроса
Если первый вызов отвечает ошибкой, сначала отделите проблему доступа к API от проблемы конкретной модели. Запросите список моделей:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
Это endpoint GET /v1/models; его назначение и формат ответа описаны в справочнике Models API. Найдите в ответе нужный id и подставьте его в model. Само наличие модели в общем ответе ещё не повод игнорировать ограничения проекта, поэтому при отказе смотрите текст ошибки и настройки доступа.
Практическая последовательность проверки такая:
OPENAI_API_KEYдействительно задан в том же процессе, где запускается код.- Запрос к
/v1/modelsпроходит с кодом успешного ответа. - Значение
modelсовпадает с доступным идентификатором, а не с названием из устаревшей статьи. - Ответ SDK содержит непустой
output_text; в сыром HTTP JSON текст находится в элементах массиваoutput.
Для production сохраняйте x-request-id из ответа и, когда это нужно для мониторинга, заголовки, связанные с лимитами. Идентификатор помогает сопоставить ошибку в приложении с обращением к API; не заменяйте им содержательную диагностику — код HTTP и тело ошибки всё равно нужно логировать безопасно.
Что проверить перед переносом в production
Минимальный пример доказывает только связность и форму вызова. В рабочем сервисе добавьте таймауты, обработку неуспешных HTTP-ответов, ограничение размера входа и контроль повторов. Повторять запрос после сетевого обрыва безопасно не всегда: если операция уже запустила побочный эффект в вашей системе, сначала нужно понять, выполнилась ли первая попытка.
Данные из приложения также нельзя считать автоматически исчезающими после ответа. Политика OpenAI указывает, что данные API не используются для обучения или улучшения моделей без явного согласия, но это не означает отсутствия журналов мониторинга злоупотреблений или других режимов хранения. Конкретные правила зависят от endpoint и настроек проекта; перед отправкой чувствительных данных изучите раздел Data controls.
Итого: держите ключ на сервере, начинайте с client.responses.create, проверяйте выбранный model через /v1/models, а результат подтверждайте непустым output_text. Этого достаточно, чтобы отделить рабочую интеграцию OpenAI API от проблем с моделью, секретом и подпиской ChatGPT.
Если нужен не программный вызов из собственного приложения, а готовый пользовательский сервис, можно отдельно посмотреть каталог цифровых AI-сервисов Amber Market. Это не замена API-ключу, балансу или документации; наличие API-доступа, условия предложения, способ оплаты и отсутствие автоматических списаний нужно проверять в карточке перед заказом.
Источники
- Developer quickstartOpenAI Developer Documentation
- API OverviewOpenAI API Reference
- Models API ReferenceOpenAI API Reference
- Data controls in the OpenAI platformOpenAI Developer Documentation