Skip to content

REST API

Messages

Send, edit, delete and search messages; mentions, reactions, polls, to-do lists, scheduled messages, reminders, silent send.

Messages are read through GET /conversations/{id} (cursor pagination) and arrive in realtime as MessageSent. Message object fields: id, content, type (text, media, file, sticker, poll, todo, system), attachments[], reply_to, user, reactions[], forwarded_from, card (poll/to-do state), mentions[], silent, reply_markup (bot keyboards), read_receipt, views_count (channels), permalink, expires_at, client_id.

Endpoints#

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

Send a message

Bearer token Rate limit: 60/min multipart/form-data

JSON or multipart (for attachments[]). Needs text, an attachment, a sticker (emoji_id), a forward, a poll or a to-do list — otherwise 422 message.empty. Type is derived: text, media (image/video/audio), file, sticker, poll, todo. client_id makes retries idempotent. mentions are user ids picked from /mention-targets; silent delivers push notifications without sound. In channels only staff can post (403). Realtime: MessageSent, later LinkPreviewsReady for links.

Parameters

Name Type Description
conversation
required path
integer
Conversation id.
content
optional body
string
Text (≤ 4000). Light markup rendered by clients: **bold**, *italic*, __underline__, ~strike~, ||spoiler||, inline code in backticks, code blocks in triple backticks; URLs are auto-linked.
max 4000 chars
emoji_id
optional body
integer
Send a custom emoji as a sticker.
must exist (emojis)
forward_from_message_id
optional body
integer
Forward this message; content becomes a comment.
must exist (messages)
hide_sender
optional body
string
With a forward: hide the original author.
attachments
optional body
array
Files (multipart attachments[]).
max 10 items
attachments.*
optional body
file
Video ≤ 500 MB, other files ≤ 50 MB.
max 500 MB
reply_to_message_id
optional body
integer
Reply to a message of this chat.
must exist (messages — same conversation)
client_id
optional body
string
Idempotency key (UUID).
max 64 chars
group_id
optional body
string
Album id: messages with the same id are shown as one album.
max 64 chars
poll
optional body
array
Create a poll.
poll.question
optional body
string
Poll question.
required with pollmax 255 chars
poll.options
optional body
array
Answer options (2–10).
required with pollmin 2 itemsmax 10 items
poll.options.*
optional body
string
Option text.
max 100 chars
poll.multiple
optional body
boolean
Allow several answers.
poll.quiz
optional body
boolean
Quiz mode (one correct answer set).
poll.anonymous
optional body
boolean
Hide voters.
poll.correct
optional body
array
Quiz: indexes of correct options.
max 10 items
poll.correct.*
optional body
integer
Index of a correct option.
≥ 0≤ 9
todo
optional body
array
Create a to-do list.
todo.title
optional body
string
List title.
required with todomax 255 chars
todo.items
optional body
array
Items {id, text}.
required with todomin 1 itemsmax 30 items
todo.items.*.id
required body
integer
Client-chosen item id (unique in the list).
≥ 1
todo.items.*.text
required body
string
Item text.
max 200 chars
todo.others_can_append
optional body
boolean
Other members may add items.
todo.others_can_complete
optional body
boolean
Other members may tick items.
mentions
optional body
array
Mentioned user ids.
max 50 items
mentions.*
optional body
integer
Mentioned user id.
silent
optional body
boolean
Send without sound.
is_voice
optional body
boolean
Mark an audio attachment as a voice message (is_voice or is_voice.{index}).
waveform_data
optional body
array
Voice waveform, 0..1 samples (array or JSON string).

Request

curl
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"}'

Response

HTTP 200
{
  "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
HTTP 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
HTTP 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
HTTP 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
HTTP 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
HTTP 422 · empty
{
  "success": false,
  "code": "message.empty",
  "error": "Message cannot be empty",
  "message": "Message cannot be empty"
}
403 channel403
HTTP 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"
}
PATCH /api/messages/{message} #

Edit a message

Bearer token Rate limit: 60/min

Author only, while editing is allowed. Realtime: MessageUpdated.

Parameters

Name Type Description
message
required path
integer
Message id.
content
required body
string
Message text.
max 4000 chars

Request

curl
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)"}'

Response

HTTP 200
{
  "id": 45,
  "content": "Hello @Boris Petrov! (edited)",
  "edited_at": "2026-10-22T09:06:13.000000Z",
  "link_previews": []
}
DELETE /api/messages/{message} #

Delete a message

Bearer token Rate limit: 60/min

delete_for_all=1 (author / staff) deletes for everyone, otherwise only for you. Realtime: MessageDeleted.

Parameters

Name Type Description
message
required path
integer
Message id.
delete_for_all
optional query
boolean
Delete for everyone.

Request

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

Response

HTTP 200
{
  "success": true
}
PUT /api/messages/{message}/reaction #

Set a reaction

Bearer token Rate limit: 60/min

One reaction per user per message; replaces the previous one. Realtime: MessageReactionUpdated.

Parameters

Name Type Description
message
required path
integer
Message id.
emoji_id
required body
integer
Emoji id (see emoji sets).
must exist (emojis)

Request

curl
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}'

Response

HTTP 200
{
  "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
      ]
    }
  ]
}
DELETE /api/messages/{message}/reaction #

Remove my reaction

Bearer token Rate limit: 60/min

Parameters

Name Type Description
message
required path
integer
Message id.

Request

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

Response

HTTP 200
{
  "reactions": []
}
GET /api/messages/{message}/reactions #

Who reacted

Bearer token

Parameters

Name Type Description
message
required path
integer
Message id.

Request

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

Response

HTTP 200
{
  "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
        }
      ]
    }
  ]
}
POST /api/messages/{message}/poll #

Vote in a poll

Bearer token Rate limit: 60/min

options — indexes (0–9). Empty array retracts. The author can close the poll with closed:true.

Parameters

Name Type Description
message
required path
integer
Message id.
options
optional body
array
Chosen option indexes; empty to retract.
max 10 items
options.*
optional body
integer
Option index.
≥ 0≤ 9
closed
optional body
boolean
Author: close the poll.

Request

curl
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]}'

Response

HTTP 200
{
  "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
}
POST /api/messages/{message}/todo #

Update a to-do list

Bearer token Rate limit: 60/min

Mark item ids completed/incomplete; append adds items (if allowed).

Parameters

Name Type Description
message
required path
integer
Message id.
completed
required body
array
Item ids to mark done.
present (may be null)max 30 items
completed.*
optional body
integer
Item id.
≥ 1
incompleted
required body
array
Item ids to mark not done.
present (may be null)max 30 items
incompleted.*
optional body
integer
Item id.
≥ 1
append
optional body
array
New item texts.
max 10 items
append.*
optional body
string
Item text.
max 200 chars

Request

curl
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": []}'

Response

HTTP 200
{
  "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
}
GET /api/messages/{message}/readers #

Who read a message

Bearer token

Own messages in groups only (400 for private chats and channels).

Parameters

Name Type Description
message
required path
integer
Message id.

Request

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

Response

HTTP 200
{
  "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
}
POST /api/messages/{message}/save #

Save to Saved Messages

Bearer token Rate limit: 60/min

Copies the message into Saved Messages as a forward.

Parameters

Name Type Description
message
required path
integer
Message id.

Request

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

Response

HTTP 200
{
  "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
  }
}
POST /api/messages/{message}/callback #

Press an inline button

Bearer token Rate limit: 60/min

For bot messages with reply_markup: sends a callback_query update to the bot. answer is filled only if the bot already answered.

Parameters

Name Type Description
message
required path
integer
Message id.
data
required body
string
callback_data of the pressed button.
max 64 chars

Request

curl
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"}'

Response

HTTP 200
{
  "success": true,
  "callback_query_id": "1",
  "answer": null
}
422 bad
HTTP 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."
    ]
  }
}
POST /api/messages/{message}/reminder #

Remind me about a message

Bearer token Rate limit: 30/min

remind_at from +1 minute to +1 year. When due: push (type=reminder) and realtime MessageReminderDue.

Parameters

Name Type Description
message
required path
integer
Message id.
remind_at
required body
date-time
When to remind (ISO 8601).

Request

curl
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"}'

Response

HTTP 201
{
  "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"
  }
}
GET /api/reminders #

My reminders

Bearer token

Parameters

No parameters.

Request

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

Response

HTTP 200
{
  "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"
    }
  ]
}
DELETE /api/reminders/{reminder} #

Cancel a reminder

Bearer token

Parameters

Name Type Description
reminder
required path
integer
Reminder id.

Request

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

Response

HTTP 200
{
  "success": true
}
GET /api/conversations/{conversation}/scheduled #

Scheduled messages

Bearer token

Your pending scheduled messages in this chat (max 100 per chat).

Parameters

Name Type Description
conversation
required path
integer
Conversation id.

Request

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

Response

HTTP 200
{
  "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
    }
  ]
}
POST /api/conversations/{conversation}/scheduled #

Schedule a message

Bearer token Rate limit: 30/min

Text only. Realtime: ScheduledMessagesUpdated with the pending count.

Parameters

Name Type Description
conversation
required path
integer
Conversation id.
content
required body
string
Message text.
max 4000 chars
send_at
required body
date-time
When to send (ISO 8601).
reply_to_message_id
optional body
integer
Message being replied to.
must exist (messages — same conversation)

Request

curl
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"}'

Response

HTTP 201
{
  "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
  }
}
PATCH /api/scheduled-messages/{scheduledMessage} #

Edit a scheduled message

Bearer token Rate limit: 60/min

Parameters

Name Type Description
scheduledMessage
required path
integer
Scheduled message id.
content
optional body
string
Message text.
max 4000 chars
send_at
optional body
date-time
When to send (ISO 8601).

Request

curl
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"}'

Response

HTTP 200
{
  "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
  }
}
DELETE /api/scheduled-messages/{scheduledMessage} #

Delete a scheduled message

Bearer token

Parameters

Name Type Description
scheduledMessage
required path
integer
Scheduled message id.

Request

curl
curl -X DELETE 'https://minchatapp.com/api/scheduled-messages/5' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Response

HTTP 200
{
  "success": true
}
POST /api/scheduled-messages/{scheduledMessage}/send-now #

Send a scheduled message now

Bearer token Rate limit: 30/min

Parameters

Name Type Description
scheduledMessage
required path
integer
Scheduled message id.

Request

curl
curl -X POST 'https://minchatapp.com/api/scheduled-messages/5/send-now' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json'

Response

HTTP 200
{
  "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
  }
}