К содержимому

REST API

Чаты, группы и каналы

Личные чаты, группы и каналы: создание, участники, роли, настройки, ссылки, закрепы, черновики.

Три типа чатов: private (1-на-1, включая «Избранное»), group и channel (вещание — пишут только owner/admin/moderator). Роли: owner, admin, moderator, member. У публичного канала есть username и страница /c/{username}; в приватный — только по ссылке.

Методы#

GET /api/conversations #

Список чатов

Bearer-токен

Все чаты пользователя (без пагинации), сверху — с последней активностью. type: private, group, channel; «Избранное» — личный чат с самим собой. Содержит превью последнего сообщения, счётчики непрочитанного и упоминаний, mute, черновик и число отложенных.

Параметры

Без параметров.

Запрос

curl
curl 'https://minchatapp.com/api/conversations' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
[
  {
    "id": 1,
    "name": "Design team",
    "type": "group",
    "peer_user_id": null,
    "history_ttl": 0,
    "noforwards": false,
    "my_noforwards": false,
    "peer_noforwards": false,
    "blocked": false,
    "avatar": null,
    "can_send_messages": true,
    "username": null,
    "visibility": "public",
    "share_url": null,
    "last_message": {
      "id": 28,
      "content": "OK",
      "body": "OK",
      "attachments": [],
      "created_at": "2026-10-21T06:46:11.000000Z",
      "user": "Gleb Orlov",
      "user_id": 4,
      "type": "text",
      "preview_code": null,
      "card": null
    },
    "unread_count": 0,
    "unread_mentions_count": 0,
    "muted_until": null,
    "joined_at": "2026-10-20T11:12:46+00:00",
    "draft": null,
    "scheduled_count": 3
  },
  {
    "id": 2,
    "name": "MinChat News",
    "type": "channel",
    "peer_user_id": null,
    "history_ttl": 0,
    "noforwards": false,
    "my_noforwards": false,
    "peer_noforwards": false,
    "blocked": false,
    "avatar": null,
    "can_send_messages": true,
    "username": "minchat_news",
    "visibility": "public",
    "share_url": "https://minchatapp.com/c/minchat_news",
    "last_message": {
      "id": 13,
      "content": "Version 1.0.41 is out: more stable calls and chat folders 📁",
      "body": "Version 1.0.41 is out: more stable calls and chat folders 📁",
      "attachments": [],
      "created_at": "2026-10-20T11:12:47.000000Z",
      "user": "MinChat News",
      "user_id": 1,
      "type": "text",
      "preview_code": null,
      "card": null
    },
    "unread_count": 0,
    "unread_mentions_count": 0,
    "muted_until": null,
    "joined_at": "2026-10-20T11:12:47+00:00",
    "draft": null,
    "scheduled_count": 0
  }
]
GET /api/conversations/{conversation} #

Чат и сообщения

Bearer-токен

Карточка чата и страница сообщений (курсорная пагинация, по возрастанию id). Без курсоров — последние limit сообщений и отметка прочтения (если не передан peek). before_id — история назад; after_id — догрузка после офлайна (не отмечает прочтение; крутите цикл, пока has_more, сдвигая курсор на максимальный id); around_id — окно вокруг сообщения (переход к ответу / результату поиска).

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
limit
необязательный query
integer
Размер страницы (по умолчанию 50).
1–100
before_id
необязательный query
integer
Сообщения с id < before_id.
after_id
необязательный query
integer
Сообщения с id > after_id.
around_id
необязательный query
integer
Окно вокруг сообщения.
peek
необязательный query
boolean
Не отмечать чат прочитанным.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "conversation": {
    "id": 1,
    "name": "Design team",
    "type": "group",
    "avatar": null,
    "user_role": "admin",
    "is_owner": true,
    "can_send_messages": true,
    "members_can_pin": false,
    "can_pin": true,
    "can_manage_subscribers": false,
    "username": null,
    "visibility": "public",
    "share_url": null,
    "pinned_messages": [],
    "peer_user_id": null,
    "unread_count": 0,
    "unread_mentions_count": 0,
    "active_call": null,
    "joined_at": "2026-10-20T11:12:46+00:00",
    "history_ttl": 0,
    "noforwards": false,
    "my_noforwards": false,
    "peer_noforwards": false,
    "blocked": false,
    "can_change_policy": true,
    "members_read_at": {
      "1": "2026-10-22T09:06:13+00:00",
      "2": null,
      "3": null,
      "4": null
    }
  },
  "messages": [
    {
      "id": 41,
      "content": "Font is slightly bolder on Windows",
      "type": "text",
      "attachments": [],
      "link_previews": null,
      "reply_to": null,
      "user": {
        "id": 3,
        "name": "Vera Kotova",
        "avatar": null,
        "is_channel": false,
        "is_bot": false,
        "username": null
      },
      "created_at": "2026-10-21T06:46:11.000000Z",
      "edited_at": null,
      "can_delete": false,
      "is_own": false,
      "read_receipt": null,
      "client_id": null,
      "forwarded_from": null,
      "permalink": null,
      "system": null,
      "card": null,
      "group_id": null,
      "mentions": [],
      "silent": false,
      "expires_at": null,
      "reply_markup": null,
      "reactions": []
    },
    {
      "id": 42,
      "content": "Will fix",
      "type": "text",
      "attachments": [],
      "link_previews": null,
      "reply_to": null,
      "user": {
        "id": 2,
        "name": "Boris Petrov",
        "avatar": null,
        "is_channel": false,
        "is_bot": false,
        "username": "boris_p"
      },
      "created_at": "2026-10-21T06:46:11.000000Z",
      "edited_at": null,
      "can_delete": false,
      "is_own": false,
      "read_receipt": null,
      "client_id": null,
      "forwarded_from": null,
      "permalink": null,
      "system": null,
      "card": null,
      "group_id": null,
      "mentions": [],
      "silent": false,
      "expires_at": null,
      "reply_markup": null,
      "reactions": []
    },
    {
      "id": 43,
      "content": "Thanks everyone!",
      "type": "text",
      "attachments": [],
      "link_previews": null,
      "reply_to": null,
      "user": {
        "id": 4,
        "name": "Gleb Orlov",
        "avatar": null,
        "is_channel": false,
        "is_bot": false,
        "username": null
      },
      "created_at": "2026-10-21T06:46:11.000000Z",
      "edited_at": null,
      "can_delete": false,
      "is_own": false,
      "read_receipt": null,
      "client_id": null,
      "forwarded_from": null,
      "permalink": null,
      "system": null,
      "card": null,
      "group_id": null,
      "mentions": [],
      "silent": false,
      "expires_at": null,
      "reply_markup": null,
      "reactions": []
    }
  ],
  "has_more": true
}
404 404
HTTP 404 · 404
{
  "success": false,
  "code": "common.not_found",
  "error": "Not found",
  "message": "Not found"
}
POST /api/conversations #

Создать группу или канал

Bearer-токен Лимит: 20/min

Создатель — владелец. Публичному каналу нужен username; в приватный вступают только по ссылке-приглашению. Realtime: ConversationCreated.

Параметры

Имя Тип Описание
name
обязательный тело
string
Название.
max 255 chars
description
необязательный тело
string
Описание.
max 500 chars
type
обязательный тело
string
group или channel.
one of: group, channel
visibility
необязательный тело
string
public (по умолчанию) или private.
one of: public, private
username
необязательный тело
string
Публичный @логин (обязателен для публичного канала).
max 32 chars

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Release notes", "type": "channel", "visibility": "public", "username": "release_notes", "description": "Changelog"}'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 6,
    "name": "Release notes",
    "type": "channel",
    "avatar": null,
    "description": "Changelog",
    "username": "release_notes",
    "visibility": "public",
    "share_url": "https://minchatapp.com/c/release_notes",
    "last_message": null,
    "unread_count": 0
  }
}
POST /api/conversations/group #

Создать группу с участниками

Bearer-токен Лимит: 20/min

Добавляет перечисленных пользователей и пишет системное сообщение.

Параметры

Имя Тип Описание
name
обязательный тело
string
Имя / название.
max 255 chars
description
необязательный тело
string
Описание.
max 500 chars
user_ids
обязательный тело
array
Кого добавить.
min 1 items
user_ids.*
необязательный тело
integer
id пользователя.
must exist (users)

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/group' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Weekend", "user_ids": [2, 3]}'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 7,
    "name": "Weekend",
    "type": "group",
    "avatar": null
  }
}
POST /api/conversations/private #

Открыть личный чат

Bearer-токен Лимит: 30/min

Создаёт или возвращает личный чат с user_id. 400 — с самим собой (используйте /saved).

Параметры

Имя Тип Описание
user_id
обязательный тело
integer
id собеседника.
must exist (users)

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/private' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"user_id": 2}'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 3,
    "name": "Boris Petrov",
    "type": "private",
    "avatar": null
  }
}
POST /api/conversations/saved #

Открыть «Избранное»

Bearer-токен Лимит: 30/min

Создаёт или возвращает чат «Избранное».

Параметры

Без параметров.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/saved' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 4,
    "name": "Saved Messages",
    "type": "saved",
    "peer_user_id": 1,
    "avatar": null
  }
}
GET /api/conversations/random-channels #

Популярные каналы (алиас)

Bearer-токен

То же, что /popular-channels.

Параметры

Без параметров.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/random-channels' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
[
  {
    "id": 2,
    "name": "MinChat News",
    "type": "channel",
    "description": "Product updates",
    "avatar": null,
    "username": "minchat_news",
    "visibility": "public",
    "members_count": 3,
    "is_joined": false,
    "share_url": "https://minchatapp.com/c/minchat_news",
    "last_activity_at": "2026-10-20T11:12:47+00:00"
  }
]
GET /api/conversations/username-available #

Проверить логин канала

Bearer-токен Лимит: 60/min

Параметры

Имя Тип Описание
username
обязательный query
string
Логин.
max 32 chars

Запрос

curl
curl 'https://minchatapp.com/api/conversations/username-available?username=…' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "username": "design_news",
  "available": true,
  "reason": null,
  "code": null
}
GET /api/conversations/resolve/{username} #

Найти канал по логину

Bearer-токен

Карточка публичного канала. 404 — приватный/скрытый.

Параметры

Имя Тип Описание
username
обязательный путь
string
Логин канала.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/resolve/minchat_news' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "id": 2,
  "name": "MinChat News",
  "type": "channel",
  "description": "Product updates",
  "avatar": null,
  "username": "minchat_news",
  "visibility": "public",
  "members_count": 3,
  "is_joined": true,
  "share_url": "https://minchatapp.com/c/minchat_news",
  "last_activity_at": "2026-10-20T11:12:47+00:00"
}
GET /api/conversations/{conversation}/preview #

Превью канала без вступления

Bearer-токен

404 — приватный канал без членства, 403 — бан.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/preview' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "id": 2,
  "name": "MinChat News",
  "type": "channel",
  "description": "Product updates",
  "avatar": null,
  "username": "minchat_news",
  "visibility": "public",
  "members_count": 3,
  "is_joined": true,
  "share_url": "https://minchatapp.com/c/minchat_news",
  "last_activity_at": "2026-10-20T11:12:47+00:00"
}
GET /api/conversations/{conversation}/info #

Информация о чате и участники

Bearer-токен

Метаданные, владелец, участники (до 50 за страницу, members_has_more), статистика, закрепы. В канале подписчик видит только администрацию. Пагинация: after (id последнего участника) + after_role; фильтр q.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
after
необязательный query
integer
Курсор: id последнего участника предыдущей страницы.
after_role
необязательный query
string
Роль этого участника (часть курсора).
q
необязательный query
string
Фильтр участников по имени.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/info' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "id": 1,
  "name": "Design team",
  "description": "Release discussions",
  "type": "group",
  "avatar": null,
  "is_owner": true,
  "user_role": "admin",
  "members_can_pin": false,
  "can_pin": true,
  "can_manage_subscribers": false,
  "username": null,
  "visibility": "public",
  "share_url": null,
  "pinned_messages": [],
  "owner": {
    "id": 1,
    "name": "Anna Smith",
    "avatar": null
  },
  "members": [
    {
      "id": 1,
      "name": "Anna Smith",
      "avatar": null,
      "role": "admin",
      "joined_at": "2026-10-20 11:12:46",
      "last_seen_at": "2026-10-22T09:06:13+00:00",
      "status_hidden": false,
      "last_seen_bucket": null
    },
    {
      "id": 2,
      "name": "Boris Petrov",
      "avatar": null,
      "role": "member",
      "joined_at": "2026-10-20 11:12:46",
      "last_seen_at": "2026-10-21T06:46:11+00:00",
      "status_hidden": false,
      "last_seen_bucket": null
    }
  ],
  "members_count": 4,
  "members_has_more": false,
  "message_stats": {
    "total": 34,
    "text": 26,
    "media": 3,
    "files": 2
  },
  "created_at": "2026-10-20T11:12:46.000000Z",
  "peer_phone": null,
  "peer_about": null,
  "peer_birthday": null,
  "history_ttl": 0,
  "noforwards": false,
  "my_noforwards": false,
  "peer_noforwards": false,
  "blocked": false,
  "can_change_policy": true
}
POST /api/conversations/{conversation} #

Изменить настройки группы/канала

Bearer-токен multipart/form-data

Владелец или админ. Multipart при отправке avatar. avatar_clear=1 удаляет аватар. Логин канала можно менять раз в 14 дней. Личные чаты → 400. Realtime: ConversationUpdated каждому участнику.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
name
необязательный тело
string
Имя / название.
max 255 chars
description
необязательный тело
string
Описание.
max 500 chars
avatar
необязательный тело
file
Изображение (multipart).
max 5 MB
avatar_clear
необязательный тело
string
1 — удалить аватар.
members_can_pin
необязательный тело
boolean
Группы: участники могут закреплять.
visibility
необязательный тело
string
public / private.
one of: public, private
username
необязательный тело
string
Публичный @логин.
max 32 chars

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"description": "Product updates"}'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 2,
    "name": "MinChat News",
    "avatar": null,
    "description": "Product updates",
    "type": "channel",
    "user_role": "admin",
    "is_owner": true,
    "can_send_messages": true,
    "members_can_pin": false,
    "can_pin": true,
    "can_manage_subscribers": true,
    "username": "minchat_news",
    "visibility": "public",
    "share_url": "https://minchatapp.com/c/minchat_news",
    "hidden_from_discovery": false,
    "history_ttl": 604800
  }
}
DELETE /api/conversations/{conversation} #

Удалить группу/канал

Bearer-токен

Только владелец, нужен confirm=DELETE. Realtime: ConversationDeleted.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
confirm
обязательный тело
string
Строка DELETE.
one of: DELETE

Запрос

curl
curl -X DELETE 'https://minchatapp.com/api/conversations/12' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"confirm": "DELETE"}'

Ответ

Отвечает HTTP 200.

POST /api/conversations/{conversation}/join #

Подписаться на публичный канал

Bearer-токен Лимит: 30/min

400 — не канал, 404 — приватный, 403 — бан.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/join' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true,
  "conversation": {
    "id": 2,
    "name": "MinChat News",
    "type": "channel",
    "avatar": null,
    "description": "Product updates",
    "username": "minchat_news",
    "visibility": "public",
    "share_url": "https://minchatapp.com/c/minchat_news",
    "last_message": null,
    "unread_count": 0
  }
}
DELETE /api/conversations/{conversation}/leave #

Покинуть чат

Bearer-токен

Канал: подписчик выходит; владелец при других участниках — 409 (сначала передайте права); единственный владелец удаляет канал. Личный: delete_for_all=1 удаляет чат у обоих. Группа: если выходит владелец, права переходят админу/модератору.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
delete_for_all
необязательный query
boolean
Личные чаты: удалить у обоих.

Запрос

curl
curl -X DELETE 'https://minchatapp.com/api/conversations/12/leave' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true
}
POST /api/conversations/{conversation}/members #

Добавить участника

Bearer-токен Лимит: 60/min

Группы или администрация канала. Боты добавляются так же (по user id бота). В канале заодно снимает бан.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
user_id
обязательный тело
integer
id пользователя.
must exist (users)

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/members' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"user_id": 42}'

Ответ

HTTP 400
{
  "success": false,
  "code": "conversation.already_member",
  "error": "User is already in the conversation",
  "message": "User is already in the conversation"
}
DELETE /api/conversations/{conversation}/members/{userId} #

Удалить участника

Bearer-токен

Нельзя удалить владельца и равного/старшего по роли. В канале исключение = бан.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
userId
обязательный путь
integer
id пользователя.

Запрос

curl
curl -X DELETE 'https://minchatapp.com/api/conversations/12/members/2' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true
}
PATCH /api/conversations/{conversation}/members/{userId}/role #

Сменить роль участника

Bearer-токен

Владелец назначает admin/moderator; админ — только moderator.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
userId
обязательный путь
integer
id пользователя.
role
обязательный тело
string
member, moderator или admin.
one of: member, moderator, admin

Запрос

curl
curl -X PATCH 'https://minchatapp.com/api/conversations/12/members/2/role' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"role": "moderator"}'

Ответ

HTTP 200
{
  "success": true,
  "role": "moderator"
}
POST /api/conversations/{conversation}/owner #

Передать владение

Bearer-токен

Только текущий владелец; новый должен быть участником. Старый остаётся админом.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
user_id
обязательный тело
integer
id пользователя.
must exist (users)

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/owner' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"user_id": 2}'

Ответ

Отвечает HTTP 200.

GET /api/conversations/{conversation}/bans #

Баны канала

Bearer-токен

Только администрация. Пагинация: after = ban_id последнего, limit 1–50.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
after
необязательный query
integer
Курсор (ban_id).
limit
необязательный query
integer
Размер страницы, по умолчанию 50.
1–50

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/bans' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "bans": [],
  "bans_has_more": false
}
DELETE /api/conversations/{conversation}/bans/{userId} #

Разбанить

Bearer-токен

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
userId
обязательный путь
integer
id пользователя.

Запрос

curl
curl -X DELETE 'https://minchatapp.com/api/conversations/12/bans/2' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

Отвечает HTTP 200.

POST /api/conversations/{conversation}/mute #

Заглушить / включить звук

Bearer-токен

Ровно одно из: duration (1h, 8h, forever) или until (ISO 8601, ≤ 1 года). Пустое тело — снять. Упоминания и ответы вам всё равно уведомляют. Realtime: ConversationMuted на другие ваши устройства.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
duration
необязательный тело
string
1h, 8h, forever или null.
until
необязательный тело
date-time
Заглушить до момента.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/mute' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"duration": "8h"}'

Ответ

HTTP 200
{
  "conversation_id": 1,
  "muted_until": "2026-10-22T17:06:13+00:00"
}
200 unmute
HTTP 200 · unmute
{
  "conversation_id": 1,
  "muted_until": null
}
POST /api/conversations/{conversation}/ttl #

Таймер автоудаления

Bearer-токен

Новые сообщения удаляются через period секунд (0 — выкл.). Пишется системное сообщение.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
period
обязательный тело
integer
Секунды.
≥ 0≤ 31536000

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/ttl' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"period": 86400}'

Ответ

HTTP 200
{
  "conversation_id": 1,
  "history_ttl": 86400
}
POST /api/conversations/{conversation}/noforwards #

Запрет пересылки

Bearer-токен

Запрещает пересылку и сохранение сообщений из чата.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
enabled
обязательный тело
boolean
Включить / выключить.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/noforwards' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"enabled": true}'

Ответ

HTTP 200
{
  "conversation_id": 1,
  "enabled": true,
  "scope": "chat"
}
POST /api/conversations/{conversation}/read #

Отметить прочитанным

Bearer-токен

Обновляет last_read_at; realtime ParticipantRead. В канале — ещё и просмотры.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/read' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true
}
POST /api/conversations/{conversation}/activity #

Статус «печатает / записывает»

Bearer-токен Лимит: 120/min

action: typing, record_audio (повторять, пока идёт) или cancel. Не для каналов. Realtime: UserActivity.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
action
обязательный тело
string
Тип активности.
one of: typing, record_audio, cancel

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/activity' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"action": "typing"}'

Ответ

HTTP 200
{
  "success": true
}
PUT /api/conversations/{conversation}/draft #

Сохранить черновик

Bearer-токен Лимит: 120/min

Синхронизируется между устройствами; content:null — очистить. Realtime: DraftUpdated.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
content
обязательный тело
string
Текст сообщения.
present (may be null)max 4000 chars
reply_to_message_id
необязательный тело
integer
Сообщение, на которое отвечаем.
≥ 1

Запрос

curl
curl -X PUT 'https://minchatapp.com/api/conversations/12/draft' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"content": "Draft text", "reply_to_message_id": null}'

Ответ

HTTP 200
{
  "conversation_id": 1,
  "draft": {
    "content": "Draft text",
    "reply_to_message_id": null,
    "updated_at": "2026-10-22T09:06:13+00:00"
  }
}
GET /api/conversations/{conversation}/stats #

Статистика канала

Bearer-токен

Только администрация: подписчики, прирост за 7/30 дней, просмотры, топ постов.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/stats' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "subscribers": 3,
  "joined_7d": 3,
  "joined_30d": 3,
  "views_7d": 0,
  "top_posts": [
    {
      "id": 13,
      "content": "Version 1.0.41 is out: more stable calls and chat folders 📁",
      "views_count": 0,
      "created_at": "2026-10-20T11:12:47.000000Z"
    },
    {
      "id": 14,
      "content": "What should we build next?",
      "views_count": 0,
      "created_at": "2026-10-20T11:12:47.000000Z"
    }
  ]
}
GET /api/conversations/{conversation}/media #

Медиа чата

Bearer-токен

Галерея вложений. type: image, video, media (фото+видео), file (документы и аудио кроме голосовых), voice, link. Пагинация offset по вложениям: используйте next_offset.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
type
необязательный query
string
Фильтр.
one of: image, video, file, media, voice, link
limit
необязательный query
integer
Размер страницы (по умолчанию 20).
1–200
offset
необязательный query
integer
Смещение во вложениях.
≥ 0

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/media' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "media": [
    {
      "id": "f6cbddbe-fc10-4ab0-a406-b839184ffd08",
      "type": "image",
      "url": "https://minchatapp.com/storage/media/be/d0/bed02c0b4bd0799b771b43ef5e5abb4e52eab27d447472966263f53e53afbbe8.jpg",
      "name": "photo3.jpg",
      "size": 13485,
      "mime_type": "image/jpeg",
      "is_voice": false,
      "message_id": 6,
      "created_at": "2026-10-20T11:12:46.000000Z",
      "user": {
        "id": 3,
        "name": "Vera Kotova",
        "avatar": null
      }
    },
    {
      "id": "08c33049-f1a1-4e88-9e44-79a6bcb8f8e6",
      "type": "image",
      "url": "https://minchatapp.com/storage/media/32/fd/32fdfe2a3c825ea2d281066b119b3c12a06b9ed06a640e64eb748baf8ffee54f.jpg",
      "name": "photo1.jpg",
      "size": 24374,
      "mime_type": "image/jpeg",
      "is_voice": false,
      "message_id": 5,
      "created_at": "2026-10-20T11:12:46.000000Z",
      "user": {
        "id": 2,
        "name": "Boris Petrov",
        "avatar": null
      }
    }
  ],
  "has_more": true,
  "next_offset": 2
}
POST /api/conversations/{conversation}/pins #

Закрепить сообщение

Bearer-токен

До 5 закрепов. notify — уведомить участников. Realtime: ConversationPinsUpdated.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
message_id
обязательный тело
integer
id сообщения.
must exist (messages)
notify
необязательный тело
string
Уведомить участников.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/pins' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"message_id": 45}'

Ответ

HTTP 200
{
  "pinned_messages": [
    {
      "id": 45,
      "content": "Hello @Boris Petrov! (edited)",
      "type": "text",
      "attachments": [],
      "user": {
        "id": 1,
        "name": "Anna Smith",
        "avatar": null
      },
      "created_at": "2026-10-22T09:06:13.000000Z",
      "pinned_at": "2026-10-22T09:06:13+00:00",
      "pinned_by": 1
    }
  ]
}
DELETE /api/conversations/{conversation}/pins/{message} #

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

Bearer-токен

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
message
обязательный путь
integer
id сообщения.

Запрос

curl
curl -X DELETE 'https://minchatapp.com/api/conversations/12/pins/4521' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "pinned_messages": []
}
POST /api/conversations/{conversation}/invite-links #

Создать ссылку-приглашение

Bearer-токен Лимит: 20/min

max_uses 0 — без лимита. Либо expires_at, либо expires_in (секунды, 60 с – 1 год).

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
max_uses
необязательный тело
integer
Максимум использований.
≥ 0≤ 100000
expires_at
необязательный тело
date-time
Момент истечения (ISO 8601).
after now
expires_in
необязательный тело
integer
Срок жизни в секундах.
≥ 60≤ 31536000
name
необязательный тело
string
Имя / название.
max 64 chars

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/invite-links' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Friends", "max_uses": 10, "expires_in": 86400}'

Ответ

HTTP 201
{
  "id": 3,
  "code": "p4rkrskpstdq",
  "name": "Friends",
  "url": "https://minchatapp.com/join/p4rkrskpstdq",
  "max_uses": 10,
  "uses_count": 0,
  "expires_at": "2026-10-23T09:06:13+00:00",
  "revoked_at": null,
  "created_at": "2026-10-22T09:06:13+00:00",
  "is_usable": true
}
POST /api/conversations/{conversation}/invite-links/{inviteLink}/regenerate #

Перевыпустить ссылку

Bearer-токен Лимит: 20/min

Отзывает ссылку и создаёт новый код с теми же настройками.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
inviteLink
обязательный путь
integer
id ссылки.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/invite-links/3/regenerate' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 201
{
  "id": 4,
  "code": "wqbefok5d6op",
  "name": "Friends",
  "url": "https://minchatapp.com/join/wqbefok5d6op",
  "max_uses": 10,
  "uses_count": 0,
  "expires_at": "2026-10-23T09:06:13+00:00",
  "revoked_at": null,
  "created_at": "2026-10-22T09:12:50+00:00",
  "is_usable": true
}
POST /api/conversations/join/{code} #

Вступить по ссылке

Bearer-токен Лимит: 30/min

Параметры

Имя Тип Описание
code
обязательный путь
string
Код приглашения.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/join/p4rkrskpstdq' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "success": true,
  "already_member": true,
  "conversation": {
    "id": 1,
    "name": "Design team",
    "type": "group",
    "avatar": null,
    "description": "Release discussions",
    "username": null,
    "visibility": "public",
    "share_url": null,
    "last_message": null,
    "unread_count": 0
  }
}
GET /api/conversations/{conversation}/mention-targets #

Подсказки для @упоминаний

Bearer-токен

Участники для подсказки после @ (в канале — только администрация). q фильтрует по имени/логину.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
q
необязательный query
string
Фильтр.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/mention-targets' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "members": [
    {
      "id": 2,
      "name": "Boris Petrov",
      "username": "boris_p",
      "avatar": null,
      "role": "member"
    }
  ]
}
GET /api/conversations/{conversation}/mentions/unread #

Непрочитанные упоминания

Bearer-токен

id сообщений с упоминанием вас, ещё не прочитанных (для кнопки «@»).

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.

Запрос

curl
curl 'https://minchatapp.com/api/conversations/12/mentions/unread' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Ответ

HTTP 200
{
  "message_ids": [],
  "unread_mentions_count": 0
}
POST /api/conversations/{conversation}/mentions/read #

Отметить упоминания прочитанными

Bearer-токен Лимит: 120/min

Без message_ids — все. Realtime: MentionsUpdated.

Параметры

Имя Тип Описание
conversation
обязательный путь
integer
id чата.
message_ids
необязательный тело
array
id сообщений; без него — все.
max 200 items
message_ids.*
необязательный тело
integer
id сообщения.

Запрос

curl
curl -X POST 'https://minchatapp.com/api/conversations/12/mentions/read' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"message_ids": [23]}'

Ответ

HTTP 200
{
  "unread_mentions_count": 0
}