Собственное руководство Cloudflare по добавлению множества сайтов скриптом заканчивается двумя лимитами. Страница обновлена 5 мая 2026, и в ней сказано:
There are limitations on the number of domains you can add at a time - specifically, you can only sign up a maximum of 25 domains every 10 minutes.
In addition, if you have over 50 domains and, of those domains, more are pending than active, you will be blocked from adding more. We recommend waiting until your pending sites have been activated before adding more.
Инструкция для портфеля на этом сайте читает второй лимит так, как он написан: соотношение с порогом. Пока доменов меньше пятидесяти, планировать нечего. Так же считали и мы, когда 301.st начал заводить зоны для аккаунтов, которые подключает, через токен с ограниченными правами, то есть через те учётные данные, которые Cloudflare сама рекомендует. Вот что вернулось в ответ:
{
"success": false,
"errors": [
{
"code": 1118,
"message": "You have exceeded the limit for adding zones. Please activate some zones."
}
],
"messages": [],
"result": null
}
Вернулось на аккаунтах с горсткой доменов. На свежем аккаунте вернулось на втором.
Правило, которое сходится с фактами
Ошибка старая, и сообщество сообщало о ней ещё до того, как в руководстве появилось число.
- Март 2019. Сотрудник Cloudflare закрывает тред про код 1118: есть лимит на число ожидающих зон в каждый момент времени, и поднимает его подтверждение ожидающих зон. Порог не назван.
- Сентябрь 2021. Автор треда цитирует тогдашнюю статью поддержки, и порога в ней тоже нет: у аккаунта не может быть больше ожидающих сайтов, чем активных.
- Декабрь 2024. Десять зон, три активны, семь ожидают, дальше блок. Автор читал, что лимит равен пятидесяти, и спрашивает, почему у него десять.
- Январь 2025. Аккаунт на Free с одной зоной. Добавление второй возвращает 1118. Автор удаляет всё и пробует заново: при нуле зон одна заходит, следующая нет.
Со всеми случаями сходится одно правило, и его же мы видим на аккаунтах, которые подключаем: новая зона отклоняется, как только ожидающих зон на аккаунте становится больше, чем активных. Порог в пятьдесят доменов из руководства не проявился ни в одном из них. Проще говоря, добавить можно примерно столько зон, сколько у вас уже активно, а новому аккаунту, где активных нет, дают одну.
Одно это меняет план для портфеля. Не «добавить пятьдесят, активировать, добавить ещё пятьдесят». А добавить одну, активировать, добавить две, активировать их, добавить четыре. Потолок удваивается с каждым кругом, и медленные круги первые, потому что активация ждёт смены NS-серверов у регистратора и того момента, когда Cloudflare это заметит.
Часть, которая зависит от того, кто спрашивает
А вот кусок, который мы нигде не нашли записанным.
Тот же аккаунт, тот же список доменов, тот же запрос к тому же эндпоинту. С API-токеном, ограниченным так, как рекомендует Cloudflare, блок наступает, как только ожидающих становится больше активных. С Global API Key пользователя пачка заходит. Единственные лимиты, в которые мы упирались с ключом, это два документированных: 25 доменов за 10 минут и соотношение после пятидесяти на аккаунте.
| Чем подписан запрос | Новая зона отклоняется, когда | Источник |
|---|---|---|
| API-токен, пользовательский или токен аккаунта | ожидающих зон больше, чем активных, на свежем аккаунте уже со второго домена | наблюдение на аккаунтах, которые мы подключаем; сходится с каждым тредом выше |
| Global API Key | на аккаунте больше 50 доменов и ожидающих больше, чем активных | руководство, и то же мы видим с ключом |
| Любой из них | больше 25 доменов за 10 минут | руководство |
Наше прочтение такое: ключ действует от имени пользователя, тем же субъектом, что и панель, а токен это автоматизация, и потолок ожидающих зон для автоматизации строже. Это прочтение, а не заявление Cloudflare. Считайте весь раздел наблюдаемым поведением на аккаунтах, которыми мы управляем, и проверьте его на своём, прежде чем что-то на нём строить.
Проверьте свой аккаунт двумя запросами
Посчитайте, что у вас есть. Эндпоинт зон фильтрует по статусу и отдаёт общее число без перелистывания списка:
for s in active pending; do
printf '%s: ' "$s"
curl -s "https://api.cloudflare.com/client/v4/zones?account.id=$ACCOUNT_ID&status=$s&per_page=1" \
-H "Authorization: Bearer $CF_API_TOKEN" | jq '.result_info.total_count'
done
Если ожидающих уже столько же или больше, чем активных, попробуйте добавить токеном один свой домен:
curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"name\":\"$DOMAIN\",\"account\":{\"id\":\"$ACCOUNT_ID\"},\"type\":\"full\"}" \
| jq '.success, .errors'
false и следом код 1118 значат, что ваш аккаунт живёт по правилу выше, а не по правилу из
руководства. Тарифа, который бы его снимал, мы не нашли; ответ сотрудника от 2019 года
называет единственным рычагом активацию. Отсюда три дороги.
- Активировать то, что ожидает. Сменить NS-серверы у регистратора, дождаться, пока зона станет активной, и потолок вырастет на единицу. Это правильный ответ, и он медленный: часы на круг, иногда сутки.
- Добавлять руками через панель. По одной, то есть ровно та работа, которую вы собирались убрать скриптом.
- Добавлять через Global API Key. И тут встаёт вопрос, где этому ключу позволено жить.
Почему ключ не должен покидать ваш браузер
Страница Cloudflare про Global API Key перечисляет, что с ним не так:
Access to all Cloudflare resources - Global API key has access to all of a user’s resources. This makes it impossible to safely use Global API key to access non-production resources when a user also has access to production resources.
Full permissions - Similarly, Global API key has the exact same permissions as the user, which means if the user can delete zones or change DNS records, so can the Global API key.
For these reasons, Global API key is not recommended for new customers. Current customers using Global API key are encouraged to migrate and use API tokens instead.
Платформа, которая хранит ваш ключ, держит в руках всё, что держите вы. 301.st его не хранит: при подключении принимается токен с ограниченными правами, а быстрый путь, который принимает ключ, использует его один раз, чтобы выпустить такой токен, и отбрасывает. Это правильная конструкция, и из неё следует, что серверная сторона 301.st не может выполнить тот единственный шаг, где проходит только ключ.
Поэтому шаг добавления переехал в единственное место, где ключ остаётся вашим: в браузер.
Cloudflare Tools
это расширение, которое мы написали в январе 2026 ровно под эту задачу, и оно
открыто. Вы вставляете ключ в боковую
панель. Он шифруется AES-256-GCM случайным ключом, который живёт в сессионном хранилище и
исчезает, когда браузер закрывается. Каждый запрос идёт из вашего браузера на
api.cloudflare.com и больше никуда; нашего сервера на пути нет. Вставьте список доменов,
прогоните предварительную проверку, которая разложит его на «будет создан», «уже есть»,
«невалидный» и «дубль», и запускайте. Пачка идёт в темпе Cloudflare, 25 за 10 минут,
отступает на 429 по Retry-After и продолжается после перезапуска браузера. Та же панель
делает проверку с экспортом в CSV, массовое удаление и массовую очистку кэша.
Это наш инструмент, а не Cloudflare, и он не связан с Cloudflare и не одобрен ею.
Что изменилось в 0.2.0
Версия 0.2.0 вышла 1 сентября 2026. Она уже доступна на Firefox Add-ons и проходит ревью в Chrome Web Store и Edge Add-ons, так что по этим двум ссылкам стоит предыдущая версия, пока ревью не пройдёт.
- Токены, а не только ключ. Пользовательские токены (
cfut_) и токены аккаунта (cfat_) принимаются наряду с Global API Key, а тип определяется по вставленному секрету. Когда на аккаунте уже есть активные зоны, которые можно потратить, хватает токена с правом Zone, Zone, Edit на аккаунт, и ключ вообще не нужно никуда вставлять. Для очистки кэша добавьте Cache Purge. - Профили. Несколько аккаунтов или учётных данных с переключением из шапки. Запущенная пачка остаётся на том профиле, под которым стартовала, что бы вы ни переключили тем временем.
- Кнопка на панели инструментов открывает панель напрямую, интерфейс следует языку браузера на английском и русском, а лента новостей издателя включается явно и по умолчанию выключена.
Следующий выпуск, 0.3.0, замыкает круг на самом лимите: когда число ожидающих на одном аккаунте упирается в потолок, остаток списка переливается на следующий профиль. Лимит считается на аккаунт, поэтому портфель, разложенный по нескольким аккаунтам, это потолок, умноженный на их число.
Где расширение останавливается
Оно добавляет зоны. Оно не переводит их из ожидающих в активные, потому что это происходит у регистратора, и оно не скажет вам через месяц, какие из них до сих пор ожидают, какая запись стала серой и какой домен куда должен был вести. Его работа заканчивается, когда пачка заведена.
Держать портфель в соответствии с реальностью после этого и есть то, что делает 301.st, а инструкция перечисляет шаги, которые она берёт на себя. Для пачки, которая лежит перед вами сегодня, поставьте расширение и вставьте список.