• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • 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

Справочник: входящие

Здесь все эндпоинты /site/$SITE/inbox… с параметрами, ответами и отказами: письма на любой адрес домена сайта (info@, sales@, support@) сшиваются в переписки, отсюда их читают, отвечают письмом и держат шаблоны ответа; в консоли это раздел «Входящие», настройки ящика — «Настройки → Почта сайта».

info

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

Как устроена переписка

У переписки два признака: прочитана она или нет (unread) и лежит во входящих или в архиве (archived); статусов «открыта» и «закрыта» нет. Новое письмо делает переписку непрочитанной и возвращает её из архива во входящие. Чужая и несуществующая переписка отвечают одинаково — 404 thread_not_found.

Переписки

GET /inbox/threads

Отдаёт список переписок с отбором, поиском и сортировкой. Ответ — threads, total, page, per_page и unread_count (непрочитанные во входящих, без архива). Например, только непрочитанные:

curl -s "$API/site/$SITE/inbox/threads?unread=1" -H "Authorization: Bearer $OP_TOKEN"
ПараметрТипПо умолчаниюОписание
archivedstring00 — входящие, 1 — архив, all — всё
unreadstringвсе1 — только непрочитанные, 0 — только прочитанные
mailboxstringвсеадрес ящика, на который писали
has_attachmentsstringвсе1 или 0
qstring—поиск по теме, адресу и имени собеседника, началу письма
sortstringlast_message_atlast_message_at, created_at, messages_count, contact
dirstringdescdesc или asc
pageint1номер страницы
per_pageint30до 200
{
  "id": 7,
  "site_id": "x9HTLHECq",
  "domain": "example.com",
  "mailbox": "info@example.com",
  "subject": "Вопрос по заказу",
  "archived": false,
  "unread": true,
  "contact": { "email": "client@example.org", "name": "Анна" },
  "messages_count": 1,
  "preview": "Добрый день! …",
  "has_attachments": false,
  "last_direction": "in",
  "last_message_at": "2026-10-02T17:44:19Z",
  "created_at": "2026-10-02T17:44:19Z",
  "updated_at": "2026-10-02T19:22:38Z",
  "resolved_by": "mail_domain",
  "external_ref": ""
}
ПолеОписание
domain, mailboxдомен и адрес, на который написали
contactсобеседник: email, name
previewначало последнего письма
last_directionчьё последнее письмо: in — собеседника, out — наше
resolved_byкак письмо нашло сайт; mail_domain — по домену адреса
external_refнепустой — переписка ведётся во внешней службе поддержки: здесь она только для чтения, ответ отказывает 409 thread_read_only
КодСтатусКогдаЧто делать
invalid_sort400неизвестный sortвозьмите значение из таблицы

GET /inbox/filters

Отдаёт ящики и счётчики для боковой панели. mailboxes — ящики, на которые уже писали, с числом переписок threads и непрочитанных unread; counts — inbox (во входящих), archived (в архиве), unread; плюс unread_count и has_unread. Например:

curl -s "$API/site/$SITE/inbox/filters" -H "Authorization: Bearer $OP_TOKEN"
{ "mailboxes": [ { "mailbox": "info@example.com", "threads": 1, "unread": 0 } ], "counts": { "inbox": 1, "archived": 0, "unread": 0 }, "unread_count": 0, "has_unread": false }

GET /inbox/unread-count

Отдаёт число непрочитанных переписок во входящих, архив не считается: {"unread_count": 3}. По нему консоль рисует число у пункта меню. Например:

curl -s "$API/site/$SITE/inbox/unread-count" -H "Authorization: Bearer $OP_TOKEN"

POST /inbox/read-all

Снимает «непрочитано» со всех переписок сайта; тело не читается. Ответ — {"success": true, "updated": 3}. Например:

curl -s -X POST "$API/site/$SITE/inbox/read-all" -H "Authorization: Bearer $OP_TOKEN"

GET /inbox/threads/{id}

Отдаёт переписку thread и её письма messages по порядку. Чтение снимает «непрочитано»; ?mark_read=0 — прочитать, не снимая. Например:

curl -s "$API/site/$SITE/inbox/threads/7?mark_read=0" -H "Authorization: Bearer $OP_TOKEN"
Поле письмаОписание
directionin — от собеседника, out — наше
from, to, ccотправитель (email, name) и получатели
subject, body_textтема и текст
has_htmlесть ли HTML-часть — её отдаёт GET …/messages/{mid}/html
attachmentsвложения: id, name, mime, size, stored — сохранён ли файл
mail_statusinbound, sending, sent, draft, failed
mail_error, mail_error_codeпочему наше письмо не ушло
template_idsкакие шаблоны применены в ответе
created_atвремя письма
КодСтатусКогдаЧто делать
thread_not_found404переписки нет на этом сайтепроверьте {id}

PATCH /inbox/threads/{id}

Убирает переписку в архив или возвращает во входящие и ставит отметку «прочитано»; передайте одно поле или оба. Ответ — {"success": true, "thread": {…}}. Например, отметить непрочитанной:

curl -s -X PATCH "$API/site/$SITE/inbox/threads/7" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"read": false}'
ПолеТипПо умолчаниюОписание
archivedbool—true — в архив, false — во входящие
readbool—true — прочитана, false — непрочитана
КодСтатусКогдаЧто делать
nothing_to_update400нет ни одного поляпередайте archived или read
thread_not_found404переписки нет на этом сайтепроверьте {id}

GET /inbox/threads/{id}/messages/{mid}/html

Отдаёт HTML письма как оно пришло, без обработки: {"message_id": 10, "thread_id": 7, "html": "…"}; html: null — HTML-части не было. Показывайте его только в изолированной рамке без скриптов: содержимое чужое. Например:

curl -s "$API/site/$SITE/inbox/threads/7/messages/10/html" -H "Authorization: Bearer $OP_TOKEN"
КодСтатусКогдаЧто делать
message_not_found404письма нет в этой перепискепроверьте {mid}

GET /inbox/messages/{id}/raw

Отдаёт исходник письма файлом .eml (message/rfc822) — только у полученных писем. Например:

curl -s -o letter.eml "$API/site/$SITE/inbox/messages/10/raw" -H "Authorization: Bearer $OP_TOKEN"
КодСтатусКогдаЧто делать
raw_not_found404исходника нет: письмо наше или не сохранено—

GET /inbox/attachments/{id}

Отдаёт вложение файлом с заголовком скачивания. {id} вида <письмо>-<номер> — из attachments письма. Например:

curl -s -OJ "$API/site/$SITE/inbox/attachments/10-1" -H "Authorization: Bearer $OP_TOKEN"
КодСтатусКогдаЧто делать
attachment_not_found404файла нет или он не был сохранён: письмо пришло с описью без содержимого (stored: false)—

Ответ письмом

POST /inbox/threads/{id}/reply

Отправляет ответ собеседнику с темой «Re: …» и ссылками на предыдущие письма, так что в его почте он ложится в ту же цепочку. Нужен текст или хотя бы одно вложение; подпись из настроек ящика дописывается в конец текста. Переписка становится прочитанной и остаётся в своей папке. Например:

curl -s -X POST "$API/site/$SITE/inbox/threads/7/reply" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"body": "Добрый день! Заказ отправлен сегодня.", "template_ids": [3]}'
ПолеТипПо умолчаниюОписание
bodystring""текст ответа, до 100 000 знаков
attachmentsarray[]токены из POST /inbox/uploads, до 10 и не больше 7 МБ на письмо
template_idsarray[]какие шаблоны применены — для счётчика применений

Ушедший ответ — 200 с status: "sent". В отказах ниже, кроме 400, приходят draft — сохранённое письмо — и thread.

КодСтатусКогдаЧто делать
empty_reply400нет ни текста, ни вложенийпередайте body или attachments
body_too_long400текст длиннее 100 000 знаковсократите
too_many_attachments400больше 10 вложенийуберите лишние
invalid_upload, upload_not_found400токен не из POST /inbox/uploads или истёкзагрузите файл заново
attachment_too_large413вложений больше 7 МБуберите лишние
thread_not_found404переписки нет на этом сайтепроверьте {id}
sender_not_verified409отправка с адреса сайта ещё не включена; письмо сохранено черновиком, в ответе stateповторите через POST /inbox/messages/{id}/retry
thread_read_only409переписка ведётся во внешней службе поддержки—
no_recipient422у переписки нет адреса собеседника—
send_failed422 или 502письмо не ушло, сохранено в переписке; retryable — стоит ли повторять, mail_error_code — причинапри retryable: true повторите через retry

POST /inbox/uploads

Загружает файл для вложения в ответ и отдаёт токен, который идёт в attachments. Ответ — {"success": true, "upload": {"token": "upl_…", "name": "a.pdf", "mime": "application/pdf", "size": 1024}}. Например:

curl -s -X POST "$API/site/$SITE/inbox/uploads" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"name": "a.pdf", "mime": "application/pdf", "content": "JVBERi0xLjQK…"}'
ПолеТипПо умолчаниюОписание
namestring—имя файла
mimestring—тип файла
contentstring—файл в base64, до 7 МБ
КодСтатусКогдаЧто делать
invalid_upload400нет content, он пустой или не base64передайте файл в base64
attachment_too_large413файл больше 7 МБуменьшите файл

POST /inbox/messages/{id}/retry

Повторяет отправку нашего письма в draft или failed; отправитель выбирается заново, тело не читается. Исходы и отказы — как у ответа. Например:

curl -s -X POST "$API/site/$SITE/inbox/messages/12/retry" -H "Authorization: Bearer $OP_TOKEN"
КодСтатусКогдаЧто делать
not_outgoing400письмо не наше—
not_retryable409письмо не в draft и не в failed—

GET /inbox/sender

Отдаёт, с какого адреса уйдёт ответ. Ответы уходят с личного адреса сайта на домене платформы, <имя-сайта>-<site_id>@onpress.pro, и ответ собеседника на него возвращается в ту же переписку. Например:

curl -s "$API/site/$SITE/inbox/sender" -H "Authorization: Bearer $OP_TOKEN"
{ "from": "mysite-x9htlhecq@onpress.pro", "from_name": "Мой сайт", "site_address": "mysite-x9htlhecq@onpress.pro", "reply_to": "mysite-x9htlhecq@onpress.pro", "domain": "onpress.pro", "platform_domain": "onpress.pro", "ready": null, "state": "unknown", "checked_at": null }
ПолеОписание
from, from_nameадрес и имя отправителя
reply_toкуда придёт ответ собеседника
readyготова ли отправка по итогу последней попытки: true, false или null — ещё не отправляли
stateready, not_verified, identity_missing или unknown
checked_atкогда проверяли

Настройки ящика

GET /inbox/settings

Отдаёт имя отправителя, подпись, пределы полей, домены сайта, приём почты на них, ящики и отправителя. Например:

curl -s "$API/site/$SITE/inbox/settings" -H "Authorization: Bearer $OP_TOKEN"
{
  "success": true,
  "settings": { "from_name": "", "signature": "", "updated_at": null },
  "limits": { "from_name": 120, "signature": 2000 },
  "domains": ["example.com"],
  "reception": [ { "domain": "example.com", "state": "catch_all", "mx": ["mail.onpress.pro"], "catch_all": "info@example.com" } ],
  "mailboxes": [ { "address": "info@example.com", "threads": 1, "last_message_at": "2026-10-02T17:44:19Z" } ],
  "sender": { "from": "mysite-x9htlhecq@onpress.pro", "from_name": "Мой сайт", "ready": null, "state": "unknown" }
}
ПолеОписание
domainsдомены, письма на которые попадают в этот сайт: подходит любой адрес на них
receptionприём почты по каждому домену: state — catch_all (почта принимается, все адреса собирает ящик catch_all), platform (MX ведёт на платформу, сбор писем не настроен), external (MX ведёт на чужой почтовый сервер), no_mx (у домена нет MX), unknown (проверить не удалось); mx — MX-записи домена
mailboxesадреса, на которые уже писали, с числом переписок
senderто же, что GET /inbox/sender

PATCH /inbox/settings

Меняет имя отправителя и подпись; остальные поля настроек только для чтения. Ответ — настройки целиком, как у GET /inbox/settings. Например:

curl -s -X PATCH "$API/site/$SITE/inbox/settings" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"from_name": "Поддержка", "signature": "С уважением,\nкоманда сайта"}'
ПолеТипПо умолчаниюОписание
from_namestringназвание сайтаимя рядом с адресом отправителя, до 120 знаков, без <, >, " и @; "" — название сайта
signaturestring""подпись в конце каждого ответа через пустую строку, до 2000 знаков; "" — без подписи
КодСтатусКогдаЧто делать
nothing_to_update400нет ни одного поляпередайте from_name или signature
invalid_from_name400длиннее 120 знаков или с запрещёнными символамиисправьте поле
invalid_signature400длиннее 2000 знаковсократите

Шаблоны ответа

GET /inbox/templates

Отдаёт шаблоны сайта (scope: "site") и общие шаблоны платформы (scope: "network"). Например, все шаблоны, частые первыми:

curl -s "$API/site/$SITE/inbox/templates?all=1&order=usage" -H "Authorization: Bearer $OP_TOKEN"
ПараметрТипПо умолчаниюОписание
allstring—1 — и выключенные; без него только is_active
orderstringsortsort, usage — чаще применяемые первыми, title

Шаблон: id, scope, title, body, locale, category, sort, is_active, quick_reply, usage_count, last_used_at.

POST /inbox/templates

Создаёт шаблон сайта. Ответ — {"success": true, "template": {…}}. Например:

curl -s -X POST "$API/site/$SITE/inbox/templates" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"title": "Спасибо", "body": "Спасибо за письмо! Ответим в течение дня."}'
ПолеТипПо умолчаниюОписание
titlestring—название, до 190 знаков
bodystring—текст, до 20 000 знаков
localestring""язык шаблона
categorystring""группа в списке
sortint0порядок в списке
is_activebooltrueпоказывать в полосе шаблонов под полем ответа
quick_replyboolfalseкнопка под полем ответа, которая сразу отправляет этот текст
КодСтатусКогдаЧто делать
invalid_template400нет title или body, или они длиннее пределаисправьте поля

PUT /inbox/templates/{id}

Меняет переданные поля шаблона сайта; поля — как у создания, ответ — {"success": true, "template": {…}}. Например, сделать шаблон быстрым ответом:

curl -s -X PUT "$API/site/$SITE/inbox/templates/3" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"quick_reply": true}'
КодСтатусКогдаЧто делать
nothing_to_update400пустое телопередайте поле
invalid_template400неверное полеисправьте поле
template_not_found404шаблона нет, он чужой или общийменяются только шаблоны своего сайта

DELETE /inbox/templates/{id}

Удаляет шаблон сайта. Ответ — {"success": true, "deleted": 3}. Например:

curl -s -X DELETE "$API/site/$SITE/inbox/templates/3" -H "Authorization: Bearer $OP_TOKEN"
КодСтатусКогдаЧто делать
template_not_found404шаблона нет, он чужой или общийудаляются только шаблоны своего сайта

POST /inbox/templates/{id}/used

Увеличивает usage_count шаблона, ответ — шаблон в template. Обычно не нужен: ответ с template_ids засчитывает применение сам, когда письмо ушло. Например:

curl -s -X POST "$API/site/$SITE/inbox/templates/3/used" -H "Authorization: Bearer $OP_TOKEN"

Общие отказы

КодСтатусКогдаЧто делать
mail_domain_unreadable502не удалось прочитать настройки почтового доменаповторите позже
mail_not_configured503почта на сервере не подключенанапишите в поддержку
arrow_backНазад
Справочник: пользователи и профиль
Далееarrow_forward
Ошибки
На этой странице
  • Как устроена переписка
    • Переписки
      • GET /inbox/threads
        • GET /inbox/filters
          • GET /inbox/unread-count
            • POST /inbox/read-all
              • GET /inbox/threads/{id}
                • PATCH /inbox/threads/{id}
                  • GET /inbox/threads/{id}/messages/{mid}/html
                    • GET /inbox/messages/{id}/raw
                      • GET /inbox/attachments/{id}
                    • Ответ письмом
                      • POST /inbox/threads/{id}/reply
                        • POST /inbox/uploads
                          • POST /inbox/messages/{id}/retry
                            • GET /inbox/sender
                          • Настройки ящика
                            • GET /inbox/settings
                              • PATCH /inbox/settings
                            • Шаблоны ответа
                              • GET /inbox/templates
                                • POST /inbox/templates
                                  • PUT /inbox/templates/{id}
                                    • DELETE /inbox/templates/{id}
                                      • POST /inbox/templates/{id}/used
                                    • Общие отказы
                                    1. Главная
                                    2. Docs
                                    3. Документация OnPress v2
                                    4. Справочник API
                                    5. Справочник: входящие
                                    OnPress
                                    OnPress
                                    ИП Зуев И.В. ИНН: 360408359441
                                    info@onpress.pro
                                    © 2026
                                    политика конфиденциальности публичная оферта
                                    • visa
                                    • mastercard
                                    • sber
                                    • tpay