Блог

OpenAI: «Country, region, or territory not supported» (403 unsupported_country_region_territory) — причины и решение

Короткий ответ

Country, region, or territory not supported — это отказ OpenAI из-за того, откуда пришёл запрос, а не из-за ключа или аккаунта. OpenAI смотрит, в какой стране находится IP-адрес запроса, и если страны нет в списке поддерживаемых, сразу отвечает HTTP 403 — ключ при этом даже не проверяется. Поэтому новый ключ, пополнение баланса и переустановка SDK не помогут. Решений два: отправлять запросы из поддерживаемой страны или через API-шлюз, который доступен из вашей страны и сам передаёт запрос модели.

Как выглядит ошибка

Ответ api.openai.com целиком:

json
{
  "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:

bash
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

python
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

bash
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:

toml
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 из неподдерживаемой страны тоже не сработает.

Что ещё почитать

Готовы подключиться?Войдите в консоль, пополните баланс и создайте API-ключ.