Старт: приложение-листалка

Для приложения, где человек открывает одну анкету, лайкает или пропускает, и так до конца колоды. Если у вас сайт с фильтрами и страницами — это другой старт: сайт с поиском.

Ключ API живёт только на сервере. Приложение говорит с вашим сервером, сервер — с https://api.pereval.dating.

Что хранить у себя

Поле Зачем
network_id пришёл в ответ на PUT /v1/members/{ваш id}
match_id разговор с человеком из сети, из match.created
next_after если забираете события сами, а не вебхуком

external_id в запросах — ваш id пользователя, строка.

Согласие и анкета

Переключатель «Показывать меня в сети Перевал» выключен по умолчанию, рядом ссылка на pereval.dating. Тексты согласий — в разделе Анкеты и согласия. Включил или изменил анкету — PUT /v1/members/{ваш id}. Выключил — тот же PUT с consent.network: false. Удалил данные из сети или аккаунт — DELETE /v1/members/{ваш id}.

Пока человек не включил участие, ленту сети ему не запрашивайте.

Колода

curl "https://api.pereval.dating/v1/members/user-123/feed?limit=20" \
  -H "Authorization: Bearer $PEREVAL_API_KEY"

Отметьте на карточке, что анкета из сети «Перевал». Если bio_translated — пометка «переведено ИИ» и оригинал из bio_original. Если в карточке есть videos, ролик играет с url, до этого виден poster. Старт без звука; включать звук у всех роликов сразу — один переключатель, не у каждого ролика. Площадка без видео показывает poster как ещё одно фото.

Человек пропустил анкету без лайка — это дизлайк, она скроется на 30 дней:

curl -X POST https://api.pereval.dating/v1/dislikes \
  -H "Authorization: Bearer $PEREVAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from": "user-123", "to": "<network_id>"}'

Следующий запрос ленты без курсора вернёт тех же людей, кого ещё не лайкнули и не дизлайкнули. Чтобы взять следующую пачку, не помечая пропуск, передайте cursor из next_cursor. Для листалки обычный путь — дизлайк на пропуск.

В сутки один человек видит не больше 200 новых людей из сети. Остаток — remaining_today. Повторный показ тех же анкет остаток не уменьшает.

Лайк и переписка

POST /v1/likes с from = ваш id и to = network_id. Ответ matched: true — сразу есть match_id. Иначе мэтч придёт событием match.created, когда лайкнут в ответ.

Сообщение — POST /v1/matches/{match_id}/messages. События (like.received, match.created, message.created) приходят вебхуком или их забирают GET /v1/events. Подпись и повтор — в разделе События и вебхуки.

Писать без взаимного лайка нельзя.

Готово, когда

  • Ключ только на сервере, участие выключено по умолчанию.
  • Анкета уходит в сеть при включении и при правке, скрывается при выключении, стирается при удалении.
  • В колоде есть люди из других приложений, на карточке видно, откуда они.
  • Пропуск — дизлайк, лайк — POST /v1/likes, мэтч открывает переписку.
  • События не двоятся: вебхук сверяет подпись по сырому телу, либо хранится next_after.
  • Переведённое описание помечено, оригинал можно открыть.

Дальше по желанию: суперлайк, «Весь мир», проверка фото. Это уже лента и мэтчи и анкеты. Перед боевым ключом — тестовый контур.

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

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