В этой статье
Для быстрой проверки OpenAI API SDK не обязателен. Нужны curl, API-ключ и модель, доступная именно вашему API-проекту. Запрос отправляется в Responses API: POST https://api.openai.com/v1/responses; минимальные поля — model и input (пример параметров для curl).
Подготовьте ключ
Не вставляйте секрет непосредственно в команду, репозиторий, браузерный JavaScript или текст статьи. Переменная OPENAI_API_KEY передаст ключ процессу curl и не изменит сам JSON-запрос.
В macOS или Linux введите ключ без отображения символов:
read -s OPENAI_API_KEY
export OPENAI_API_KEY
В PowerShell:
$env:OPENAI_API_KEY = [System.Net.NetworkCredential]::new('', (Read-Host 'OPENAI_API_KEY' -AsSecureString)).Password
Ключ вводите вы в своём терминале. Если переменная уже задана в профиле shell или CI, шаг можно пропустить.
Запрос в macOS и Linux
Замените YOUR_AVAILABLE_MODEL на идентификатор модели, доступный вашему проекту. Список моделей и права доступа зависят от проекта, поэтому не копируйте ID из чужого примера вслепую.
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "YOUR_AVAILABLE_MODEL",
"input": "Ответь одним предложением, что такое HTTP"
}'
Обратный слэш продолжает команду на следующей строке. JSON заключён в одинарные кавычки, поэтому shell не интерпретирует его двойные кавычки до отправки.
Чтобы одновременно сохранить тело ответа и вывести HTTP-код, выполните:
curl -sS \
-D response-headers.txt \
-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" \
--data '{
"model": "YOUR_AVAILABLE_MODEL",
"input": "Ответь одним предложением, что такое HTTP"
}'
Код 2xx означает, что HTTP-запрос принят успешно, но этого недостаточно: проверьте JSON и содержательный текст. Если установлен jq, типичный текст ответа можно извлечь так:
jq -r '.output[]?.content[]? | select(.type == "output_text") | .text' response.json
Responses API возвращает объект со статусом и массивом output. У curl нет SDK-свойства output_text: текст нужно найти в JSON (описание объекта ответа). Структура output может отличаться, например при использовании инструментов, поэтому сначала полезно посмотреть весь response.json, а фильтр применять как проверку типичного сообщения.
Вариант для Windows PowerShell
В PowerShell вызывайте именно curl.exe: слово curl в Windows может быть алиасом PowerShell-команды. Запишите тело запроса в UTF-8 без BOM: curl.exe получит байты из файла, поэтому PowerShell не меняет кавычки JSON при передаче аргумента.
$json = @'
{
"model": "YOUR_AVAILABLE_MODEL",
"input": "Ответь одним предложением, что такое HTTP"
}
'@
[System.IO.File]::WriteAllText(
(Join-Path (Get-Location) 'request.json'),
$json,
[System.Text.UTF8Encoding]::new($false)
)
curl.exe https://api.openai.com/v1/responses `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
--data-binary '@request.json'
В PowerShell перенос команды обозначается обратным апострофом `, а не обратным слэшем. [System.Text.UTF8Encoding]::new($false) отключает BOM, а $env:OPENAI_API_KEY подставляется только при запуске. POSIX-вариант нельзя механически копировать в PowerShell: системы по-разному обрабатывают кавычки и переносы.
Проверка с сохранением результата:
$status = curl.exe -sS `
-o response.json `
-w "%{http_code}" `
https://api.openai.com/v1/responses `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
--data-binary '@request.json'
Write-Host "HTTP $status"
$response = Get-Content -Raw response.json | ConvertFrom-Json
$response | Select-Object status, id, output
ConvertFrom-Json проверяет, что тело разбирается как JSON. В output найдите элемент content с типом output_text. Заранее фиксировать конкретную фразу нельзя: её вернёт выбранная модель при вашем запуске.
Как читать результат и ошибку
Проверяйте три независимые вещи: HTTP-код, возможность разобрать JSON и наличие ожидаемого текста в output.
401или403обычно указывают на неверный или отсутствующий ключ либо на отсутствие доступа проекта к выбранной модели. СверьтеOPENAI_API_KEY, проект и модель; точную причину прочитайте в JSON ошибки.400означает, что сервер не принял параметры или JSON. Проверьте кавычки, запятые, имя поляmodelи значениеinput.429связан с лимитом или слишком частыми запросами. Текст ошибки подскажет, что именно ограничено; повторяйте запрос с учётом этого условия.
Если пришёл 2xx, но фильтр не вывел текст, не объявляйте запрос сломанным по одному пути JSON. Выведите полный response.json и посмотрите фактические элементы output: статус ответа, сообщение и результаты инструментов — разные части структуры.
Если после проверки нужен программный вызов, можно перейти к инструкции с первым запросом через Python SDK; для текущей проверки SDK не нужен.
Если отдельно потребуется оплатить зарубежный цифровой сервис, можно посмотреть каталог оплаты зарубежных цифровых сервисов Amber Market: отдельные заказы там оплачиваются через СБП, а актуальные предложения и условия нужно проверить перед заказом. Это не пополнение OpenAI API: подписка ChatGPT и баланс API — разные вещи, и каталог не обещает наличие API-баланса.