В этой статье
Для текстового запроса отправьте JSON на https://api.openai.com/v1/responses с заголовком авторизации. SDK для этого не нужен. В примере ниже тело хранится в файле: так кавычки и русские буквы не приходится встраивать в командную строку. Пример Responses API.
Понадобятся cURL, ключ OpenAI API и доступ к выбранной модели в своём проекте. Подписка ChatGPT Plus не оплачивает API — биллинг у него отдельный. Условия OpenAI.
1. Проверьте cURL и настройте ключ
В macOS/Linux выполните curl --version, в Windows PowerShell — curl.exe --version. Для показанной команды нужен cURL 7.76.0 или новее: в этой версии появился --fail-with-body. Документация cURL.
Создайте ключ в своём проекте OpenAI и задайте переменную окружения OPENAI_API_KEY. В Windows можно добавить пользовательскую переменную через свойства системы → дополнительные параметры → переменные среды, затем открыть новый терминал. В macOS/Linux задайте переменную в своей оболочке. Не сохраняйте ключ в файле запроса или репозитории. Настройка ключа.
Проверка в PowerShell без вывода значения:
if ($env:OPENAI_API_KEY) { 'Ключ задан' } else { 'Ключ не задан' }
Если переменной нет, сначала настройте её в окружении того терминала, где будет запущен cURL.
Отдельная инструкция объясняет, как создать API-ключ OpenAI и проверить его права.
2. Сохраните тело запроса
Создайте request.json в UTF-8 без BOM:
{
"model": "gpt-6-astra",
"input": "Напиши одно короткое уведомление на русском. Факты: мастерская закрыта в понедельник, во вторник работает с 10:00. Причина закрытия не указана. Не придумывай причину и адрес."
}
gpt-6-astra — модель из официального примера на 10 сентября 2026 года. Проверьте её доступность и стоимость для своего проекта; при необходимости укажите другую доступную текстовую модель. Quickstart OpenAI.
В JSON нужны двойные кавычки, а после последнего поля не должно быть запятой. Если редактор добавил расширение .txt, переименуйте файл в request.json.
3. Отправьте запрос
Откройте терминал в папке с файлом. Команда для macOS/Linux, одной строкой:
curl --silent --show-error --fail-with-body --max-time 180 "https://api.openai.com/v1/responses" -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" --data-binary "@request.json" --output response.json --write-out "HTTP %{http_code}\n"
В Windows PowerShell используйте curl.exe и синтаксис переменной $env::
curl.exe --silent --show-error --fail-with-body --max-time 180 "https://api.openai.com/v1/responses" -H "Authorization: Bearer $env:OPENAI_API_KEY" -H "Content-Type: application/json" --data-binary "@request.json" --output response.json --write-out "HTTP %{http_code}\n"
--data-binary читает файл после @ и передаёт его содержимое без преобразований. --output сохраняет тело ответа в response.json, а --write-out показывает HTTP-код отдельно. --fail-with-body сохраняет тело HTTP-ошибки и возвращает ненулевой код завершения. --max-time 180 ограничивает ожидание тремя минутами. Параметры cURL.
Перед повторным запуском сохраните нужный предыдущий ответ под другим именем: команда снова записывает response.json.
4. Разберите ответ
Сначала посмотрите HTTP-код и содержимое response.json. В PowerShell:
Get-Content -Raw -Encoding utf8 response.json
В успешном ответе найдите в массиве output элементы типа message, затем их content типа output_text и поле text. Не полагайтесь на output[0].content[0].text: первым элементом может оказаться другой вид вывода. Удобное свойство output_text в примерах SDK не следует путать с чтением сырого HTTP JSON. Структура ответа.
Для нашего задания проверьте три факта: закрытие в понедельник, открытие во вторник с 10:00, отсутствие выдуманной причины и адреса. Успешная передача запроса ещё не означает, что уведомление можно публиковать без чтения.
Если команда не сработала
Сначала разделите сетевой результат и ответ модели:
- Ошибка чтения
request.json: проверьте текущую папку, имя и права чтения файла. - Тело ответа сообщает об ошибке: прочитайте его полностью и сопоставьте с HTTP-кодом. Сохранённый файл сам по себе не означает успех.
- Истекли 180 секунд: cURL прекратил ожидание; это не доказывает, что сервер не начал обработку. Не запускайте бесконечные повторы.
- JSON получен, но нужного текста нет: проверьте состояние ответа и все элементы
output, а не только первый.
Для диагностики OpenAI публикует справочник ошибок API. Не исправляйте любую ошибку заменой модели: неверное тело запроса, ключ и биллинг требуют разных действий.
Что проверено в этом примере
Передача JSON-файла и сохранение ответа проверены локально в Windows с cURL 8.13.0. Учебный HTTP-сервер принимал фиктивный ключ, возвращал успешный ответ и отдельно ошибку 400; вторая проверка сохранила тело ошибки и завершилась кодом cURL 22. Это проверка команды и файлов, а не доступности OpenAI. Платный запрос к API и генерация уведомления не выполнялись. Команда для macOS/Linux дана по документации и отдельно в этой среде не запускалась.
Проверить детали
Источники материала
- Text generationOpenAI
- Developer quickstartOpenAI
- curl man pagecurl project
- Best Practices for API Key SafetyOpenAI
- What is ChatGPT Plus?OpenAI
Функции и условия сервисов меняются. Дата сверки указана в начале статьи. Как подготовлен материал