В этой статье
Для первого запроса к OpenAI нужен не вход в ChatGPT, а API-ключ в OpenAI Platform. Схема короткая: создать стандартный ключ в нужном проекте, передать его приложению через OPENAI_API_KEY, отправить запрос к Responses API и отдельно проверить, что ответ содержит текст.
Интерфейс Platform и доступные действия могут отличаться в зависимости от аккаунта и проекта. Поэтому ищите раздел управления ключами проекта, а не кнопку с обещанным фиксированным названием. Общий путь описан в Developer quickstart и API Overview.
Какой ключ создавать
Для обычного вызова модели нужен стандартный API key приложения. Admin API key предназначен для административных endpoint и не является «более сильной» версией ключа для генерации текста. Подставлять административный ключ в код клиента — плохая идея и по назначению, и по последствиям утечки.
Создайте стандартный ключ в том проекте, от имени которого будет работать приложение. Скопируйте значение сразу в защищённое хранилище: оно должно попасть в переменную окружения или менеджер секретов, а не в заметку, скриншот или репозиторий. У ключа есть две независимые характеристики: он должен быть корректным сам по себе, а проект — иметь право выполнить нужный запрос.
Сохраните ключ в окружении
Приложение не должно получать секрет из исходного кода. На macOS или Linux переменную можно экспортировать в текущем shell:
export OPENAI_API_KEY="ваш_api_key"
В PowerShell для сохранения переменной на будущее используйте:
setx OPENAI_API_KEY "ваш_api_key"
setx изменяет окружение для новых процессов. Уже открытый терминал может не увидеть переменную, поэтому после команды откройте новую сессию PowerShell. Для одноразовой проверки в текущем окне можно задать переменную так:
$env:OPENAI_API_KEY = "ваш_api_key"
Секрет не должен появляться в командной истории, CI-логе или выводе отладочного print. В рабочем проекте вместо локального shell обычно используют менеджер секретов CI/CD или облачной платформы. Если ключ попал в Git, публичный issue или скриншот, считайте его скомпрометированным: отзовите его в Platform и создайте новый.
Перед запросом проверьте только наличие переменной, не печатая её значение. Например, в PowerShell:
if ([string]::IsNullOrWhiteSpace($env:OPENAI_API_KEY)) {
throw "OPENAI_API_KEY не задан"
}
Эта проверка доказывает лишь локальную настройку. Она ещё не доказывает, что ключ действителен или что проект может вызвать модель.
Первый запрос через Responses API
Для минимальной проверки удобно использовать curl: не нужно сначала настраивать SDK, достаточно доступной в вашем проекте модели. Подставьте фактический model ID, который виден проекту; не копируйте название модели из чужого примера вслепую.
В macOS/Linux:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "MODEL_ID",
"input": "Ответь одной короткой фразой: API отвечает?"
}'
В PowerShell тот же запрос можно отправить так:
$body = @{
model = "MODEL_ID"
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" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
Параметры model и input — базовая часть запроса Responses API; подробности формата есть в Responses API Reference. MODEL_ID — намеренная переменная, а не обещание конкретной модели, постоянного бесплатного доступа или фиксированного лимита. Доступность модели, лимиты и стоимость зависят от проекта и текущих условий.
В успешном ответе будет JSON-объект с данными ответа и текстом модели. Не ограничивайтесь кодом завершения процесса: убедитесь, что HTTP-запрос прошёл без API-ошибки и что в объекте действительно есть содержательный текст. В зависимости от используемого клиента текст может быть представлен удобным агрегированным полем или находиться внутри структурированного массива output — это различие представления ответа, а не другой способ аутентификации. Приведённые команды предназначены для запуска на вашей стороне; сам пример не подтверждает фактический запрос от редакции.
После настройки API может понадобиться оплатить другой зарубежный цифровой сервис. В таком случае можно отдельно посмотреть каталог Amber Market и проверить условия конкретного предложения перед заказом; для заказа подтверждена оплата через СБП. Каталог не создаёт API-ключ и не пополняет баланс OpenAI API, поэтому получение ключа и запуск запроса к OpenAI к этой ссылке не относятся.
Если проверка не прошла
Разделяйте три неисправности, иначе можно бесконечно менять ключ при проблеме сети или прав проекта.
- Если
OPENAI_API_KEYотсутствует, ошибка локальная: новый процесс не получил переменную или она задана не в том терминале. - Ответ
401обычно означает, что нужно проверить сам ключ, его формат и актуальность. Не выводите ключ в лог для «быстрой диагностики». - Ответ
403указывает на проблему прав или проекта: проверьте, от имени какого проекта выполняется запрос и разрешён ли ему нужный endpoint. - Ответ
429связан с квотой, балансом проекта или слишком частыми запросами. Смотрите точное тело ответа и правила повторов; механически повторять каждый429без паузы — способ увеличить нагрузку.
Точный код и тело ответа важнее пересказа из чужого примера: они показывают, на каком слое произошёл сбой. После исправления снова проверьте наличие переменной, HTTP/API-результат и содержательный текст — именно в таком порядке.
Что оставить в приложении
В репозитории должны остаться код и название переменной, но не значение ключа. Для локальной разработки подойдёт защищённое окружение, для CI — секрет хранилища сборки, для серверного приложения — менеджер секретов. Браузерный клиент не должен получать основной API-ключ: пользователь сможет его извлечь из JavaScript и использовать отдельно от вашего приложения. Запрос из браузера отправляйте через свой серверный endpoint, который хранит секрет на сервере и применяет собственные ограничения.
После первого успешного запроса зафиксируйте в документации проекта только безопасную часть настройки: какой endpoint используется, где задаётся OPENAI_API_KEY, как выбрать доступный проекту model ID и какой ответ считается успешным. Сам ключ в этой документации не нужен. Секреты редко улучшают архитектуру тем, что начинают гулять по файлам.
Источники
- Developer quickstartOpenAI
- API OverviewOpenAI
- Responses API ReferenceOpenAI
- Каталог цифровых товаровAmber Market