Сообщения и перевод
Отправить сообщение
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": []
}
}
}
Как работает перевод
- Сеть определяет язык сообщения; короткие реплики — среди языков автора из
languages. - Если получатель этот язык не знает (его нет в
languagesполучателя), переводит на основной язык получателя — первый вlanguages. Тон, смайлы и стиль сохраняются. - Получатель видит перевод, а оригинал — по нажатию.
Перевод идёт в фоне: 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 дней от стирания — она не является доступной пользователю историей.