Реклама
Всем привет. Расскажу, как у меня встал бот на OpenRouter и как я его в итоге поднял. Может, кому-то сэкономит вечер.
Что случилось
Вчера вечером бот начал сыпать ошибки в логах. Сначала таймауты, потом стабильный 403 на каждый запрос. Ещё днём всё работало, код я не трогал.
Первая мысль — что-то с ключом или опять лежит API. Открыл status.openrouter[точка]ai — всё зелёное, общего сбоя нет. Баланс тоже в плюсе. То есть сервис жив, деньги есть, а мои запросы не проходят.
Что проверял
Полез смотреть полный ответ сервера, а не только код. В теле ошибки было Access denied by security policy. Это отказ ещё до проверки ключа: сервер просто не принимает запрос с этого адреса.
Проверил, откуда реально уходят запросы:
curl -s https://ifconfig[точка]me
Обычный российский IP.
Для чистоты проверил, отвечает ли API вообще, без всякого ключа:
curl -s -o /dev/null -w "%{http_code}n" https://openrouter[точка]ai/api/v1/models
Тоже 403. Вопрос с ключом и балансом отпал сам собой.
Почитал, что пишут другие. Оказалось, история тянется с весны. В мае владельцам аккаунтов из России приходили письма, что оплата для их региона больше не поддерживается, а с лета запросы с российских IP получают 403. Официально сервис ничего не объявлял, поэтому многие, как и я, узнают об этом по упавшему боту.
Как решил
Перенёс скрипт на зарубежный VPS. Поменял только сервер: ключ, код и Base URL (https://openrouter[точка]ai/api/v1) остались прежними. Тот же curl вернул 200, бот поднялся, ошибки из логов ушли. С тех пор ни одного 403.
Что не поможет, если у вас та же картина:
- VPN в браузере. На бота или скрипт он не влияет, запросы идут с IP машины, где они запущены.
- Перевыпуск ключа и пополнение баланса. Блок срабатывает раньше, до ключа и денег дело не доходит.
Пара нюансов. В моём случае хватило смены сервера, но, судя по отзывам, если аккаунт пополнялся с российских карт, ограничение висит и на самом аккаунте, и переезд может не спасти. И ещё: в условиях OpenRouter с мая есть пункт, запрещающий обращаться к моделям с ограниченным доступом через VPN и прокси. Держите это в голове, если планируете строить на этом что-то серьёзное.
Если у вас другая ошибка
Пока разбирался, собрал себе шпаргалку. Не каждая ошибка связана с регионом:
| Ошибка | Что значит | Что делать |
|---|
| 403 Access denied by security policy / Not available in your region | Отказ по IP или региону | Проверить, откуда уходят запросы |
| 403 с текстом про moderation или guardrail | Заблокирован сам запрос, регион ни при чём | Смотреть промпт и настройки ключа |
| 402 Payment Required | Закончились кредиты | Пополнить баланс |
| 401 | Неверный или отключённый ключ | Перевыпустить ключ |
| 429 | Превышен лимит запросов | Пауза и повтор |
| Таймауты, Could not connect | Запрос не доходит до сервера | Проверить сеть и IP |
Если в браузере не открывается сам сайт и висит страница Sorry, you have been blocked, это Cloudflare режет по IP. Причина та же.
Мой порядок проверки, если снова что-то упадёт:
- status.openrouter[точка]ai — нет ли общего сбоя.
- Полный текст ошибки в логах, а не только код.
- С какого IP реально уходят запросы.
- Правильный ли Base URL в коде.
- Баланс, если пришёл 402.
Пара слов про деньги
Многие спрашивают, платный он или нет. Оплата по факту: пополняешь баланс и платишь за использованные токены. При пополнении картой берут 5,5% комиссии, но не меньше $0,80, так что закидывать по $5 невыгодно. Есть и бесплатные модели, с :free в названии, но с лимитом: 20 запросов в минуту и 50 в день, а если суммарно купить кредитов на $10 — 1000 в день. Из России бесплатные модели тоже отдают 403, потому что блок срабатывает раньше, чем запрос доходит до модели.
Если у вас тоже посыпались ошибки, пишите сюда код и текст ошибки, откуда запускаете и какую модель дёргаете (ключи замазывайте). Разберёмся.