Короткий ответ
Country, region, or territory not supported — это отказ OpenAI из-за того, откуда пришёл запрос, а не из-за ключа или аккаунта. OpenAI смотрит, в какой стране находится IP-адрес запроса, и если страны нет в списке поддерживаемых, сразу отвечает HTTP 403 — ключ при этом даже не проверяется. Поэтому новый ключ, пополнение баланса и переустановка SDK не помогут. Решений два: отправлять запросы из поддерживаемой страны или через API-шлюз, который доступен из вашей страны и сам передаёт запрос модели.
Как выглядит ошибка
Ответ api.openai.com целиком:
{
"error": {
"code": "unsupported_country_region_territory",
"message": "Country, region, or territory not supported",
"param": null,
"type": "request_forbidden"
}
}
Код ответа — 403 Forbidden. В официальных SDK для Python и Node это PermissionDeniedError (403) с тем же JSON внутри; Codex CLI показывает 403 Forbidden с тем же текстом; chatgpt.com из тех же мест тоже отвечает 403.
Мы воспроизвели ошибку 19 октября 2026 года с сервера в Гонконге: запрос вообще без API-ключа получил ровно этот ответ. Это самое простое доказательство, что дело не в ключе.
Почему так происходит
OpenAI публикует список стран и территорий, где работает её API; запросы из остальных мест отклоняются, а на той же странице сказано, что доступ из стран вне списка может привести к блокировке аккаунта. На 19 октября России в списке нет, как нет и материкового Китая, Гонконга и Макао.
Важно, откуда приходит запрос, — и это не всегда то место, где находитесь вы:
| Ситуация | Почему возникает ошибка |
|---|---|
| Вы в стране, которой нет в списке | Запрос уходит с вашего подключения |
| Сервер или CI-машина в неподдерживаемом регионе (например, в гонконгском регионе облака) | Запрос уходит с IP сервера, где бы вы ни были |
| VPN, прокси или корпоративный шлюз выходят в интернет в неподдерживаемой стране | OpenAI видит адрес выхода, а не ваш |
| Прокси настроен для браузера, но не для терминала | SDK или Codex подключаются напрямую, из вашей реальной страны |
Как исправить
1. Проверьте, откуда уходят запросы
Выполните на той же машине, в том же терминале или контейнере, откуда идёт вызов API:
curl https://ipinfo.io/country
Команда выведет двухбуквенный код страны (например, RU). Если этой страны нет в списке OpenAI — причина найдена. На сервере проверьте ещё регион облака, на своём компьютере — заданы ли HTTPS_PROXY / HTTP_PROXY в терминале, где запускается код.
2. Если вы в поддерживаемой стране — поменяйте маршрут
Перенесите сервис в регион облака в поддерживаемой стране или переключите выход прокси. Не пытайтесь маскировать доступ из неподдерживаемой страны: условия OpenAI позволяют заблокировать аккаунт, и баланс пропадёт вместе с ним.
3. Если вы в неподдерживаемой стране — используйте шлюз
API-шлюз принимает запрос на своём домене и передаёт его модели. В коде меняются только base URL и ключ, формат запросов остаётся совместимым с OpenAI. TeamoRouter — такой шлюз: на https://api.teamorouter.cn доступны GPT-6 и другие модели OpenAI, а также Claude и Gemini с одного баланса; аккаунт OpenAI не нужен, VPN тоже.
OpenAI Python SDK
from openai import OpenAI
client = OpenAI(
api_key="sk-teamo-...", # ключ из консоли TeamoRouter
base_url="https://api.teamorouter.cn/v1",
)
resp = client.responses.create(model="gpt-6-sol", input="Привет")
print(resp.output_text)
curl
curl https://api.teamorouter.cn/v1/responses \
-H "Authorization: Bearer $TEAMOROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-6-sol", "input": "Привет"}'
Codex CLI — запишите в ~/.codex/config.toml, ключ задайте в переменной OPENAI_API_KEY:
model_provider = "teamorouter"
model = "gpt-6-sol"
[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.cn/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
Подробнее — в документации по API и в статье «Codex в России».
Как оплатить без аккаунта OpenAI
Баланс пополняется в консоли TeamoRouter, списание — только за использованные токены, подписки нет, минимальное пополнение — $5.
Оплата в рублях: в окне пополнения выберите способ справа на кнопке «Оплатить» — СБП, Т-Банк, ЮMoney или SberPay — и нажмите на кнопку.
Частые вопросы
Эта ошибка значит, что мой аккаунт OpenAI заблокирован? Нет. Она возвращается до проверки ключа и ничего не говорит об аккаунте. Проблемы с аккаунтом выглядят иначе и появляются только после того, как запрос пропущен.
Поможет ли VPN? Если выход VPN в поддерживаемой стране, запрос обычно проходит. Но по условиям OpenAI доступ из неподдерживаемых стран может закончиться блокировкой аккаунта, так что это риск для аккаунта и баланса, а не решение.
Почему в браузере работает, а в коде — ошибка? Прокси-расширения браузера и системные настройки прокси часто не действуют на программы в терминале. Выполните проверку ipinfo.io в том терминале, где запускается код.
unsupported_country_region_territory — это то же, что 429? Нет. 429 значит, что запрос принят, но превышен лимит запросов или закончилась квота. 403 — отказ из-за того, откуда пришёл запрос.
Ошибка в Codex — что менять? Base URL: через model_provider в config.toml, как показано выше. Вход через аккаунт ChatGPT из неподдерживаемой страны тоже не сработает.
Что ещё почитать
- Codex в России — установка и настройка по шагам.
- Gemini API в России — такое же ограничение по региону у Google.
- Как оплатить ChatGPT из России — подписка или GPT-6 по API.