Анкеты и согласия
Согласия — что показать пользователю
В сеть попадает только тот, кто сам включил участие. Добавьте в настройки анкеты переключатели и короткие пояснения. Ниже — тексты, которые можно взять как есть; поменяйте название приложения.
«Показывать меня в сети Перевал» — обязательно
Переключатель выключен по умолчанию. Рядом — ссылка на pereval.dating, где объяснено, что это за сеть.
Показывать меня людям из других приложений Ваша анкета (имя, возраст, город, фото, описание) будет видна пользователям других приложений знакомств, подключённых к сети Перевал. Переписка с ними идёт здесь, в «[Ваше приложение]». Телефон и email не передаются в сеть. Сеть получает координаты от приложения и хранит их округлёнными; другим пользователям координаты не выдаются. Выключить участие можно в любой момент — новые люди из других приложений вас не увидят, а начатые переписки останутся. Кнопка «Удалить мои данные из сети» удаляет анкету и закрывает мэтчи, но не стирает историю у собеседников: она остаётся без вашего имени и фото. Для разбора жалоб могут сохраняться отдельные копии сообщений.
«Готов общаться на других языках» — по желанию
Знакомиться с людьми, которые говорят на других языках Сообщения и описания анкет могут переводиться автоматически, когда сервис перевода доступен. Оригинал доступен всегда; если перевод не получился, показывается оригинал.
«Весь мир» — по желанию
Для тех, кто хочет познакомиться с человеком из другого города или страны. Включивший получает ленту «Весь мир» (scope=world, см. Лента) и попадает в неё сам — но только к тем, кто тоже это включил. Лучше предлагать вместе с другими языками: иностранцы обычно говорят на других.
Знакомиться с людьми из других городов и стран В ленте появится «Весь мир» — люди откуда угодно, без ограничения по расстоянию. Там только те, кто тоже это включил, и видны вы только им.
«Показывать расстояние до меня» — по желанию
По умолчанию выключено. Город в анкете не меняется. В чужих карточках distance_km появляется, только если человек это включил.
Показывать расстояние до меня Другие увидят, сколько километров до вас. Точный адрес не показывается.
Поиск в другом городе — параметр ленты lat/lon, а не смена города в анкете (смена города по-прежнему не чаще раза в сутки).
Что передать в сеть
"consent": {
"network": true,
"cross_language": true,
"world": false,
"given_at": "2026-10-24T12:00:00Z",
"text_version": "2026-10-24"
}
given_at— когда человек на самом деле включил переключатель (храните у себя).text_version— версия текста, который он видел. Удобно использовать дату изменения текста. Если текст поменялся по существу, попросите согласие заново и обновите версию.- Оба поля — настоящие. Загрузка базы без согласия ведёт к отключению площадки, см. правила сети.
Цели знакомства
Поле intents — чего человек ищет. В ленте встречаются только те, у кого есть общая цель.
| Значение | Цель |
|---|---|
serious |
Серьёзные отношения |
casual |
Без обязательств |
friendship |
Дружба, общение |
arrangement |
Отношения с обеспеченным партнёром |
Если поле не передать, считается ["serious", "casual", "friendship"].
Отношения с обеспеченным партнёром
Отдельная категория — только по явному выбору пользователя.
- Включается для вашего приложения при подключении к сети. Без этого анкеты с
arrangementне принимаются (422). - Обязательна роль
arrangement_role:provider— готов(а) обеспечивать партнёра,seeker— ищет обеспеченного партнёра. - Если у двоих общая цель только
arrangement, они видят друг друга лишь при встречных ролях. - Роль собеседника видна только тем, кто сам в этой категории.
- Предложения «деньги за секс», прайсы и «встречи за вознаграждение» запрещены в любой категории. Жалоба
commercialскрывает участника из сети сразу.
Текст для пользователя:
Ищу отношения с обеспеченным партнёром / Готов(а) обеспечивать партнёра Вас увидят только те, кто выбрал встречный вариант. Это про отношения, а не про услуги: предложения встреч за деньги запрещены и ведут к блокировке.
Когда отправлять анкету
PUT /v1/members/{external_id} вызывайте:
- когда человек включил участие в сети;
- при любом изменении анкеты, фото, предпочтений, города, языков или согласий;
- когда человек прошёл у вас проверку фото — с
verificationили проверку сети.
Запрос идемпотентный: повторная отправка той же анкеты ничего не ломает. Сохраните network_id из ответа — по нему вы узнаете своего пользователя в чужих лентах и не покажете его самому себе.
Описание анкеты сеть переводит в фоне, уже после сохранения. Пока перевода нет, в чужих лентах показывается оригинал.
Первая загрузка
Когда вы подключаетесь, у вас уже могут быть люди, которые включили участие. Отправьте их пачками: PUT /v1/members, до 100 анкет за запрос.
PUT /v1/members
{
"items": [
{ "external_id": "user-123", "consent": { … }, "display_name": "Анна", … },
{ "external_id": "user-124", "consent": { … }, "display_name": "Ольга", … }
]
}
Каждая анкета проверяется отдельно: одна ошибка не мешает остальным. Ответ — результат по каждой, в том же порядке:
{
"items": [
{ "external_id": "user-123", "network_id": "6f1c2b4e-…" },
{ "external_id": "user-124", "error": { "code": "invalid", "message": "birth_year: members must be 18+" } }
]
}
Только тех, кто сам включил участие: загружать базу целиком нельзя.
Требования к анкете
| Поле | Правило |
|---|---|
display_name |
1–50 символов. Только имя, без фамилии и контактов |
birth_year |
Возраст 18+ |
gender |
male или female; пару сеть подбирает противоположного пола |
age_min, age_max |
18 ≤ age_min ≤ age_max |
languages |
Коды ISO 639-1 (две буквы, иначе 422), первый — основной. Эти языки человек знает, и на них сеть ему ничего не переводит; на основной переводит всё остальное. Языки перевода — GET /v1/languages, 38 языков |
city |
Название и страна или координаты. Координаты сеть округляет до ~1 км, но лучше сразу присылать центр города. Город меняется не чаще раза в сутки |
bio |
До 1000 символов |
photos |
1–9 публичных ссылок https://. Без водяных знаков с контактами. Сеть может кэшировать фото |
videos |
необязательно: до 3 роликов рядом с фото, не вместо них. У каждого url (MP4 до 15 секунд) и poster (кадр). Не передали или [] — роликов нет |
verification |
как и когда вы проверили, что человек совпадает с фото, — method, provider, verified_at. Подробно — ниже. или проверкой сети: provider: "pereval" и check_id (ниже) |
photo_verified |
До 0.15 — флаг «проверили». Принимается и сейчас как заявка «способ не указан» на момент получения; лучше присылайте verification |
height_cm |
необязательно: рост в сантиметрах, 120–230. Не знаете — не передавайте |
show_distance |
по умолчанию нет: в чужих карточках будет distance_km |
Ошибка проверки — 422 с полем в message, например "birth_year: members must be 18+".
Проверка фото
Значок «фото подтверждено» в чужих лентах и фильтр verified_only работают по отметке photo_verified, которую считает сеть. Вы присылаете заявку — как и когда проверили человека:
"verification": { "method": "selfie", "provider": "own", "verified_at": "2026-10-20T14:03:00Z" }
| Поле | Значение |
|---|---|
method |
selfie — фото-селфи (например, с жестом); video — видео-селфи; liveness — автоматическая проверка живого человека; document — документ со сверкой лица; in_person — встреча вживую; other |
provider |
Кто проверял: сервис (например, Sumsub) или own. До 60 символов |
verified_at |
Когда проверка пройдена. Не в будущем |
Отметка действует, если:
- Сеть одобрила ваш способ проверки. При подключении опишите, как проверяете фото; сеть смотрит способ один раз. Пока не одобрен, отметки ваших людей в сети не действуют. Площадкам, подключённым до 0.15, способ одобрен при переходе.
- Ни одно текущее фото не новее проверки. Фото, с которыми человек впервые пришёл в сеть, покрывает и проверка, сделанная до подключения, — перепроверять ваших людей не нужно. Добавил фото после проверки — отметка выключается, пока вы не пришлёте новый
verified_at. То же фото по новой ссылке сеть узнаёт по содержимому.
Действует ли отметка и почему, видно в ответе на PUT /v1/members:
{ "network_id": "…", "photo_verified": false, "verification": "photos_changed" }
verification |
Что значит |
|---|---|
accepted |
Отметка действует |
none |
Заявки нет |
no_photos |
Нет фото |
partner_not_approved |
Сеть ещё не одобрила ваш способ проверки. Не бывает у заявок по проверке сети |
photos_changed |
Есть фото новее проверки: проверьте человека снова и пришлите новый verified_at |
Сеть выборочно перепроверяет людей с отметкой — небольшую долю и тех, на кого есть сигналы: жалобы «фейк», то же фото у другого человека, сгенерированное фото. Если отметки площадки не проходят перепроверку, сеть перестаёт принимать их у всех её людей.
Проверка фото сетью
Своей проверки нет — возьмите проверку сети. Она бесплатная. Человек проходит её на странице сети: соглашается на сверку, показывает в камеру жест по заданию и делает снимок — только камерой, не из галереи. Сеть сравнивает снимок с каждым фото анкеты и сообщает вам итог по каждому фото. Что делать с итогом, решаете вы.
Хранить снимки и признаки лиц вам не нужно — их у вас не будет. Личность по снимку не устанавливается, признаки лица не сохраняются. Снимок никому не показывается: прошла проверка — он сразу удаляется; не прошла — хранится сутки, чтобы человек мог оспорить итог; оспорил — до решения модератора сети. Согласие на странице называет и вас, и сеть: сеть сверяет фото по вашему поручению.
1. Создайте сессию — со своего сервера, ключом API:
POST /v1/photo-checks
{
"ref": "u_123",
"lang": "ru",
"return_url": "https://your.app/verified",
"photos": [
{ "id": "ph1", "url": "https://cdn.your.app/ph1.jpg" },
{ "id": "ph2", "url": "https://cdn.your.app/ph2.jpg" }
]
}
| Поле | Значение |
|---|---|
ref |
Как вы узнаете человека в итоге, обычно его external_id. 1–200 символов |
photos |
1–9 фото анкеты — публичные https-ссылки. id — ваш идентификатор фото, по умолчанию номер. Сеть скачивает фото сразу |
lang |
Язык страницы: ru или en |
return_url |
Необязательно: https-адрес для кнопки «Вернуться» в конце проверки |
Ответ 201 — сессия, в ней url страницы проверки и expires_at. Не больше 10 сессий на одного человека в сутки (429 photo_check_limit); сервис сверки недоступен — 503 photo_check_off, повторите позже.
2. Откройте человеку url — в браузере, новой вкладке или во встроенном окне приложения (webview с доступом к камере). Ссылка действует 30 минут, на ней до 5 попыток. Встроить страницу в iframe на своём сайте нельзя. Кроме события, итог страница передаёт окну, которое её открыло: postMessage({ type: "pereval.photo_check", status }).
3. Итог приходит событием photo_check.updated — после каждой попытки, когда человек оспорил итог и когда модератор решил; ориентируйтесь на последнее. То же — в GET /v1/photo-checks/{id}:
{
"id": "…", "ref": "u_123", "status": "partial", "attempts": 1,
"checked_at": "2026-10-30T09:14:00Z", "dispute_until": "2026-10-31T09:14:00Z",
"photos": [
{ "id": "ph1", "url": "https://cdn.your.app/ph1.jpg", "verdict": "match" },
{ "id": "ph2", "url": "https://cdn.your.app/ph2.jpg", "verdict": "no_match" }
]
}
status |
Что значит |
|---|---|
created |
Человек ещё не прошёл проверку |
passed |
На всех фото с лицом — он |
partial |
Часть фото не похожа на снимок |
failed |
Не прошла; почему — в reason: no_match (ни одно фото не похоже), no_face, many_faces, no_gesture (жест не узнали), virtual_camera |
disputed |
Человек оспорил итог, решает модератор сети — обычно в течение суток |
resolved |
Модератор решил: итог по фото — его, note — пояснение человеку |
expired |
Ссылка истекла, а человек проверку так и не прошёл |
verdict по фото: match — тот же человек; no_match — не похож; unsure — сверить уверенно не удалось; no_face — лица нет, не в счёт.
4. Отметка в сети. Проверка прошла (passed или resolved) — пришлите заявку со ссылкой на неё:
"verification": { "provider": "pereval", "check_id": "…" }
Сеть сверит, что проверка ваша, прошла и все текущие фото анкеты были в ней с вердиктом match или no_face, причём хотя бы одно — match. Фото узнаётся по ссылке или по содержимому. Тогда отметка действует, даже если ваш способ проверки сеть ещё не одобряла, а verified_at — время проверки. Иначе — 422 с причиной. Новое фото после проверки выключает отметку, как и раньше: проведите человека через проверку снова.
Смена города
Город можно менять не чаще раза в сутки. Если прислать новый город или точку дальше 50 км раньше, чем через сутки после прошлой смены, сеть ответит 409 location_change_limited. Движение в пределах города не ограничено.
Анкета при этом не обновляется. Скажите человеку, что сменить город можно будет через сутки, а остальные изменения отправьте с прежним городом.
Фото
Сеть показывает фото по вашим ссылкам. Требования:
- ссылки доступны без авторизации и не протухают (или обновляйте анкету, когда ссылки меняются);
- из файлов удалены метаданные EXIF — в них бывает геопозиция;
- первое фото — главное, на нём хорошо видно лицо.
Видео
В production видео выключено до появления покадровой модерации. Проверяйте GET /v1/capabilities: при videos: false непустое поле videos отклоняется. Ниже описан формат протокола, а не обещание доступности видео в live-контуре.
Короткий ролик в карточке, рядом с фото. Фото по-прежнему обязательны: по ним проверка лица и карточка у площадки, которая видео не играет.
"videos": [
{
"url": "https://cdn.example/u/1.mp4",
"poster": "https://cdn.example/u/1.jpg"
}
]
- До трёх роликов. Повтор той же
url—422. url— публичный MP4, не длиннее 15 секунд и не больше 20 МБ. Файл остаётся у вас, в ленту уходит ссылка.poster— кадр. Его показывает площадка до воспроизведения и та, которая видео не умеет.- Звука в протоколе нет. Ролик стартует без звука. Включать звук у всех роликов сразу — один переключатель вашего приложения, не флаг каждого ролика.
- Обложка проверяется как фото. Сам файл сеть скачивает и читает длину; кадры внутри не разбирает. Не MP4 —
video_invalid, длиннее 15 секунд —video_too_long, не скачался —video_unavailable. Ссылка на ролик приходит в полеvideoсобытияmember.rejected.
Проверка анкеты
Новую анкету или изменённые фото, ролики, имя, описание сеть проверяет, прежде чем показать в лентах, — обычно за секунды. Не пропускаются:
- откровенные фото;
- оскорбления, угрозы, непристойности, предложения встреч за деньги;
- контакты — телефон, ссылка, ник в мессенджере: общаются люди в приложениях;
- фото, которые не скачиваются (несколько попыток).
Если анкета не прошла, вы получите событие member.rejected с причиной: photo_nudity, offensive_text, contact_info, photo_unavailable, video_invalid, video_too_long или video_unavailable. Если дело в фото или обложке — ссылка в photo, если в ролике — в video. Анкета скрыта и не может лайкать, пока вы не пришлёте исправленную; ту же самую сеть повторно не проверяет. Уже проверенные фото и текст повторно не проверяются.
Лучше проверять анкету у себя заранее: человеку проще поправить её сразу, чем после отказа сети.
Активность
Лента предпочитает тех, кто был онлайн недавно, и скрывает неактивных дольше 30 дней. Сообщайте об активности: POST /v1/members/{id}/active — не чаще раза в несколько минут на пользователя. PUT анкеты тоже обновляет активность.
Если пользователей много, удобнее пачка — раз в несколько минут для всех, кто за это время заходил:
POST /v1/activity
{ "external_ids": ["user-123", "user-124", "user-125"] }
До 1000 id за запрос. Ответ — {"updated": 3}: сколько участников нашлось и обновилось. Неизвестные id сеть пропускает.
Выключение: скрыть, а не удалить
Человек выключил участие — пришлите ту же анкету с consent.network: false. Сеть не удаляет его, а скрывает:
- запись и
network_idте же — мэтчи, переписки, дизлайки и блокировки сохраняются; - в чужих лентах его нет, своей ленты у него нет (
409 member_hidden); - лайкнуть он может только того, кто уже лайкнул его, — это сразу мэтч; суперлайк недоступен (
409 member_hidden); - переписки в начатых мэтчах идут в обе стороны;
- фото скрытому не обязательны — он мог удалить все.
Включил снова — пришлите consent.network: true: человек снова виден, со всей историей. Включать и выключать можно сколько угодно — это не создаёт новых анкет.
Когда скрытый отвечает человеку из сети (пишет в переписку или отвечает на лайк), хорошо предложить ему вернуться: «Снова показывать вас в сети?» с кнопками «Ответить и вернуться в сеть» и «Только ответить». Вернуть — только по нажатию: это снова согласие на показ анкеты.
Отложенное удаление аккаунта
Если ваше приложение даёт 30 дней на восстановление аккаунта, сообщите сети, что человек «удаляется»:
POST /v1/members/{external_id}/deactivate
Анкеты нет в лентах и во «Вас лайкнули», мэтчи заморожены: собеседники получают match.frozen — покажите «Аккаунт удалён», писать нельзя (409 match_frozen). Ничего не стирается. Вернулся — POST /v1/members/{external_id}/restore: всё как было, собеседники получают match.unfrozen. Не вернулся за 30 дней — удалите его (DELETE ниже); если не удалите, сеть сотрёт сама: по закону о персональных данных — не позже 30 дней после отзыва согласия.
Удаление
DELETE /v1/members/{external_id}?reason=account_deleted — когда человек удалил аккаунт у вас; ?reason=left_network (по умолчанию) — когда нажал «Удалить мои данные из сети». Сеть:
- закрывает его мэтчи: вторая сторона получает
match.closedс этимreasonиpeer_deleted: true; - переписка у собеседников остаётся, как в Telegram, — покажите её без имени и фото: «Аккаунт удалён» / «Больше не в сети»;
- стирает анкету (имя, фото, описание, город), лайки, дизлайки и блокировки.
Если человек снова включит участие, это будет новая анкета без старых мэтчей.