REST API
Сообщения
Отправка, редактирование, удаление и поиск; упоминания, реакции, опросы, задачи, отложенные, напоминания, тихая отправка.
Сообщения читаются через GET /conversations/{id} (курсорная пагинация) и приходят в realtime как MessageSent. Поля сообщения: id, content, type (text, media, file, sticker, poll, todo, system), attachments[], reply_to, user, reactions[], forwarded_from, card (состояние опроса/задач), mentions[], silent, reply_markup (клавиатуры ботов), read_receipt, views_count (каналы), permalink, expires_at, client_id.
Методы#
Отправить сообщение
JSON или multipart (для attachments[]). Нужен текст, вложение, стикер (emoji_id), пересылка, опрос или список задач — иначе 422 message.empty. Тип определяется сам: text, media (фото/видео/аудио), file, sticker, poll, todo. client_id делает повтор идемпотентным. mentions — id пользователей из /mention-targets; silent — пуш без звука. В канале пишет только администрация (403). Realtime: MessageSent, затем LinkPreviewsReady для ссылок.
Параметры
| Имя | Тип | Описание |
|---|---|---|
conversation
обязательный путь
|
integer |
id чата. |
content
необязательный тело
|
string |
Текст (≤ 4000). Лёгкая разметка в клиентах: **жирный**, *курсив*, __подчёркнутый__, ~зачёркнутый~, ||спойлер||, код в обратных кавычках, блок кода в тройных; ссылки распознаются автоматически.max 4000 chars
|
emoji_id
необязательный тело
|
integer |
Отправить пользовательский эмодзи как стикер. must exist (emojis)
|
forward_from_message_id
необязательный тело
|
integer |
Переслать сообщение; content — комментарий.must exist (messages)
|
hide_sender
необязательный тело
|
string |
При пересылке: скрыть автора. |
attachments
необязательный тело
|
array |
Файлы (multipart attachments[]).max 10 items
|
attachments.*
необязательный тело
|
file |
Видео ≤ 500 МБ, остальное ≤ 50 МБ. max 500 MB
|
reply_to_message_id
необязательный тело
|
integer |
Ответ на сообщение этого чата. must exist (messages — same conversation)
|
client_id
необязательный тело
|
string |
Ключ идемпотентности (UUID). max 64 chars
|
group_id
необязательный тело
|
string |
id альбома: сообщения с одинаковым id показываются альбомом. max 64 chars
|
poll
необязательный тело
|
array |
Создать опрос. |
poll.question
необязательный тело
|
string |
Вопрос. required with
pollmax 255 chars |
poll.options
необязательный тело
|
array |
Варианты ответа (2–10). required with
pollmin 2 itemsmax 10 items |
poll.options.*
необязательный тело
|
string |
Текст варианта. max 100 chars
|
poll.multiple
необязательный тело
|
boolean |
Несколько ответов. |
poll.quiz
необязательный тело
|
boolean |
Режим викторины. |
poll.anonymous
необязательный тело
|
boolean |
Скрыть голосующих. |
poll.correct
необязательный тело
|
array |
Викторина: индексы верных вариантов. max 10 items
|
poll.correct.*
необязательный тело
|
integer |
Индекс верного варианта. ≥ 0≤ 9
|
todo
необязательный тело
|
array |
Создать список задач. |
todo.title
необязательный тело
|
string |
Заголовок списка. required with
todomax 255 chars |
todo.items
необязательный тело
|
array |
Пункты {id, text}.required with
todomin 1 itemsmax 30 items |
todo.items.*.id
обязательный тело
|
integer |
id пункта (уникален в списке). ≥ 1
|
todo.items.*.text
обязательный тело
|
string |
Текст пункта. max 200 chars
|
todo.others_can_append
необязательный тело
|
boolean |
Другие могут добавлять пункты. |
todo.others_can_complete
необязательный тело
|
boolean |
Другие могут отмечать пункты. |
mentions
необязательный тело
|
array |
id упомянутых. max 50 items
|
mentions.*
необязательный тело
|
integer |
id упомянутого. |
silent
необязательный тело
|
boolean |
Отправить без звука. |
is_voice
необязательный тело
|
boolean |
Пометить аудио как голосовое ( is_voice или is_voice.{index}). |
waveform_data
необязательный тело
|
array |
Волна голосового, сэмплы 0..1 (массив или JSON-строка). |
Запрос
curl -X POST 'https://minchatapp.com/api/conversations/12/messages' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"content": "Hello @Boris Petrov!", "mentions": [2], "client_id": "5b1f0c1e-7c1a-4f7e-9a51-3c2f8d0e1a11"}'
Ответ
{
"id": 45,
"conversation_id": 1,
"content": "Hello @Boris Petrov!",
"type": "text",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": "5b1f0c1e-7c1a-4f7e-9a51-3c2f8d0e1a11",
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": null,
"group_id": null,
"mentions": [
2
],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
200 upload
{
"id": 61,
"conversation_id": 1,
"content": "Forecast map",
"type": "media",
"attachments": [
{
"id": "cb30002c-fffd-48dd-99f1-ee63272472d6",
"type": "image",
"url": "https://minchatapp.com/storage/media/99/ce/99ce0c22dd2307775a80cf118088b61034940a476b3beb851405a28e54d0e787.png",
"name": "map.png",
"size": 186,
"mime_type": "image/png",
"width": 64,
"height": 40
}
],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:12:50.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": null,
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
200 poll
{
"id": 47,
"conversation_id": 1,
"content": "Lunch?",
"type": "poll",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": {
"poll": {
"question": "Lunch?",
"options": [
"Pizza",
"Sushi"
],
"multiple": false,
"quiz": false,
"anonymous": true,
"closed": false,
"correct": [],
"votes": [],
"me_token": -100004975
}
},
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
200 todo
{
"id": 48,
"conversation_id": 1,
"content": "Release",
"type": "todo",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": {
"todo": {
"title": "Release",
"items": [
{
"id": 1,
"text": "Build"
},
{
"id": 2,
"text": "Publish"
}
],
"others_can_append": false,
"others_can_complete": true,
"completed": []
}
},
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
200 forward
{
"id": 63,
"conversation_id": 4,
"content": "Thanks everyone!",
"type": "text",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:12:50.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": {
"conversation_id": 1,
"conversation_name": "Design team",
"message_id": 43,
"user": null,
"created_at": "2026-10-21T06:46:11+00:00",
"hidden_sender": true,
"is_channel": false
},
"permalink": null,
"system": null,
"card": null,
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": "2026-10-29T09:12:50+00:00",
"views_count": null
}
422 empty
{
"success": false,
"code": "message.empty",
"error": "Message cannot be empty",
"message": "Message cannot be empty"
}
403 channel403
{
"success": false,
"code": "message.channel_write_forbidden",
"error": "Only the owner and admins can post in the channel",
"message": "Only the owner and admins can post in the channel"
}
Редактировать сообщение
Только автор, пока разрешено редактирование. Realtime: MessageUpdated.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
content
обязательный тело
|
string |
Текст сообщения. max 4000 chars
|
Запрос
curl -X PATCH 'https://minchatapp.com/api/messages/4521' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"content": "Hello again (edited)"}'
Ответ
{
"id": 45,
"content": "Hello @Boris Petrov! (edited)",
"edited_at": "2026-10-22T09:06:13.000000Z",
"link_previews": []
}
Удалить сообщение
delete_for_all=1 (автор / администрация) — у всех, иначе только у себя. Realtime: MessageDeleted.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
delete_for_all
необязательный query
|
boolean |
Удалить у всех. |
Запрос
curl -X DELETE 'https://minchatapp.com/api/messages/4521' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"success": true
}
Поиск в чате
q 2–100 символов; пустой q — только вместе с фильтром. Ищет по тексту, вариантам опросов и пунктам задач. 20 на страницу, сначала новые; пагинация before_id.
Параметры
| Имя | Тип | Описание |
|---|---|---|
conversation
обязательный путь
|
integer |
id чата. |
q
необязательный query
|
string |
Запрос. |
from_user_id
необязательный query
|
integer |
Только этого автора. |
type
необязательный query
|
string |
media, file или sticker. |
from
необязательный query
|
date |
С даты (включительно). |
to
необязательный query
|
date |
По дату (включительно). |
before_id
необязательный query
|
integer |
Курсор. |
Запрос
curl 'https://minchatapp.com/api/conversations/12/messages/search' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"messages": [
{
"id": 20,
"content": "Release checklist: https://example.com/release-checklist",
"type": "text",
"attachments": [],
"link_previews": [
{
"url": "https://example.com/release-checklist",
"provider": "generic",
"title": "example.com",
"description": null,
"image": null,
"site_name": "example.com",
"embed_url": null,
"embed_html": null,
"video_url": null,
"video_type": null,
"video_width": null,
"video_height": null,
"accessible": true,
"meta": []
}
],
"reply_to": null,
"user": {
"id": 3,
"name": "Vera Kotova",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": null
},
"created_at": "2026-10-20T11:12:47.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": []
}
]
}
200 filters
{
"messages": [
{
"id": 61,
"content": "Forecast map",
"type": "media",
"attachments": [
{
"id": "cb30002c-fffd-48dd-99f1-ee63272472d6",
"type": "image",
"url": "https://minchatapp.com/storage/media/99/ce/99ce0c22dd2307775a80cf118088b61034940a476b3beb851405a28e54d0e787.png",
"name": "map.png",
"size": 186,
"mime_type": "image/png",
"width": 64,
"height": 40
}
],
"link_previews": null,
"reply_to": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:12:50.000000Z",
"edited_at": null,
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"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": 9,
"content": null,
"type": "media",
"attachments": [
{
"id": "b59c984b-d06b-4911-a7cf-bb96f5b7edc8",
"type": "audio",
"url": "https://minchatapp.com/storage/media/73/8c/738cb72f4ff6851f70547985e21b87b9293dfe3ea0cb6b34beb7093b109b6ee7.mp3",
"name": "voice.ogg",
"size": 65244,
"mime_type": "audio/mpeg",
"is_voice": true,
"duration": 4,
"waveform": [
0.995,
0.999
]
}
],
"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-20T11:12:47.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": []
}
]
}
Глобальный поиск
Те же правила, что у поиска в чате, плюс conversation_id; type: photo/image, video, media, file, audio, voice, link. 30 на страницу; продолжение — next_before_id.
Параметры
| Имя | Тип | Описание |
|---|---|---|
q
необязательный query
|
string |
Запрос. |
conversation_id
необязательный query
|
integer |
Только в одном чате. |
from_user_id
необязательный query
|
integer |
Автор (алиас sender_id). |
type
необязательный query
|
string |
Фильтр по типу. |
from
необязательный query
|
date |
С даты. |
to
необязательный query
|
date |
По дату. |
before_id
необязательный query
|
integer |
Курсор. |
Запрос
curl 'https://minchatapp.com/api/messages/search' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"messages": [
{
"id": 21,
"conversation_id": 4,
"content": "Release checklist: https://example.com/release-checklist",
"type": "text",
"created_at": "2026-10-20T11:12:47+00:00",
"user": {
"id": 1,
"name": "Anna Smith"
},
"attachment": null,
"conversation": {
"id": 4,
"type": "saved",
"name": "Saved Messages"
}
},
{
"id": 20,
"conversation_id": 1,
"content": "Release checklist: https://example.com/release-checklist",
"type": "text",
"created_at": "2026-10-20T11:12:47+00:00",
"user": {
"id": 3,
"name": "Vera Kotova"
},
"attachment": null,
"conversation": {
"id": 1,
"type": "group",
"name": "Design team"
}
}
],
"next_before_id": null
}
Поставить реакцию
Одна реакция на пользователя; заменяет прежнюю. Realtime: MessageReactionUpdated.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
emoji_id
обязательный тело
|
integer |
id эмодзи (см. наборы). must exist (emojis)
|
Запрос
curl -X PUT 'https://minchatapp.com/api/messages/4521/reaction' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"emoji_id": 1}'
Ответ
{
"reactions": [
{
"emoji_id": 1,
"set_id": 1,
"set_title": "Min",
"set_active": true,
"shortcode": "thumbsup",
"kind": "unicode",
"unicode": "👍",
"image_url": null,
"count": 1,
"me": true,
"user_ids": [
1
]
}
]
}
Снять реакцию
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
Запрос
curl -X DELETE 'https://minchatapp.com/api/messages/4521/reaction' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"reactions": []
}
Кто поставил реакции
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
Запрос
curl 'https://minchatapp.com/api/messages/4521/reactions' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"groups": [
{
"emoji_id": 1,
"set_id": 1,
"set_title": "Min",
"set_active": true,
"shortcode": "thumbsup",
"kind": "unicode",
"unicode": "👍",
"image_url": null,
"count": 1,
"me": true,
"users": [
{
"id": 1,
"name": "Anna Smith",
"avatar": null
}
]
}
]
}
Голосовать в опросе
options — индексы (0–9). Пустой массив — отозвать голос. Автор закрывает опрос closed:true.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
options
необязательный тело
|
array |
Индексы выбранных вариантов; пусто — отозвать. max 10 items
|
options.*
необязательный тело
|
integer |
Индекс варианта. ≥ 0≤ 9
|
closed
необязательный тело
|
boolean |
Автор: закрыть опрос. |
Запрос
curl -X POST 'https://minchatapp.com/api/messages/4521/poll' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"options": [0]}'
Ответ
{
"id": 47,
"conversation_id": 1,
"content": "Lunch?",
"type": "poll",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": {
"poll": {
"question": "Lunch?",
"options": [
"Pizza",
"Sushi"
],
"multiple": false,
"quiz": false,
"anonymous": true,
"closed": false,
"correct": [],
"votes": [
[
1
]
],
"me_token": -100004975
}
},
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
Обновить список задач
Отметить пункты выполненными/невыполненными; append добавляет пункты (если разрешено).
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
completed
обязательный тело
|
array |
id пунктов — выполнено. present (may be null)max 30 items
|
completed.*
необязательный тело
|
integer |
id пункта. ≥ 1
|
incompleted
обязательный тело
|
array |
id пунктов — не выполнено. present (may be null)max 30 items
|
incompleted.*
необязательный тело
|
integer |
id пункта. ≥ 1
|
append
необязательный тело
|
array |
Тексты новых пунктов. max 10 items
|
append.*
необязательный тело
|
string |
Текст пункта. max 200 chars
|
Запрос
curl -X POST 'https://minchatapp.com/api/messages/4521/todo' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"completed": [1], "incompleted": []}'
Ответ
{
"id": 48,
"conversation_id": 1,
"content": "Release",
"type": "todo",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": null,
"reactions": [],
"forwarded_from": null,
"permalink": null,
"system": null,
"card": {
"todo": {
"title": "Release",
"items": [
{
"id": 1,
"text": "Build"
},
{
"id": 2,
"text": "Publish"
}
],
"others_can_append": false,
"others_can_complete": true,
"completed": {
"1": [
1
]
}
}
},
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
Кто прочитал
Только свои сообщения в группах (400 для личных и каналов).
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
Запрос
curl 'https://minchatapp.com/api/messages/4521/readers' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"readers": [],
"pending": [
{
"id": 2,
"name": "Boris Petrov",
"avatar": null,
"read_at": null
},
{
"id": 3,
"name": "Vera Kotova",
"avatar": null,
"read_at": null
},
{
"id": 4,
"name": "Gleb Orlov",
"avatar": null,
"read_at": null
}
],
"readers_count": 0,
"pending_count": 3
}
Сохранить в «Избранное»
Копирует сообщение в «Избранное» как пересылку.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
Запрос
curl -X POST 'https://minchatapp.com/api/messages/4521/save' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"success": true,
"conversation_id": 4,
"message": {
"id": 49,
"conversation_id": 4,
"content": "Thanks everyone!",
"type": "text",
"attachments": [],
"link_previews": null,
"reply_to": null,
"edited_at": null,
"user": {
"id": 1,
"name": "Anna Smith",
"avatar": null,
"is_channel": false,
"is_bot": false,
"username": "anna_s"
},
"created_at": "2026-10-22T09:06:13.000000Z",
"can_delete": true,
"is_own": true,
"read_receipt": "delivered",
"client_id": "save-43-UNLWeWWFiM",
"reactions": [],
"forwarded_from": {
"conversation_id": 1,
"conversation_name": "Design team",
"message_id": 43,
"user": {
"id": 4,
"name": "Gleb Orlov"
},
"created_at": "2026-10-21T06:46:11+00:00",
"hidden_sender": false,
"is_channel": false
},
"permalink": null,
"system": null,
"card": null,
"group_id": null,
"mentions": [],
"silent": false,
"reply_markup": null,
"expires_at": null,
"views_count": null
}
}
Нажать inline-кнопку
Для сообщений бота с reply_markup: отправляет боту апдейт callback_query. answer заполнен, только если бот уже ответил.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
data
обязательный тело
|
string |
callback_data нажатой кнопки.max 64 chars
|
Запрос
curl -X POST 'https://minchatapp.com/api/messages/4521/callback' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"data": "city:moscow"}'
Ответ
{
"success": true,
"callback_query_id": "1",
"answer": null
}
422 bad
{
"success": false,
"code": "validation.failed",
"error": "The given data was invalid.",
"message": "The given data was invalid.",
"errors": {
"data": [
"Unknown callback_data for this message."
]
}
}
Напомнить о сообщении
remind_at — от +1 минуты до +1 года. В срок: пуш (type=reminder) и realtime MessageReminderDue.
Параметры
| Имя | Тип | Описание |
|---|---|---|
message
обязательный путь
|
integer |
id сообщения. |
remind_at
обязательный тело
|
date-time |
Когда напомнить (ISO 8601). |
Запрос
curl -X POST 'https://minchatapp.com/api/messages/4521/reminder' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"remind_at": "2026-11-02T10:00:00+03:00"}'
Ответ
{
"reminder": {
"id": 3,
"message_id": 45,
"conversation_id": 1,
"conversation_name": "Design team",
"sender_name": "Anna Smith",
"preview": "Hello @Boris Petrov! (edited)",
"remind_at": "2026-11-02T10:00:00+00:00",
"status": "pending"
}
}
Мои напоминания
Параметры
Без параметров.
Запрос
curl 'https://minchatapp.com/api/reminders' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"reminders": [
{
"id": 3,
"message_id": 45,
"conversation_id": 1,
"conversation_name": "Design team",
"sender_name": "Anna Smith",
"preview": "Hello @Boris Petrov! (edited)",
"remind_at": "2026-11-02T10:00:00+00:00",
"status": "pending"
}
]
}
Отменить напоминание
Параметры
| Имя | Тип | Описание |
|---|---|---|
reminder
обязательный путь
|
integer |
id напоминания. |
Запрос
curl -X DELETE 'https://minchatapp.com/api/reminders/3' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"success": true
}
Отложенные сообщения
Ваши отложенные сообщения в чате (до 100 на чат).
Параметры
| Имя | Тип | Описание |
|---|---|---|
conversation
обязательный путь
|
integer |
id чата. |
Запрос
curl 'https://minchatapp.com/api/conversations/12/scheduled' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"scheduled": [
{
"id": 1,
"conversation_id": 1,
"content": "Reminder: call at 18:00",
"reply_to_message_id": null,
"send_at": "2026-10-20T13:12:47+00:00",
"status": "pending",
"error": null,
"message_id": null
},
{
"id": 2,
"conversation_id": 1,
"content": "Good morning! Please update your task status",
"reply_to_message_id": null,
"send_at": "2026-10-21T12:12:47+00:00",
"status": "pending",
"error": null,
"message_id": null
}
]
}
Запланировать сообщение
Только текст. Realtime: ScheduledMessagesUpdated с числом отложенных.
Параметры
| Имя | Тип | Описание |
|---|---|---|
conversation
обязательный путь
|
integer |
id чата. |
content
обязательный тело
|
string |
Текст сообщения. max 4000 chars
|
send_at
обязательный тело
|
date-time |
Когда отправить (ISO 8601). |
reply_to_message_id
необязательный тело
|
integer |
Сообщение, на которое отвечаем. must exist (messages — same conversation)
|
Запрос
curl -X POST 'https://minchatapp.com/api/conversations/12/scheduled' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"content": "Standup in 10 minutes", "send_at": "2026-11-02T09:00:00+03:00"}'
Ответ
{
"scheduled": {
"id": 4,
"conversation_id": 1,
"content": "Standup in 10 minutes",
"reply_to_message_id": null,
"send_at": "2026-11-02T06:00:00+00:00",
"status": "pending",
"error": null,
"message_id": null
}
}
Изменить отложенное
Параметры
| Имя | Тип | Описание |
|---|---|---|
scheduledMessage
обязательный путь
|
integer |
id отложенного сообщения. |
content
необязательный тело
|
string |
Текст сообщения. max 4000 chars
|
send_at
необязательный тело
|
date-time |
Когда отправить (ISO 8601). |
Запрос
curl -X PATCH 'https://minchatapp.com/api/scheduled-messages/5' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"content": "Standup in 5 minutes"}'
Ответ
{
"scheduled": {
"id": 5,
"conversation_id": 1,
"content": "Standup in 5 minutes",
"reply_to_message_id": null,
"send_at": "2026-11-03T06:00:00+00:00",
"status": "pending",
"error": null,
"message_id": null
}
}
Удалить отложенное
Параметры
| Имя | Тип | Описание |
|---|---|---|
scheduledMessage
обязательный путь
|
integer |
id отложенного сообщения. |
Запрос
curl -X DELETE 'https://minchatapp.com/api/scheduled-messages/5' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"success": true
}
Отправить отложенное сейчас
Параметры
| Имя | Тип | Описание |
|---|---|---|
scheduledMessage
обязательный путь
|
integer |
id отложенного сообщения. |
Запрос
curl -X POST 'https://minchatapp.com/api/scheduled-messages/5/send-now' \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json'
Ответ
{
"success": true,
"scheduled": {
"id": 5,
"conversation_id": 1,
"content": "Standup in 5 minutes",
"reply_to_message_id": null,
"send_at": "2026-11-03T06:00:00+00:00",
"status": "sent",
"error": null,
"message_id": 62
}
}