Search for messages.

messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
messages.channelMessages#c776ba4e flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector<Message> topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = messages.Messages;
messages.messagesNotModified#74535f21 count:int = messages.Messages;
---functions--- flags:# peer:InputPeer q:string from_id:flags.0?InputPeer saved_peer_id:flags.2?InputPeer top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages;


Name Type Description
flags # Flags, see TL conditional fields
peer InputPeer User or chat, histories with which are searched, or (inputPeerEmpty) constructor to search in all private chats and normal groups (not channels) ». Use messages.searchGlobal to search globally in all chats, groups, supergroups and channels.
q string Text search request
from_id flags.0?InputPeer Only return messages sent by the specified user ID
saved_peer_id flags.2?InputPeer Search within the saved message dialog » with this ID.
top_msg_id flags.1?int Thread ID
filter MessagesFilter Filter to return only specified message types
min_date int If a positive value was transferred, only messages with a sending date bigger than the transferred one will be returned
max_date int If a positive value was transferred, only messages with a sending date smaller than the transferred one will be returned
offset_id int Only return messages starting from the specified message ID
add_offset int Additional offset
limit int Number of results to return
max_id int Maximum message ID to return
min_id int Minimum message ID to return
hash long Hash



Possible errors

Code Type Description
400 CHANNEL_INVALID The provided channel is invalid.
400 CHANNEL_PRIVATE You haven't joined this channel/supergroup.
403 CHAT_ADMIN_REQUIRED You must be an admin in this chat to do this.
400 CHAT_ID_INVALID The provided chat id is invalid.
400 FROM_PEER_INVALID The specified from_id is invalid.
400 INPUT_FILTER_INVALID The specified filter is invalid.
400 INPUT_USER_DEACTIVATED The specified user was deleted.
400 MSG_ID_INVALID Invalid message ID provided.
400 PEER_ID_INVALID The provided peer id is invalid.
400 PEER_ID_NOT_SUPPORTED The provided peer ID is not supported.
400 SEARCH_QUERY_EMPTY The search query is empty.
400 USER_ID_INVALID The provided user ID is invalid.

Related pages


An empty constructor, no user or chat is defined.

Channels, supergroups, gigagroups and basic groups

How to handle channels, supergroups, gigagroups, basic groups, and what's the difference between them.


Search for messages and peers globally

Saved messages

The Saved Messages chat allows users to bookmark messages and media: it's a personal cloud storage for any messages or media you may want to send or forward there.


Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

Pagination in the API

How to fetch results from large lists of objects.