kosareva.cloud

Ошибка 403 API: что значит forbidden и почему ключ тут не поможет

Сервер узнал ваш ключ и всё равно отказал. Разбираем четыре причины 403, из которых только одна чинится на вашей стороне.

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

Что это значит

Ошибка API с кодом 403 (forbidden) значит, что сервер вас узнал, но выполнять запрос запретил. В этом главное отличие от 401: там ключ не принят, здесь ключ верный, а прав на действие нет. Поэтому перевыпуск ключа при 403 почти никогда не помогает, а проверить надо страну запроса, права ключа, доступ к модели и правила самого сервиса.

У OpenAI самый частый 403 из России приходит с code unsupported_country_region_territory: запрос пришёл с IP, для которого сервис закрыт. У Anthropic это permission_error, и под него попадает как регион, так и ключ без доступа к модели. У OpenRouter 403 значит, что ввод не прошёл модерацию или модель запрещена для вашего региона. У GitHub Copilot 403 с текстом Invalid copilot token означает блокировку аккаунта или сети, и никаким ключом это не чинится.

Порядок разбора простой: сначала прочитать message и code в теле ответа, потом понять, про регион это, про права или про содержимое. Регион ключом не лечится, права лечатся в консоли поставщика, содержимое правкой запроса.

/ Почему

Откуда берётся ошибка

  • Регион: запрос ушёл с IP страны, где сервис не работает. У OpenAI это unsupported_country_region_territory, у Anthropic permission_error.
  • Права ключа: ключ выпущен с ограниченным набором прав или для другого проекта, а вы просите модель или endpoint вне этого набора.
  • Модель недоступна на вашем плане: ключ рабочий, но конкретная модель открыта не всем аккаунтам или не для вашего региона.
  • Модерация ввода: у OpenRouter 403 приходит, когда запрос не прошёл проверку содержимого у провайдера модели.
  • Блокировка аккаунта или сети: Copilot и подобные сервисы отвечают 403 на уровне учётной записи, ключ или VPN здесь не помогают.
/ Тексты ошибок

Что пишет сервер и что это значит

Текст в ответеПричинаЧто делать
unsupported_country_region_territory (OpenAI)IP запроса из региона без поддержкиКлюч не поможет: нужен адрес, доступный из России
permission_error (Anthropic)Регион или ключ без доступа к моделиПроверьте, откуда идёт запрос и что разрешено ключу
403 у OpenRouterМодерация ввода или модель закрыта для регионаПоменяйте модель или уберите спорное содержимое
Invalid copilot token (Copilot)Блокировка аккаунта или сети GitHubКлючом не чинится, рассмотрите другой инструмент
You have insufficient permissionsКлюч с ограниченными правамиВыпустите ключ с нужными правами в консоли поставщика

Тексты приведены по ответам сервисов на момент написания; формулировки меняются от версии к версии.

/ Что делать

Порядок действий

01

Отличите 403 от 401

Код 401 значит «не узнал ключ», 403 значит «узнал и запретил». При 401 проверяйте ключ, при 403 ключ трогать не нужно, пока не поняли причину.

02

Прочитайте code и message

Слова country, region, location говорят про регион. Слова permission, scope, access говорят про права ключа. Слова moderation, flagged говорят про содержимое.

03

Проверьте, откуда идёт запрос

Один curl без прокси покажет, региональная ли это ошибка. Если ответ меняется в зависимости от сети, дело в IP, а не в ключе.

curl https://api.kosareva.cloud/v1/models \
  -H "Authorization: Bearer $KEY"
# 200 со списком моделей: ключ и адрес рабочие
04

Проверьте права и проект ключа

В консоли поставщика у ключа есть проект и набор разрешений. Если модель или endpoint вне них, выпустите ключ заново с нужными правами.

05

Не лечите регион через VPN на автомате

Условия большинства сервисов это запрещают, а общий IP VPN часто уже в чёрном списке и даёт тот же 403 или 429. Надёжнее адрес, который принимает запросы из России.

/ По инструментам

Где это чинится в разных инструментах

  • Cursor, Cline, Continue. В чате видно текст ошибки. Если там country или region, менять ключ бесполезно: нужен другой base URL.
  • Claude Code. 403 при входе через аккаунт из России. С переменными ANTHROPIC_BASE_URL и ANTHROPIC_API_KEY инструмент работает без входа.
  • GitHub Copilot. 403 Invalid copilot token или Copilot is not available in your location. Это блокировка на уровне аккаунта, своим ключом не чинится.
  • Python и Node.js SDK. Исключение PermissionDeniedError, тело ответа в поле body. Ловите его отдельно от AuthenticationError.
/ FAQ

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

Чем 403 отличается от 401?

При 401 сервер не принял ключ: его нет, он неверный или отозван. При 403 ключ принят, но действие запрещено: регион, права, модель или содержимое.

Поможет ли новый ключ?

Только если причина в правах старого ключа. Регион и блокировка аккаунта от ключа не зависят.

Можно ли получить 403 из-за содержимого запроса?

Да, у OpenRouter модерация ввода отвечает именно 403. Уберите спорный фрагмент или выберите другую модель.

/ На kosareva.cloud

Как это выглядит у нас

Наш шлюз принимает запросы с российских IP, поэтому региональный 403 от OpenAI и Anthropic через него не возникает: адрес https://api.kosareva.cloud/v1 для OpenAI-формата и https://api.kosareva.cloud для Claude Code. Если 403 всё же пришёл, тело ответа проброшено без изменений, чтобы вы видели причину. Что мы не чиним: Copilot, вход в Cursor и в ChatGPT, там блокировка на уровне аккаунта.

Ключ, который работает из России

OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.

Получить ключ