Проверка API в песочнице

Для проверки API вам понадобятся тестовый ключ и curl. Вы отправите тестовую анкету, получите ленту песочницы и проверите лайк, мэтч, сообщение и событие. События можно получать вебхуком или забирать запросом к API (шаг 5). Полный путь до запуска описан в обзоре подключения.

1. Получите ключи

Подайте заявку. Мы проверим её вручную и откроем вам кабинет — вход по коду на почту, с которой подавали заявку. Ключи письмом не присылаем: площадка выпускает их в кабинете сама.

В кабинете два контура — тестовый и боевой, у каждого свои значения. Начните с тестового: выпустите ключ и укажите адрес для вебхуков. Ключ показывается один раз — сразу сохраните его.

Что Пример Где хранить
partner_id d097d65b-… где угодно
api_key dn_3f9c… только на сервере, в секретах
webhook_secret whsec_8a1e… на сервере — для проверки подписи вебхуков

Ключ API никогда не кладите в мобильное приложение или в JavaScript на странице: все запросы к сети идут с вашего сервера.

export PEREVAL_API_KEY=dn_...

2. Отправьте анкету

external_id в пути — ваш id пользователя, любой строкой. Сеть будет называть этого человека так же во всех ответах и событиях.

curl -X PUT https://api.pereval.dating/v1/members/user-123 \
  -H "Authorization: Bearer $PEREVAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "consent": {"network": true, "cross_language": true, "given_at": "2026-10-24T12:00:00Z", "text_version": "2026-10-24"},
    "display_name": "Анна",
    "birth_year": 1994,
    "gender": "female",
    "age_min": 28, "age_max": 40,
    "languages": ["ru"],
    "city": {"name": "Москва", "country": "RU", "lat": 55.75, "lon": 37.62},
    "bio": "Горы, джаз и хороший кофе",
    "photos": ["https://cdn.your-app.ru/u/123/1.jpg"],
    "intents": ["serious", "casual"]
  }'

Ответ:

{ "network_id": "6f1c2b4e-8a3d-4c55-9b1e-2f0a7d9c1e44" }

Повторный PUT с тем же external_id обновляет анкету — вызывайте его при каждом изменении профиля. Если у вас уже много людей, которые включили участие, отправьте их пачками до 100 — см. первую загрузку.

3. Получите ленту

curl https://api.pereval.dating/v1/members/user-123/feed?limit=20 \
  -H "Authorization: Bearer $PEREVAL_API_KEY"
{
  "items": [
    {
      "network_id": "1b9e…",
      "partner": { "id": "…", "name": "Знакомства Плюс" },
      "display_name": "Elena",
      "age": 31,
      "gender": "female",
      "city": "Москва",
      "distance_km": 4,
      "languages": ["en"],
      "bio": "Люблю горы и кофе",
      "bio_original": "I love mountains and coffee",
      "bio_translated": true,
      "photos": ["https://…"],
      "photo_verified": true,
      "verified_by": "partner",
      "intents": ["serious", "casual", "friendship"]
    }
  ],
  "remaining_today": 180,
  "next_cursor": "eyJ…"
}

Показывайте эти анкеты вместе со своими. Отметьте, что анкета из сети «Перевал», а если bio_translated — пометку «переведено ИИ» и возможность увидеть оригинал.

В ответе может быть next_cursor. Следующая страница — тот же запрос с cursor. Без курсора повтор вернёт тех же людей. Этот минимум — одна страница.

Если это листалка и человек пропустил анкету без лайка, отметьте дизлайк — сеть не покажет её 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": "5c2a…"}'

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

4. Поставьте лайк

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

{"matched": false} — лайк сохранён, приложение Елены получит событие like.received. Если она ответит взаимностью, оба приложения получат match.created, а ответ на лайк будет {"matched": true, "match_id": "…"}.

5. Примите событие

Сеть шлёт события POST-запросом на ваш адрес вебхуков. Минимальный обработчик на PHP:

<?php
$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, getenv('PEREVAL_WEBHOOK_SECRET'));
if (!hash_equals($expected, $_SERVER['HTTP_X_NETWORK_SIGNATURE'] ?? '')) {
    http_response_code(401);
    exit;
}
$event = json_decode($body, true);
// Повторы возможны: пропускайте событие, если $event['id'] уже обработан.
switch ($event['type']) {
    case 'ping':            /* проверка из кабинета */ break;
    case 'match.created':   /* создать разговор */ break;
    case 'message.created': /* показать сообщение */ break;
}
http_response_code(204);

Проверьте адрес и подпись кнопкой «Отправить проверочное событие» в кабинете — должен прийти ping.

Нет адреса для вебхуков — например, у вас бот или простой хостинг? Не указывайте его в кабинете и забирайте события сами:

curl "https://api.pereval.dating/v1/events?after=0&limit=100" \
  -H "Authorization: Bearer $PEREVAL_API_KEY"

В ответе — items и next_after; следующий запрос делайте с after=next_after. Подробно, на всех языках и со всеми типами событий — в разделе События и вебхуки.

6. Напишите сообщение

curl -X POST https://api.pereval.dating/v1/matches/$MATCH_ID/messages \
  -H "Authorization: Bearer $PEREVAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from": "user-123", "text": "Привет! Как прошли выходные?"}'

Елена русского не знает, поэтому сеть переведёт сообщение на английский и отправит его, как только перевод будет готов, — с оригиналом рядом. Когда она прочитает, вам придёт событие message.read.

Что дальше

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

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