Как получить OpenAI API: ключ, настройка и первый запрос

В этой статье

Для первого запроса к 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 и какой ответ считается успешным. Сам ключ в этой документации не нужен. Секреты редко улучшают архитектуру тем, что начинают гулять по файлам.

Источники

Есть следующая задача?Ещё по теме «Работа с API» →