Ошибка OpenAI 401 — это проблема аутентификации, но она не всегда означает одно и то же. Самое быстрое решение — определить имя хоста запроса, подтвердить, какой именно секрет загрузил запущенный процесс, а затем по телу ошибки отличить неверный ключ от отозванного ключа, несоответствия учётных данных шлюза или блокировки по списку разрешённых IP-адресов.
Если вы ищете, как получить API-ключ OpenAI, потому что запрос только что завершился ошибкой, не вставляйте новый секрет вслепую в ту же конфигурацию. Сначала установите, отправляется ли запрос на api.openai.com или на OpenAI-совместимый шлюз. Для этих двух конечных точек могут требоваться разные учётные данные.
Никогда не вставляйте полный API-ключ в тикет, чат, снимок экрана, журнал или этот контрольный список. Вместо этого сравнивайте безопасно полученный отпечаток или замаскированный суффикс, отображаемый вашим провайдером.
Что означает «недопустимый API-ключ»?
Это означает, что сервис, получивший запрос, не смог аутентифицировать учётные данные, представленные для этого запроса. Для прямого запроса к OpenAI официальная ошибка может содержать сообщение Incorrect API key provided. Первые проверки OpenAI: сравнить замаскированный ключ в ошибке с предполагаемым ключом, убедиться, что приложение не переключается между двумя ключами, и подтвердить правильную конфигурацию организации, если она требуется. Руководство OpenAI по неверному ключу — первоисточник для этого точного сообщения.
Одного HTTP-статуса недостаточно для диагностики причины. Например, OpenAI документирует, что запрос, заблокированный списком разрешённых IP-адресов, возвращает HTTP 401 с типом ошибки ip_not_authorized — даже при действительном ключе. Прочитайте тело ошибки, прежде чем что-либо ротировать. Руководство OpenAI по спискам разрешённых IP-адресов объясняет это различие.
Пятиминутный контрольный список диагностики
Выполняйте эти проверки по порядку. Остановитесь, когда доказательства укажут на причину; изменение нескольких вещей одновременно затрудняет подтверждение работоспособности решения.
| Проверка | Что можно безопасно проверить | Вероятный вывод | Следующее действие |
|---|---|---|---|
| 1. Хост запроса | Имя хоста после перенаправлений, например api.openai.com в сравнении с доменом шлюза |
Прямой ключ OpenAI был отправлен другому провайдеру или наоборот | Используйте учётные данные, выданные оператором конечной точки |
| 2. Точное тело ошибки | Сообщение об ошибке, type и code — никогда не полный секрет |
Неверный/отозванный ключ, блокировка IP или специфичное для провайдера правило аутентификации | Следуйте ветке ниже, соответствующей телу ошибки |
| 3. Источник секрета во время выполнения | Окружение процесса, ссылка на секрет развёртывания, имя секрета CI или ревизия контейнера | Всё ещё используется старое, пустое, усечённое или заключённое в кавычки значение | Обновите активный источник секрета и намеренно перезапустите/повторно разверните приложение |
| 4. Жизненный цикл ключа | Был ли ключ удалён, отозван, раскрыт или настроен на истечение срока действия | Исходный ключ больше не может проходить аутентификацию | Создайте замену и безопасно выполните ротацию |
| 5. Проект и разрешения | Участие в проекте, целевой проект и разрешения ключа | Ключ существует, но не имеет доступа, необходимого запросу | Используйте ключ целевого проекта или попросите владельца скорректировать доступ |
| 6. Сетевые ограничения | Исходящий IP-адрес и конфигурация списка разрешённых IP-адресов OpenAI | ip_not_authorized или изменение IP-адреса инфраструктуры |
Обновите список разрешённых адресов; перед повторным тестированием дайте изменениям время на распространение |
1. Подтвердите конечную точку, прежде чем менять ключ
Это самая важная проверка, когда SDK имеет настраиваемый параметр base_url.
- Для запроса к
https://api.openai.com/...требуются учётные данные OpenAI API. - Для запроса к шлюзу или прокси требуются учётные данные и формат аутентификации, документированные этим шлюзом.
- Запрос может выглядеть «OpenAI-совместимым» в коде, но при этом всё равно отправляться на хост, не принадлежащий OpenAI.
Вопрос о том, как получить API-ключ OpenAI, актуален только после подтверждения, что запрос действительно отправляется в OpenAI. Если хост — это шлюз, создание нового ключа OpenAI не исправит ошибку 401 от этого шлюза. Сравните настроенное имя хоста, базовый URL SDK, переменные развёртывания и любую конфигурацию прокси; не записывайте в журналы заголовки Authorization во время этой проверки.
Для конфигурации маршрутизации нескольких моделей храните настройки конечной точки и ключа вместе. Более подробное руководство по устранению неполадок OpenAI-совместимого API охватывает базовые URL, имена моделей, потоковую передачу и проверки, специфичные для маршрутизации, после успешного прохождения этой прямой проверки учётных данных.
2. Убедитесь, что приложение загружает один нужный секрет
Распространённые причины ошибки «недопустимый API-ключ» — обычные ошибки конфигурации:
OPENAI_API_KEYне задан в запущенном процессе, хотя он существует на вашем ноутбуке.- Развёртывание всё ещё ссылается на более старую версию секрета.
- Файл
.envне загружается в среде, которая фактически выполняет запрос. - Значение содержит непреднамеренные кавычки, пробелы, перевод строки или скопированный заполнитель.
- Один путь выполнения кода использует значение библиотеки по умолчанию, а другой переопределяет ключ или базовый URL.
Используйте необратимый отпечаток в закрытой среде отладки. Это позволит сравнить, какой секрет загрузили разные процессы, не выводя сам секрет:
import crypto from "node:crypto";
const key = process.env.OPENAI_API_KEY?.trim();
if (!key) {
throw new Error("OPENAI_API_KEY is not set in this process");
}
const fingerprint = crypto
.createHash("sha256")
.update(key)
.digest("hex")
.slice(0, 12);
console.info({ keyConfigured: true, keyLength: key.length, fingerprint });
Сравните отпечаток в локальной среде разработки, CI, staging, воркерах и production. Не сравнивайте и не храните полный ключ.
3. Проверьте прямой запрос в той же среде выполнения
Выполните минимальный запрос с той же машины, из того же контейнера или задания, где возникает ошибка. Это позволяет отделить загрузку учетных данных от логики приложения. Следующая команда использует стандартный заголовок bearer, но намеренно оставляет ключ в переменной окружения:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
Внимательно интерпретируйте результат:
- Та же ошибка 401 в той же среде выполнения указывает на учетные данные, endpoint, настройку организации/проекта или сетевую политику.
- Успешный ответ указывает на конфигурацию приложения: другую среду выполнения, переопределение base URL, повторное создание клиента или другую переменную окружения.
- Ответ
ip_not_authorizedуказывает на проблему с разрешением IP-адреса, а не на недействительность текста ключа.
Не заменяйте эту проверку запросом из браузера. OpenAI не рекомендует размещать API-ключи в браузерах или мобильных приложениях, поскольку они могут быть раскрыты и использованы другими лицами. Вместо этого отправляйте запросы через собственный backend. В руководстве OpenAI по безопасности API-ключей объясняется почему.
4. Проверьте, не был ли ключ отозван, удален, раскрыт или срок его действия не истек
Секреты OpenAI API полностью отображаются только при создании. Если вы не сохранили секрет, восстановить его из панели управления нельзя; создайте новый и обновите приложение. Удаленные ключи нельзя использовать. Статья OpenAI об управлении ключами подтверждает оба этих поведения.
Если вы настраиваете новую интеграцию, а не устраняете инцидент, воспользуйтесь сопутствующим руководством по использованию Open AI API key в production, где приведен более широкий контрольный список по настройке, безопасности и эксплуатации.
Считайте следующие события поводом для ротации, а не для бесконечных повторных попыток:
- Ключ был удален или намеренно отозван.
- Ключ мог быть закоммичен в репозиторий, отправлен в сообщении, встроен в клиентское приложение или иным образом раскрыт. OpenAI сообщает, что отключает ключи, обнаруженные в публичном интернете или утекшие в приложение из app store.
- Ключ проекта был создан с датой истечения срока действия, и эта дата прошла.
- Развертывание ссылается на предыдущий ключ после запланированной ротации.
Для замены создайте новый ключ в нужном проекте, запишите его в корректное хранилище секретов, разверните его, подтвердите один минимальный запрос, а затем отзовите старый ключ. OpenAI рекомендует устанавливать сроки действия и регулярно проводить ротацию; также рекомендуется использовать отдельные ключи, а не общие учетные данные команды. Ознакомьтесь с актуальными рекомендациями по безопасности.
5. Проверьте участие в проекте и разрешения ключа
Если вы можете создать или увидеть ключ, но командная нагрузка по-прежнему завершается ошибкой, проверьте границы проекта, прежде чем предполагать, что секрет сформирован неправильно. Проекты OpenAI управляют API-ключами, участниками, сервисными аккаунтами, доступом к моделям и лимитами расходов. Для ключей, принадлежащих пользователям, можно установить полные, ограниченные или только для чтения разрешения. Руководство OpenAI по проектам описывает доступные элементы управления.
Задайте следующие вопросы:
- Принадлежит ли ключ тому же проекту, что и ресурсы приложения и предполагаемый сценарий использования?
- Остается ли сервисный аккаунт или пользователь участником этого проекта?
- Есть ли у ключа разрешения для endpoint/ресурса, необходимые этому вызову?
- Если ошибка указывает на организацию, настроен ли клиент для нужной организации, а не для устаревшей?
Проблемы с разрешениями и проектом могут сопровождаться более конкретным сообщением или другим кодом состояния, чем Incorrect API key provided. Сохраните ID запроса ошибки и очищенное от секретов тело ответа для владельца вашей платформы или службы поддержки OpenAI, а не пытайтесь угадать причину.
6. Исключите разрешение IP-адресов перед ротацией действительного ключа
Организация OpenAI может ограничить API-трафик одобренными диапазонами IP-адресов. Запрос с любого другого адреса отклоняется с HTTP 401 и ip_not_authorized, даже если сами учетные данные действительны. Поэтому такую ошибку 401 особенно легко диагностировать неправильно.
Если тип ошибки — ip_not_authorized:
- Определите фактический исходящий IP-адрес нагрузки, а не публичный IP-адрес ноутбука разработчика.
- Сравните его с настроенным списком разрешенных адресов и проверьте, не изменился ли cloud NAT, исходящий адрес serverless-среды или прокси.
- Обновите разрешенный диапазон с помощью соответствующих элементов управления организацией.
- Выждите документированное время распространения изменений, прежде чем снова запускать минимальный тест.
Не изменяйте ключ, пока эта ветвь не будет исключена. Ротация действительного ключа лишь добавляет вторую переменную в инцидент.
Как получить API-ключ OpenAI после ошибки 401
Если данные показывают, что учётные данные отсутствуют, удалены, скомпрометированы или срок их действия истёк, выполните этот краткий процесс восстановления:
- Откройте страницу API-ключей OpenAI в нужной организации и проекте.
- Создайте новый секретный ключ с минимально необходимым для рабочей нагрузки уровнем доступа.
- Сохраните его непосредственно в серверном менеджере секретов или секрете развертывания; не помещайте его в код браузера, закоммиченный файл
.envили общий документ. - Сначала обновите одно окружение и выполните минимальный прямой запрос.
- Разверните изменение в остальных окружениях и подтвердите, что отпечаток изменился там, где ожидалось.
- Отзовите предыдущий ключ только после проверки замены, если только старый ключ не был раскрыт — в таком случае немедленно отзовите его и изучите использование.
Так можно безопасно получить API-ключ OpenAI для восстановления. Это не повод предоставлять один ключ нескольким коллегам или окружениям. Используйте отдельные учётные данные проекта/пользователя или сервисного аккаунта, чтобы будущая ошибка 401 имела меньший радиус воздействия.
Для ошибки 401, связанной со шлюзом, нужен другой вопрос
Если кодовая база использует OpenAI-совместимый SDK с пользовательским base_url, начните с вопроса: Какой сервис получил запрос? Шлюз может вернуть собственную ошибку 401 до отправки чего-либо в OpenAI. В таком случае проверьте учётные данные шлюза, арендатора/рабочее пространство, базовый URL API и идентификатор модели в собственной документации шлюза.
После аутентификации запроса используйте краткое руководство по Flatkey API для целенаправленной настройки совместимого маршрутизатора или вернитесь к руководству по устранению неполадок OpenAI-совместимого API для проверки модели, потоковой передачи и базового URL. Храните прямой ключ OpenAI и ключ шлюза в отдельно названных переменных секретов, чтобы в будущем инцидент был очевиден из конфигурации, а не выявлялся методом проб и ошибок.
Перед закрытием инцидента
- [ ] Имя хоста и
base_urlсоответствуют выдавшей учётные данные стороне. - [ ] Производственный процесс загрузил ожидаемый отпечаток секрета.
- [ ] Ключ не был удалён, отозван, раскрыт и не истёк.
- [ ] Членство в проекте и разрешения ключа соответствуют рабочей нагрузке.
- [ ]
ip_not_authorizedисключён или список разрешённых адресов был обновлён. - [ ] Минимальный запрос работает из проблемной среды выполнения.
- [ ] Полные учётные данные не появились в журналах, системе контроля версий, заявках или чате.
- [ ] Старый ключ был отозван только после проверки замены, если только он не был раскрыт.
Получение API-ключа OpenAI — полезная задача настройки; диагностика хоста, источника секрета, жизненного цикла и сетевой политики превращает исправление ошибки 401 в надёжное устранение проблемы в производственной среде.
Часто задаваемые вопросы
Что означает недопустимый API-ключ в OpenAI?
Это означает, что сервис, обрабатывающий запрос, не смог аутентифицировать предоставленные учётные данные. Для точного сообщения Incorrect API key provided сравните предполагаемый ключ с замаскированным значением в ошибке, убедитесь, что приложение не использует два ключа, и проверьте конфигурацию нужной организации. Другой тип ошибки, например ip_not_authorized, указывает на иную причину.
Как получить API-ключ OpenAI, если старый больше не работает?
Создайте новый секретный ключ в нужном проекте OpenAI, сохраните его в серверном хранилище секретов, обновите активное развертывание и проверьте минимальный запрос, прежде чем отзывать старый ключ. Вы не можете получить полное значение существующего ключа после того, как экран создания был закрыт.
Можно ли исправить ошибку OpenAI 401, поместив новый ключ в JavaScript браузера?
Нет. Браузер или мобильное приложение — неподходящее место для секрета провайдера. Направляйте запросы через свой бэкенд и храните секрет в серверной конфигурации или менеджере секретов.
Почему действительный ключ OpenAI возвращает ошибку 401 ip_not_authorized?
Разрешение IP-адресов в OpenAI может отклонять запросы с адреса, которого нет в списке разрешённых адресов организации. Проверьте фактический исходящий IP-адрес сервера или облачной рабочей нагрузки, затем сравните его с настроенными диапазонами IP-адресов.
Почему новый ключ OpenAI не исправил ошибку 401 шлюза?
Конечная точка шлюза может требовать собственный API-ключ и конфигурацию. Подтвердите имя хоста запроса и используйте учётные данные, выданные оператором этой конечной точки; прямой ключ OpenAI не аутентифицирует запрос к каждому OpenAI-совместимому API.



