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

В этой статье

Если нужен доступ к ChatGPT из своей программы, сначала разделите две системы. ChatGPT — пользовательское приложение с подпиской и интерфейсом для человека. API Platform — отдельный продукт для вызовов моделей из кода. Подписка ChatGPT сама по себе не создаёт баланс API и не заменяет API-ключ: биллинг, лимиты и ключи настраиваются в API Platform отдельно. Это не тонкость терминологии, а граница между двумя разными учётными системами.

Что понадобится до первого запроса

Для минимальной проверки нужны:

  • аккаунт с доступом к API Platform;
  • API key, созданный в API Platform;
  • настроенная оплата API, если выбранный сценарий требует платного использования;
  • Node.js 20+ или обычный curl;
  • переменная окружения OPENAI_API_KEY.

Сначала проверьте, поддерживается ли API в вашей стране: список OpenAI меняется, а отсутствие страны в официальном списке означает, что API там не поддерживается. Проверять нужно именно официальную страницу поддерживаемых стран и территорий OpenAI, а не советы из чата или старую инструкцию.

Затем войдите в API Platform, откройте справку о создании и управлении API-ключом, создайте секретный ключ и сразу сохраните его в менеджере секретов или в переменной окружения. Полный маршрут от создания ключа до запроса есть в Developer quickstart. Сам ключ выглядит как пароль: его не нужно публиковать в статье, коммите, issue, логе CI или переписке.

Безопасная настройка ключа

SDK OpenAI по умолчанию читает значение OPENAI_API_KEY из окружения. В PowerShell временная настройка для текущего окна выглядит так:

$env:OPENAI_API_KEY = "ваш_ключ_из_API_Platform"

В macOS или Linux:

export OPENAI_API_KEY='ваш_ключ_из_API_Platform'

Не заменяйте значение настоящим ключом в исходном файле. Для постоянной настройки используйте секреты среды запуска: Secret Manager в облаке, секреты CI/CD или локальный .env, исключённый из Git. Если ключ уже попал в репозиторий или публичный лог, считайте его скомпрометированным: отзовите его в API Platform и создайте новый. У OpenAI есть отдельные рекомендации по безопасности API-ключей.

Ключ должен использоваться на сервере. Не встраивайте его в JavaScript, который загружается в браузер, и не кладите в мобильное приложение: любой пользователь сможет извлечь секрет из клиентского пакета или сетевого запроса. Клиентское приложение обращается к вашему серверу, а сервер уже добавляет ключ к запросу OpenAI. Так проще ограничивать доступ, менять ключ и расследовать расход. В обзоре API этот же принцип описан вместе с Bearer-аутентификацией и требованиями к обработке ошибок.

Первый запрос из Node.js

Создайте пустой каталог и установите официальный пакет:

npm install openai

Сохраните, например, файл check-openai.mjs:

import OpenAI from "openai";

const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  input: "Проверка API"
});

console.log(response.output_text);

Запустите его в том же окружении, где задан ключ:

node check-openai.mjs

В результате должен появиться текстовый ответ модели. Важна здесь не конкретная фраза, а проверяемая цепочка: программа загрузила ключ из окружения, SDK сформировал запрос к Responses API, сервер вернул успешный ответ, а код извлёк текст из response.output_text.

Название модели в примере — параметр, который нужно сверить с актуальной документацией и доступными вашей организации моделями перед запуском. Оно не является обещанием, что эта модель будет доступна после публикации статьи. Если модель недоступна, замените только значение model на актуальное из quickstart или консоли API; схема запроса останется той же.

Тот же тест через curl

SDK не обязателен. Для проверки HTTP-уровня используйте curl:

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "input": "Проверка API"
  }'

В PowerShell переменная окружения обращается к $env:OPENAI_API_KEY, поэтому синтаксис заголовка будет таким:

$payload = @{ model = "gpt-6-astra"; 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($payload))

HTTP-ответ с JSON — уже полезнее, чем просто сообщение «ключ вроде настроен». Проверьте код ответа, наличие ожидаемого результата и request ID, который возвращается API или показывается в заголовках или ошибке в зависимости от способа вызова. Если используете curl, при необходимости добавьте вывод заголовков через -i, но не публикуйте заголовок Authorization.

Если первый запрос не сработал

Ошибку удобно разбирать по границе, на которой возник сбой.

401 обычно означает проблему аутентификации: переменная не задана в текущем процессе, в ней опечатка, ключ отозван или передан не тот заголовок. Проверьте наличие переменной без вывода её значения и убедитесь, что команда запускается в том же окне терминала, где вы её задали.

Ошибка модели означает, что выбранное имя недоступно или устарело. Сверьте список моделей и пример в актуальном quickstart; не исправляйте такую ошибку заменой ключа вслепую.

Ошибка оплаты, лимита или квоты относится к API Platform, а не к подписке ChatGPT. Биллинг ChatGPT и API Platform ведётся раздельно, а стоимость API зависит от модели и фактического использования. Подписка ChatGPT не превращается в пополнение API автоматически.

При диагностике сохраните время запроса, endpoint, выбранную модель, HTTP-код и request ID. Секрет при этом не сохраняйте. Повторить запрос после сетевого обрыва легко; сложнее понять, успел ли сервер обработать первую попытку. Для простого чтения это обычно терпимо, но для создания записи или списания средств повтор должен учитывать идемпотентность и состояние операции.

Где здесь Amber Market

Если после настройки API вам потребуется отдельно оплатить зарубежный цифровой сервис, можно посмотреть каталог Amber Market. Это каталог отдельных услуг оплаты и подписок, а не способ создать API-ключ или пополнить баланс OpenAI API. Наличие предложения, условия и итоговую стоимость нужно проверить перед заказом; заказ оплачивается через СБП после подтверждения владельца.

Для текущей задачи маршрут заканчивается раньше: доступ к API проверяется ключом, успешным Responses API-запросом и настройками API-биллинга. Не смешивайте эти шаги с оплатой подписки ChatGPT. Когда секрет хранится на сервере, модель выбрана по актуальной документации, а ответ и request ID проверены, у приложения есть рабочая отправная точка для дальнейшей интеграции.

Если приложение пишется на Python, следующий шаг можно взять из отдельного разбора первого запроса через Python SDK. А для планирования расходов пригодится материал о стоимости OpenAI API: цена определяется не тарифом ChatGPT, а использованием API.

Источники

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