• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
OnPress OnPress
  • Документация
  • Контакты
Войти
Обзор Справочник API
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
Устройство сайта
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Справочник: сайты

Здесь эндпоинты /sites… с параметрами, ответами и отказами; свой домен — /sites/{id}/custom-domain — на странице Домены; как создать сайт и подключить домен по шагам — на страницах «Сайты и домены» и «Свой домен».

info

Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Как получить токен и в какой форме приходят отказы — на странице «Доступ и токен».

Как адресуется сайт

Эндпоинты /sites… пишутся без префикса /site/$SITE: сайт задаёт {id} в пути — site_id сайта или полный домен (example.com). Вы работаете только со своими сайтами: на чужой и на несуществующий сайт API отвечает одинаково — 404 site_not_found, поэтому перебором id нельзя узнать, какие сайты есть на платформе.

GET /sites

Отдаёт список ваших сайтов — тех, где вы администратор, как в консоли в разделе «Сайты». Сайт, где вы только участник, в список не попадает. Например, все сайты в эфире:

curl -s "$API/sites" -H "Authorization: Bearer $OP_TOKEN"
ПараметрТипПо умолчаниюОписание
statusstringactiveactive — сайты в эфире; trash — сайты в архиве после DELETE /sites/{id}, их можно вернуть; all — и те и другие
{
  "success": true,
  "status": "active",
  "total": 1,
  "sites": [
    { "site_id": "x9HTLHECq", "domain": "test.onpress.pro", "name": "Test", "role": "administrator", "url": "https://test.onpress.pro", "status": "active" }
  ]
}

site_id — id для адресов /site/$SITE/…, name — название сайта (домен, если названия нет), role — ваша роль на сайте, status — active или trash. Список отсортирован по названию.

КодСтатусКогдаЧто делать
invalid_status400status не active, trash или allисправьте параметр

GET /sites/{id}

Отдаёт карточку сайта: site_id для адресов /site/$SITE/…, домен, видимость, тему, главную страницу, языки и объём содержимого. Кроме site_id и домена, {id} может быть коротким именем: поддоменом onpress.pro (mysite от mysite.onpress.pro) или первой меткой своего домена (example от example.com). Короткое имя ищется только среди ваших сайтов и только после точного совпадения. Например, карточка тестового сайта:

curl -s "$API/sites/test.onpress.pro" -H "Authorization: Bearer $OP_TOKEN"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "blog_id": 233,
  "is_super_admin": false,
  "realm": "prod",
  "instance_realm": "prod",
  "domain": "test.onpress.pro",
  "path": "/",
  "public": 1,
  "blog_public": 1,
  "archived": 0,
  "deleted": 0,
  "registered": "2026-09-12T17:37:06.000Z",
  "last_updated": "2026-10-27T16:23:51.000Z",
  "blogname": "Test",
  "blogdescription": "",
  "home": "https://test.onpress.pro",
  "theme": { "template": "onpress-v2", "stylesheet": "onpress-v2", "current_theme": "onpress-v2" },
  "show_on_front": "page",
  "page_on_front": 5776,
  "site_icon": 4827,
  "languages": { "default": "en", "list": ["en", "ru"] },
  "counts": { "post_types": { "page": 108, "attachment": 67, "…": "…" }, "pages": 108, "menus": 14, "frames": 34, "datasets": 15 }
}
ПолеОписание
site_idid сайта для адресов /site/$SITE/…
blog_idвнутренний номер сайта
realm, instance_realmчей это сайт и какой экземпляр API ответил; при расхождении запись отклоняется 409 wrong_realm — подробно в «Контурах»
public, blog_publicоткрыт ли сайт поисковикам: 1 — да, 0 — нет
archived, deleted1 — сайт удалён в архив
blogname, blogdescriptionназвание и подзаголовок сайта
homeадрес главной
show_on_front, page_on_frontpage и id главной страницы или posts
site_iconid картинки иконки сайта, 0 — нет
languagesязык по умолчанию и список языков; null — сайт одноязычный
countsчисло записей по типам, страниц, меню, фреймов и наборов данных
КодСтатусКогдаЧто делать
site_not_found404сайта нет или он не вашпроверьте {id}; список своих сайтов — в консоли
site_ambiguous409короткое имя подходит к нескольким вашим сайтам, они в candidatesадресуйте сайт полным доменом, site_id или номером

GET /sites/plans

Отдаёт тарифы, по которым вы можете создать сайт: plan — код для POST /sites, price — рубли за период period_months, recurring: true — оплата списывается каждый период, free: true — сайт бесплатный и создаётся сразу. У тарифа с несколькими периодами код годового — имя тарифа (simple), месячного — с окончанием -monthly (simple-monthly). Если у вас уже есть сайт, вместо simple в списке приходит additional — следующий сайт. Например:

curl -s "$API/sites/plans" -H "Authorization: Bearer $OP_TOKEN"
{
  "success": true,
  "plans": [
    { "plan": "simple", "product": "simple", "name": "Simple", "description": "Onpress: создание сайта", "price": 12000, "currency": "RUB", "period_months": 12, "recurring": true, "free": false },
    { "plan": "simple-monthly", "product": "simple", "name": "Simple", "description": "Onpress: создание сайта", "price": 1400, "currency": "RUB", "period_months": 1, "recurring": true, "free": false },
    { "plan": "helper", "product": "helper", "name": "Helper", "description": "Onpress: создание сайта с ассистентом", "price": 12000, "currency": "RUB", "period_months": 12, "recurring": true, "free": false }
  ]
}

POST /sites

Создаёт сайт по тарифу. Бесплатный тариф или уже оплаченный заказ этого тарифа — сайт создаётся сразу, до 300 секунд, и ответ приходит со статусом 201. Платный тариф — POST /sites заводит заказ и отвечает 402 payment_required со ссылкой на оплату. Например, заказ сайта mysite.onpress.pro по годовому тарифу:

curl -s -X POST "$API/sites" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"name": "mysite", "title": "Мой сайт", "plan": "simple"}'
ПолеТипПо умолчаниюОписание
namestring—поддомен: латиница, цифры и -, до 50 символов, без дефиса в начале и в конце, заглавные приводятся к строчным; заняты www, api, admin, mail, ftp, cdn, static, app, apps, stage, test. Сайт получит адрес <name>.onpress.pro
planstring—код тарифа из GET /sites/plans
titlestringnameназвание сайта
emptyboolfalseсайт без демо-контента: оформление без демо-страниц, меню и данных
keep_framesarray[]слаги или id фреймов, которые остаются при empty: true
publicbooltrueвидимость для поисковиков; false — закрыть сайт до запуска
{
  "success": false,
  "error": "payment_required",
  "message": "the plan is paid: open payment_url in a browser and pay, then poll GET /sites/orders/{order_id}",
  "order_id": 123,
  "status": "pending",
  "plan": "simple",
  "amount": 12000,
  "currency": "RUB",
  "payment_url": "https://onpress.pro/order-pay/?order=123&t=0f3c…"
}

Откройте payment_url в браузере и оплатите картой. Страница оплаты открывается без входа в аккаунт и годится только для этого заказа, поэтому отдавайте ссылку только тому, кто платит. После оплаты сайт создаётся сам, обычно за одну-две минуты, — статус показывает GET /sites/orders/{order_id}. Повторный POST /sites с тем же тарифом до оплаты вернёт тот же заказ и ту же ссылку. Если имя заняли, пока заказ ждал оплаты, сайт получит его с двузначным окончанием: mysite-42. Ответ 201 несёт site_id, blog_id, domain, realm, order_id, plan, public и author.

КодСтатусКогдаЧто делать
plan_required400нет planвозьмите код из GET /sites/plans
invalid_name400name не подходит: не те символы, длиннее 50, дефис по краям или имя из занятыхвыберите другое имя
invalid_keep_frames400keep_frames не массив строк или передан без empty: trueисправьте поле
unknown_field400в теле поле, которого нет в таблице выше; имена — в fieldsуберите поле
payment_required402тариф платный: заказ заведён, в ответе order_id, payment_url, amount, currencyоплатите по ссылке и следите за заказом
plan_not_available403тариф вам недоступенвыберите другой тариф
plan_not_found404такого кода нет среди ваших тарифов; доступные — в plansвозьмите код из plans
site_exists409сайт domain уже естьвыберите другое имя
order_in_progress409сайт по этому тарифу уже создаётся, номер в order_idследите за заказом
site_create_failed502сайт не создалсянапишите в поддержку и укажите order_id

GET /sites/orders/{order_id}

Отдаёт статус заказа сайта. Заказ видит только его владелец, заказы из консоли видны здесь же по номеру. Например, заказ после оплаты:

curl -s "$API/sites/orders/123" -H "Authorization: Bearer $OP_TOKEN"
{ "success": true, "order_id": 123, "status": "site_created", "plan": "simple", "name": "mysite", "blog_id": 279, "site_id": "R4wPE3dwq", "domain": "mysite.onpress.pro" }
statusОписание
pendingне оплачен; в ответе снова payment_url
paidоплачен, сайт создаётся
site_createdготово: site_id, blog_id, domain
failedсайт не создался

Если сайт заказа уже удалён насовсем, в ответе site_removed: true и site_id: null.

КодСтатусКогдаЧто делать
order_not_found404заказа нет или он не вашпроверьте номер

DELETE /sites/{id}

Удаляет сайт. По умолчанию — в архив: посетители и поисковики сайт больше не видят, а страницы, файлы и настройки остаются, вернуть сайт можно через POST /sites/{id}/restore. С "mode": "purge" сайт удаляется насовсем, без возможности вернуть. Например, сначала посмотреть план удаления:

curl -s -X DELETE "$API/sites/$SITE" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"dry_run": true}'
ПолеТипПо умолчаниюОписание
modestringarchivearchive — в архив; purge — удалить всё
dry_runboolfalseвернуть план, ничего не меняя
confirmstring—домен сайта; нужен для purge непустого сайта, точная строка — в plan.confirm_with

План (plan): exists, domain, hosts, tables_count, tables_bytes, files, content, users (members, orphans), empty, confirm_required, confirm_with. archive отвечает {mode, blog_id, domain, before, removed, plan}, purge — план плюс tables (planned, by_core, swept), dirs и users. Сайт в архиве виден в GET /sites?status=trash.

КодСтатусКогдаЧто делать
invalid_mode400mode не archive и не purgeисправьте поле
unknown_field400в теле лишнее поле—
site_not_found404сайта нет или он не вашпроверьте {id}
site_already_gone409сайт уже удалён—
confirmation_required428purge непустого сайта без confirm; в ответе confirm_with и planповторите с confirm

POST /sites/{id}/restore

Возвращает сайт из архива: сайт снова открывается посетителям, видимость для поисковиков становится прежней. Тело не читается. Сайты в архиве — в GET /sites?status=trash. Например:

curl -s -X POST "$API/sites/$SITE/restore" -H "Authorization: Bearer $OP_TOKEN"

Ответ: blog_id, domain, archived, deleted, public, blog_public, restored_from, static_rebake_needed, rebake, warnings. Сайт, удалённый с purge, не вернуть — 404 site_not_found.

arrow_backНазад
Настройки сайта
Далееarrow_forward
Справочник: кредиты и автоматизация
На этой странице
  • Как адресуется сайт
    • GET /sites
      • GET /sites/{id}
        • GET /sites/plans
          • POST /sites
            • GET /sites/orders/{order_id}
              • DELETE /sites/{id}
                • POST /sites/{id}/restore
                1. Главная
                2. Docs
                3. Документация OnPress v2
                4. Справочник API
                5. Справочник: сайты
                OnPress
                OnPress
                ИП Зуев И.В. ИНН: 360408359441
                info@onpress.pro
                © 2026
                политика конфиденциальности публичная оферта
                • visa
                • mastercard
                • sber
                • tpay