Анкеты и согласия

Согласия — что показать пользователю

В сеть попадает только тот, кто сам включил участие. Добавьте в настройки анкеты переключатели и короткие пояснения. Ниже — тексты, которые можно взять как есть; поменяйте название приложения.

«Показывать меня в сети Перевал» — обязательно

Переключатель выключен по умолчанию. Рядом — ссылка на 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 Когда проверка пройдена. Не в будущем

Отметка действует, если:

  1. Сеть одобрила ваш способ проверки. При подключении опишите, как проверяете фото; сеть смотрит способ один раз. Пока не одобрен, отметки ваших людей в сети не действуют. Площадкам, подключённым до 0.15, способ одобрен при переходе.
  2. Ни одно текущее фото не новее проверки. Фото, с которыми человек впервые пришёл в сеть, покрывает и проверка, сделанная до подключения, — перепроверять ваших людей не нужно. Добавил фото после проверки — отметка выключается, пока вы не пришлёте новый 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, — покажите её без имени и фото: «Аккаунт удалён» / «Больше не в сети»;
  • стирает анкету (имя, фото, описание, город), лайки, дизлайки и блокировки.

Если человек снова включит участие, это будет новая анкета без старых мэтчей.

Непонятно? Напишите разработчику

Ответ и продолжение переписки — на сайте по секретной ссылке, которую вы получите после отправки. Входящая почта не принимается.