Проверьте ключ одной командой
Тот же адрес и тот же ключ, что в коде. Ответ 200 со списком моделей означает, что ключ живой.
Код 401 почти никогда не значит, что ключ сломан. Обычно он не тот, не туда или не доехал. Проверка занимает минуту.
Коротко: Invalid API key, а у OpenAI дословно Incorrect API key provided, это ответ 401: сервер получил заголовок с ключом, но такого ключа у него нет. Ключ либо изменён при копировании, либо выпущен другим сервисом, либо отозван, либо отправлен не на тот адрес.
Самая частая причина при работе через посредников и агрегаторы: ключ от одного сервиса отправлен на адрес другого. Ключ проверяет тот сервер, куда вы стучитесь, и ключ чужого сервиса для него просто не существует. Второе место занимает переменная окружения, которая не перечитана после правки файла .env.
Быстрая проверка одна: запрос к списку моделей командой curl с тем же ключом и тем же адресом, что в коде. Если он проходит, ключ в порядке, и проблема в том, как его передаёт ваш код.
В разделе «Ключи» видно, когда ключ создан и сколько по нему потрачено. Адрес один для всех моделей.
https://api.kosareva.cloud/v1, ключ из кабинетаfrom openai import OpenAI client = OpenAI( api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1", ) response = client.chat.completions.create( model="gpt-5-6", messages=[{"role": "user", "content": "Привет!"}], stream=True, )
import OpenAI from "openai"; const client = new OpenAI({ apiKey: "ВАШ_API_КЛЮЧ", baseURL: "https://api.kosareva.cloud/v1", }); const response = await client.chat.completions.create({ model: "gpt-5-6", messages: [{ role: "user", content: "Привет!" }], stream: true, });
curl https://api.kosareva.cloud/v1/chat/completions \ -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5-6","messages":[{"role":"user","content":"Привет!"}],"stream":true}'
Ключ агрегатора отправлен на api.openai.com или наоборот.
Пробел, перенос строки или кавычка на конце ключа после копирования из письма или чата.
Файл .env изменён, а в памяти старое значение или пустая строка.
Ключ удалён в кабинете, а в коде остался.
Ключ проекта OpenAI (sk-proj-…) используется с другой организацией в заголовке OpenAI-Organization.
Anthropic ждёт x-api-key, OpenAI-совместимые API ждут Authorization: Bearer.
Ключ подставлен в поле «модель» или в base_url, а поле ключа пустое.
Тот же адрес и тот же ключ, что в коде. Ответ 200 со списком моделей означает, что ключ живой.
Ключ проверяет тот сервер, куда идёт запрос. Ключ и base_url должны быть от одного сервиса.
Не сам ключ, а len(key). Пробел на конце или пустая строка сразу видны.
После правки .env приложение, докер-контейнер или ноду n8n нужно перезапустить.
Если всё сходится, а 401 остаётся, ключ мог быть отозван. Новый ключ и повтор проверки.
Поле OpenAI API Key принимает ключ, кнопка Verify проверяет его сразу. Если вы подменили base_url, ключ должен быть от того же сервиса.
Провайдер OpenAI Compatible: Base URL, API Key и Model ID. Ключ от другого провайдера в этом списке не подойдёт.
Переменные ANTHROPIC_AUTH_TOKEN и ANTHROPIC_BASE_URL. Если задан только токен без адреса, запрос уйдёт в Anthropic и получит 401.
Ключ живёт в Credentials, а не в ноде. Проверьте, что нода использует свежие credentials, а не старую копию.
Параметр openai_api_key либо переменная OPENAI_API_KEY. Если задано и то и другое, побеждает параметр.
Нет. Префикс sk- используют многие OpenAI-совместимые сервисы. Смотрите, где ключ выпущен, а не как выглядит.
Ключ отозвали, истёк срок или сменился адрес. Проверьте командой из первого шага, потом кабинет сервиса.
У большинства сервисов полный ключ показывается один раз при создании. Если не сохранили, выпустите новый.
Значит, программа передаёт ключ не так: переменная окружения не перечитана после правки .env, в ключ попал пробел или кавычка, либо base_url в программе другой. Выведите длину ключа из кода и сравните адрес.
Только если проверка curl с тем же адресом тоже даёт 401. Если curl проходит, ключ живой, и новый ключ ничего не изменит.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.