В этой статье
Если приложению нужно отправлять запросы к GPT-5, ему не нужен интерфейс chatgpt.com. Нужен отдельный доступ к OpenAI API: ключ проекта, доступная этому проекту модель и запрос к Responses API. Подписка ChatGPT в браузере и доступ к API — разные продукты: одно не превращается в другое автоматически. Базовый маршрут описан в официальном quickstart OpenAI.
Ниже — минимальная серверная интеграция: проверим имя модели, зададим ключ в окружении, отправим запрос из Python и повторим его через curl.
Какое имя модели использовать
В коде модель задаётся строкой в параметре model. Для GPT-5 это может быть gpt-5, если такой идентификатор доступен вашему проекту. Не считайте его вечным контрактом: список моделей и доступность зависят от проекта и настроек API.
Проверьте каталог моделей до запуска программы:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
В ответе найдите нужный объект в массиве data. Для точечной проверки можно запросить модель отдельно:
curl https://api.openai.com/v1/models/gpt-5 \
-H "Authorization: Bearer $OPENAI_API_KEY"
Ошибка второго запроса не обязательно означает, что сломан Python-код. Сначала проверьте идентификатор, проект и права ключа. Форматы запросов /v1/models и /v1/models/{model} приведены в документации по моделям и справочнике Models API.
Ключ API должен жить в окружении
Ключ — секрет серверного процесса. Не вставляйте его в исходный код, .html, мобильное приложение, браузерный JavaScript или публичный репозиторий. Клиентская часть должна обращаться к вашему серверу, а сервер уже добавляет ключ в запрос к OpenAI.
В Linux или macOS переменную можно задать для текущего сеанса:
export OPENAI_API_KEY='ваш_ключ_проекта'
В PowerShell:
$env:OPENAI_API_KEY = 'ваш_ключ_проекта'
Не записывайте настоящий ключ в статью, логи и команды, которые попадут в историю shell. Для рабочего окружения используйте секреты CI/CD или менеджер секретов. Официальный SDK прочитает OPENAI_API_KEY сам, поэтому передавать его каждой функции вручную не требуется. Такой способ настройки показан в официальном quickstart OpenAI. Подробности формата Authorization: Bearer ... есть в справочнике API по аутентификации.
Первый запрос через Python и Responses API
Создайте изолированное окружение и установите официальный пакет openai:
python -m venv .venv
source .venv/bin/activate
python -m pip install -U openai
В PowerShell активация выглядит так:
.\.venv\Scripts\Activate.ps1
python -m pip install -U openai
Сохраните серверный файл first_request.py:
import os
from openai import OpenAI
MODEL = os.environ.get("OPENAI_MODEL", "gpt-5")
def main() -> None:
if not os.environ.get("OPENAI_API_KEY"):
raise SystemExit("Не задана переменная OPENAI_API_KEY")
client = OpenAI()
response = client.responses.create(
model=MODEL,
input="В одном коротком предложении объясни, зачем приложению API модели.",
)
if not response.id:
raise RuntimeError("API вернул ответ без идентификатора")
if not response.output_text.strip():
raise RuntimeError("API вернул пустой output_text")
print(f"response_id={response.id}")
print(response.output_text)
if __name__ == "__main__":
main()
Запуск в Linux или macOS:
OPENAI_MODEL=gpt-5 python first_request.py
В PowerShell:
$env:OPENAI_MODEL = 'gpt-5'
python .\first_request.py
OPENAI_MODEL здесь не обязателен: он позволяет сменить модель без правки файла. Если /v1/models показал другой доступный идентификатор, подставьте его. Само наличие строки gpt-5 в примере не гарантирует доступ.
Вызов client.responses.create(...) передаёт model и input в Responses API, а response.output_text возвращает собранный текстовый результат. Для более подробного примера первого запроса можно перейти к инструкции по OpenAI API на Python.
Тот же запрос через curl
Чтобы проверить транспорт отдельно от SDK, отправьте запрос напрямую:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5",
"input": "В одном коротком предложении объясни, зачем приложению API модели."
}'
В PowerShell удобнее передать JSON отдельной переменной:
$body = @{
model = 'gpt-5'
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))
Если нужен отдельный CLI-пример, есть инструкция по запросу к Responses API через curl. В прикладном коде удобнее SDK, а curl оставить для диагностики транспорта и простых CLI-сценариев.
Как проверить первый ответ
Минимальная проверка состоит из трёх условий:
- HTTP-запрос завершился без ошибки.
- В ответе есть непустой
id, напримерresp_.... - В Python непустой
response.output_text, а в сыром JSON присутствует текстовый результат.
Это критерии проверки, а не заранее обещанный результат: без действующего ключа, доступа к проекту и доступной модели успешного ответа не будет. Базовый порядок первого запроса приведён в официальном quickstart OpenAI.
Если пришёл 401, проверьте, что ключ задан в том же процессе, где запускается программа, и что в него не попали лишние кавычки или пробелы. 404 или ошибка неизвестной модели обычно указывает на неверный model либо отсутствие модели в проекте. Ошибка 400 требует проверить JSON и формат input. При ограничении доступа смотрите проект и права ключа, а не пытайтесь заменить API подпиской ChatGPT.
Условия хранения данных зависят от endpoint и настроек платформы. Поэтому нельзя обещать, что любой запрос нигде не сохраняется: перед передачей чувствительных данных проверьте настройки и политики хранения данных OpenAI.
Где здесь Amber Market
Если после технической настройки вам нужен отдельный маршрут оплаты зарубежных цифровых сервисов из России, можно посмотреть каталог услуг Amber Market. Это посреднический каталог: условия конкретного заказа нужно проверить перед оплатой, а подтверждённая сервисом оплата заказов через СБП — отдельная операция. Каталог не выдаёт API-ключ и не заявляет пополнение баланса OpenAI API; подписка ChatGPT и API-доступ также остаются разными вещами.
Итого: проверьте модель через /v1/models, сохраните ключ в окружении серверного процесса, вызовите responses.create и убедитесь, что получили id и непустой текст. Затем можно добавлять таймауты, обработку повторов и собственный endpoint для фронтенда — ключ при этом остаётся на сервере.