GPT-5 API: как подключить модель и сделать первый запрос

В этой статье

Если нужен именно ответ модели из программы, путь короткий: API-ключ, переменная окружения, POST /v1/responses и проверка поля output. ChatGPT в браузере в этой схеме не участвует.

Что подготовить до запроса

Создайте секретный API-ключ в панели OpenAI и сохраните его в менеджере секретов или локальном окружении. В код ключ не вставляйте: репозиторий, браузерный JavaScript и история shell-команд — плохие места для секрета. API-ключ предназначен для серверного запроса и передаётся в заголовке Authorization (API Overview).

В терминале задайте переменную окружения. В Bash это выглядит так:

export OPENAI_API_KEY='ваш_ключ_из_панели'

В PowerShell:

$env:OPENAI_API_KEY = 'ваш_ключ_из_панели'

Не добавляйте эту строку в скрипт, который попадёт в Git. Для серверного приложения используйте штатное хранилище секретов вашей инфраструктуры.

Основной пример ниже использует идентификатор gpt-5. На момент проверки, 4 октября 2026 года, он есть в каталоге OpenAI API и поддерживает Responses API, но карточка уже помечает модель как предыдущую. Доступность конкретного идентификатора определяется проектом API, поэтому перед запуском проверьте карточку GPT-5 и доступные модели именно в своём проекте.

Первый запрос через Responses API

Минимальное тело содержит две существенные части: model и input. Ключ подставляется из окружения, а не хранится в JSON-файле:

curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "input": "В одном предложении объясни, что делает HTTP-заголовок Authorization."
  }'

PowerShell-эквивалент отличается только синтаксисом передачи JSON:

$body = @{
  model = 'gpt-5'
  input = 'В одном предложении объясни, что делает HTTP-заголовок Authorization.'
} | 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))

Это учебный пример: он показывает форму запроса, но не является заранее выполненным вызовом и не подтверждает доступность модели или ключа в вашем проекте.

Как понять, что запрос сработал

Проверяйте три вещи, а не только наличие непустого вывода терминала:

  1. HTTP-статус успешный.
  2. Ответ разбирается как JSON.
  3. В JSON есть текстовый элемент в output.

Responses API возвращает типизированный массив output. Поэтому не ищите ответ по старой схеме choices[0].message.content: это структура Chat Completions, а не универсальный путь для Responses API. Для ручной проверки достаточно сохранить ответ в файл и посмотреть его структуру:

curl -sS -o response.json -w "HTTP %{http_code}\n" \
  https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5","input":"Ответь одним словом: готово"}'

jq '.output' response.json

Внутри output ищите элемент с текстом. Не привязывайте рабочую интеграцию к одной позиции массива без проверки типа элемента: массив типизирован, и структура ответа может содержать больше, чем один текстовый результат. Подробности формата и актуальный пример запроса собраны в руководстве Text generation. Если переносите интеграцию со старого API, разницу структур объясняет руководство по миграции на Responses API.

Если после проверки HTTP-ответа нужен Python-клиент, можно перейти к примеру первого запроса через Python SDK. SDK меняет способ отправки, но не отменяет правила про секрет, модельный ID и проверку результата.

Если API вернул ошибку

Сначала смотрите HTTP-код и точное тело ошибки. Коды дают направление, но не заменяют сообщение API:

  • 401 — ключ отсутствует, неверен или не был корректно передан в Authorization.
  • 403 — у проекта нет нужного разрешения либо модель недоступна для этого проекта.
  • 400 — ошибка в JSON-теле, названии поля или значении параметра. Проверьте, что отправлены model и input, а JSON действительно валиден.
  • 429 — достигнут лимит запросов или квота. Повторять запрос вслепую не стоит: сначала проверьте лимиты и условия проекта.

Отдельно проверьте, что переменная окружения видна тому же процессу, который запускает curl или приложение. Значение ключа при этом не выводите: диагностика должна подтверждать наличие настройки, а не раскрывать секрет.

gpt-5 и продакшен

В карточке модели указан snapshot gpt-5-2025-08-07. Для него запланировано отключение 11 декабря 2026 года (список deprecations). Это дата конкретного snapshot, а не обещание отключить любой будущий alias семейства GPT-5.

Перед новым продакшен-запуском заново проверьте каталог моделей, доступность выбранного ID в проекте и план миграции. Для первого эксперимента alias gpt-5 удобен как понятная точка входа; для долгоживущей интеграции важнее иметь процедуру смены модели и тест, который проверяет ожидаемую структуру output.

Где здесь Amber Market

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

Итого: секрет остаётся на серверной стороне, запрос уходит на /v1/responses, модель задаётся доступным проекту ID, а успешность подтверждается статусом, валидным JSON и текстовым элементом в output. Этого достаточно, чтобы отделить проблему подключения от следующего этапа — полноценной интеграции и обработки ошибок в приложении.

Источники

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