> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ruapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI API: «unsupported_country_region_territory» (403) — что значит и как исправить

> Ошибка 403 «Country, region, or territory not supported» (код unsupported_country_region_territory) в OpenAI API: почему OpenAI отклоняет запрос по местоположению, почему она бывает даже на облачном сервере и как подключить модели GPT без этой ошибки — поменять ключ и адрес.

**Коротко:** эту ошибку возвращает сам OpenAI, когда запрос к API приходит из места, которого нет в его списке стран. Проверяется адрес, откуда пришёл запрос, а не ключ: новый ключ или пополненный баланс не помогают. Чтобы ошибка ушла, запрос должен идти к OpenAI не с вашего адреса. С ключом RuAPI так и есть: вы меняете ключ и адрес в коде, а модели GPT остаются те же — VPN не нужен.

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

Ответ с кодом **403**:

```json theme={null}
{
  "error": {
    "code": "unsupported_country_region_territory",
    "message": "Country, region, or territory not supported",
    "param": null,
    "type": "request_forbidden"
  }
}
```

В Python SDK она приходит как `openai.PermissionDeniedError: Error code: 403` с этим же телом.

## Почему так происходит

* **OpenAI проверяет, откуда пришёл запрос.** Если адрес относится к стране, которой нет на странице [Supported countries and territories](https://developers.openai.com/api/docs/supported-countries), запрос отклоняется до того, как дойдёт до модели.
* **Ошибка бывает и на серверах в поддерживаемых странах.** На форуме разработчиков OpenAI ([пример обсуждения](https://community.openai.com/t/cloud-run-in-asia-northeast3-suddenly-getting-unsupported-country-region-territory-error-from-openai-api/1279969)) о ней сообщали с облачного сервера в поддерживаемой стране. В том обсуждении OpenAI позже исправил это на своей стороне, а одному из пользователей помогла смена региона облака.
* **VPN — рискованный обход.** На той же странице OpenAI предупреждает, что доступ из стран вне списка может привести к блокировке или приостановке аккаунта. Вместе с аккаунтом пропадает и внесённый баланс.

## Что можно сделать

| Ситуация | Что делать |
| - | - |
| Сервер в поддерживаемой стране, но ошибка есть | Проверьте, где определяется адрес сервера (`curl ipinfo.io`), смените регион облака или выход в интернет |
| Вы сами в регионе, которого нет в списке OpenAI | Подключите модели GPT через RuAPI — шаги ниже |
| Код уже написан под OpenAI SDK | Ничего не переписывайте: меняются только `api_key` и `base_url` |

## Как подключить GPT через RuAPI

**1. Регистрация**

Зарегистрируйтесь на [www.ruapi.ai](https://www.ruapi.ai/?utm_source=docs\&utm_campaign=ru-openai-unsupported-country-region-territory) — по email, через Google или Яндекс.

**2. Пополнение**

Консоль → **«Кошелёк»**: USDT или USDC (TRC20 / BEP20 / Polygon; USDT — ещё и в сети TON), от 5 USDT. Если USDT ещё нет — [купите за рубли через СБП](https://docs.ruapi.ai/ru/buy-usdt.md). Карты иностранных банков (Visa / Mastercard) тоже принимаются.

**3. Ключ**

Консоль → **«API-ключи» → «Создать ключ»** — получите строку `sk-...`.

**4. Замена в коде**

Поменяйте ключ и адрес — остальной код остаётся как был.

```python Python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-ваш-ключ-RuAPI",
    base_url="https://www.ruapi.ai/v1",
)

resp = client.chat.completions.create(
    model="gpt-6-luna",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)
```

```javascript Node.js theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-ваш-ключ-RuAPI",
  baseURL: "https://www.ruapi.ai/v1",
});

const resp = await client.chat.completions.create({
  model: "gpt-6-luna",
  messages: [{ role: "user", content: "Привет!" }],
});
console.log(resp.choices[0].message.content);
```

```bash curl theme={null}
curl https://www.ruapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-ваш-ключ-RuAPI" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6-luna", "messages": [{"role": "user", "content": "Привет!"}]}'
```

Можно не трогать код вовсе: многие программы читают переменные окружения `OPENAI_API_KEY` и `OPENAI_BASE_URL` — достаточно задать в них ключ RuAPI и `https://www.ruapi.ai/v1`. Какие модели GPT есть и чем отличаются — в [гайде по GPT API](https://docs.ruapi.ai/ru/gpt-api.md).

## Частые вопросы

> [accordion] Поможет ли новый ключ или пополнение баланса OpenAI?
>
> Нет. OpenAI проверяет не ключ и не баланс, а адрес, откуда пришёл запрос. С того же адреса новый ключ получит ту же ошибку.

> [accordion] ChatGPT в браузере работает, а API — нет. Почему?
>
> Это разные сервисы с разными проверками, а подписка ChatGPT Plus к API не относится: API оплачивается отдельно. Подробнее — [API-ключ OpenAI: где взять и как оплатить](https://docs.ruapi.ai/ru/openai-api-key-russia.md).

> [accordion] Ошибку пишет не мой код, а программа (Cursor, n8n, Cline…)
>
> В настройках программы найдите поле «OpenAI API key» и «Base URL» (иногда «OpenAI-compatible»), впишите ключ RuAPI и `https://www.ruapi.ai/v1`. Готовые инструкции — в разделе «Интеграции».

> [accordion] Это оригинальные модели OpenAI?
>
> Да. Это оригинальные модели — gpt-6.1-sol, gpt-6-luna, gpt-5.4-mini и другие — без подмены и урезания.

## Дальше

> [card] [API-ключ OpenAI](https://docs.ruapi.ai/ru/openai-api-key-russia.md)
>
> Где взять ключ и как оплатить.

> [card] [Коды ошибок RuAPI](https://docs.ruapi.ai/ru/errors.md)
>
> 400, 401, 403, 429 — что значит и как исправить.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.