Сообщения и перевод

Отправить сообщение

POST /v1/matches/{match_id}/messages
{ "from": "user-123", "text": "Привет! Как прошли выходные?" }

Ответ — сообщение глазами отправителя:

{
  "id": "…",
  "from": "me",
  "text": "Привет! Как прошли выходные?",
  "translated": false,
  "lang": "ru",
  "created_at": "2026-10-24T12:00:00Z"
}

Текст — от 1 до 4000 символов. Только текст: фото и голосовые в версии 0.14 не передаются.

Новые участники

Первые 7 дней в сети участник может начать не больше 20 разговоров в сутки. Сверх этого сеть ответит 429 first_messages_limit. Отвечать в уже начатых разговорах можно без ограничений. Скажите человеку, что новые разговоры можно будет начать завтра.

Получить сообщение

Площадка собеседника получает событие message.created, когда перевод готов:

{
  "id": "evt_…",
  "type": "message.created",
  "data": {
    "match_id": "…",
    "to": "john-77",
    "message": {
      "id": "…",
      "from": "6f1c2b4e-…",
      "text": "Hi! How was your weekend?",
      "text_original": "Привет! Как прошли выходные?",
      "translated": true,
      "lang": "en",
      "created_at": "2026-10-24T12:00:00Z",
      "suspicious": false,
      "flags": []
    }
  }
}

Как работает перевод

  1. Сеть определяет язык сообщения; короткие реплики — среди языков автора из languages.
  2. Если получатель этот язык не знает (его нет в languages получателя), переводит на основной язык получателя — первый в languages. Тон, смайлы и стиль сохраняются.
  3. Получатель видит перевод, а оригинал — по нажатию.

Перевод идёт в фоне: message.created уходит собеседнику, когда перевод готов, — сообщение приходит уже переведённым. Если перевод не удался, сообщение всё равно доставляется — в оригинале, с translated: false.

Разноязычные мэтчи возможны, только если оба участника включили «готов общаться на других языках». Тем, кто не включал, сеть людей без общего языка не показывает.

Как показывать перевод

  • Пометка «переведено ИИ» под сообщением.
  • Нажатие или долгое нажатие — оригинал (text_original).
  • В поле ввода ничего переводить не нужно: пользователь пишет на своём языке.

Признаки мошенничества

Сеть проверяет каждое сообщение на простые признаки обмана:

Флаг Что значит
link Ссылка в начале переписки
phone Номер телефона в начале переписки
messenger Зовёт в другой мессенджер в начале переписки
money Разговор о деньгах
mass_text Тот же текст ещё в нескольких мэтчах за сутки — только вместе с другим признаком: одинаковые приветствия-заготовки не помечаются

Сообщение всё равно доставляется, но с suspicious: true и списком flags:

"message": { "id": "…", "text": "Напиши мне в телеграм, тут неудобно", "suspicious": true, "flags": ["messenger"], … }

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

Прочитано

POST /v1/matches/{match_id}/read
{ "as": "user-123", "up_to": "<id сообщения>" }

Участник прочитал переписку до этого сообщения включительно. id берите из message.created или истории. Ответ — 204. Площадка собеседника получает событие message.read с up_to и read_at и может показать своему пользователю «прочитано».

История

GET /v1/matches/{match_id}/messages?as=user-123&limit=50

Новые сначала. Сообщения собеседника — на языке as, с оригиналом и признаками мошенничества. У своих сообщений — read_at, если собеседник их прочитал. Для более старых передайте before=<id самого старого сообщения>.

История нужна для восстановления после сбоя или для новых устройств. Сеть хранит обычные сообщения до 90 дней от отправки; полную историю храните у себя по событиям. При стирании чата с жалобой отдельно сохраняется скрытая модерационная копия на 90 дней от стирания — она не является доступной пользователю историей.

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

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