Search messages
Search messages across chats using Beeper's message index
Query parameters
Literal word search (NOT semantic). Finds messages containing these EXACT words in any order. Use single words users actually type, not concepts or phrases. Example: use "dinner" not "dinner plans", use "sick" not "health issues". If omitted, returns results filtered only by other parameters.
Literal word search (NOT semantic). Finds messages containing these EXACT words in any order. Use single words users actually type, not concepts or phrases. Example: use "dinner" not "dinner plans", use "sick" not "health issues". If omitted, returns results filtered only by other parameters.
Opaque pagination cursor; do not inspect. Use together with 'direction'.
Opaque pagination cursor; do not inspect. Use together with 'direction'.
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
Limit search to specific chat IDs.
Limit search to specific chat IDs.
[ "!NCdzlIaMjZUmvmvyHU:beeper.com", "1231073" ]
Limit search to specific account IDs.
Limit search to specific account IDs.
[ "whatsapp", "local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc", "local-instagram_ba_eRfQMmnSNy_p7Ih7HL7RduRpKFU" ]
Filter by chat type: 'group' for group chats, 'single' for 1:1 chats.
Filter by chat type: 'group' for group chats, 'single' for 1:1 chats.
Filter messages by media types. Use ['any'] for any media type, or specify exact types like ['video', 'image']. Omit for no media filtering.
Filter messages by media types. Use ['any'] for any media type, or specify exact types like ['video', 'image']. Omit for no media filtering.
Filter by sender: 'me' (messages sent by the authenticated user), 'others' (messages sent by others), or a specific user ID string (user.id).
Only include messages with timestamp strictly after this ISO 8601 datetime (e.g., '2024-07-01T00:00:00Z' or '2024-07-01T00:00:00+02:00').
Only include messages with timestamp strictly after this ISO 8601 datetime (e.g., '2024-07-01T00:00:00Z' or '2024-07-01T00:00:00+02:00').
Only include messages with timestamp strictly before this ISO 8601 datetime (e.g., '2024-07-31T23:59:59Z' or '2024-07-31T23:59:59+02:00').
Only include messages with timestamp strictly before this ISO 8601 datetime (e.g., '2024-07-31T23:59:59Z' or '2024-07-31T23:59:59+02:00').
Maximum number of messages to return.
Maximum number of messages to return.
Exclude messages marked Low Priority by the user. Default: true. Set to false to include all.
Exclude messages marked Low Priority by the user. Default: true. Set to false to include all.
Include messages in chats marked as Muted by the user, which are usually less important. Default: true. Set to false if the user wants a more refined search.
Include messages in chats marked as Muted by the user, which are usually less important. Default: true. Set to false if the user wants a more refined search.
Response
Request executed successfully
Example response
{
"items": [
{
"id": "1343993",
"chatID": "!signal_adamvy:local-signal.localhost",
"accountID": "local-signal_ba_7N74FrU29pxij_TnqfxeUHj53FY",
"senderID": "@adamvy:local-signal.localhost",
"senderName": "Adam Van Ymeren",
"timestamp": "2025-08-28T11:04:29.621Z",
"sortKey": "aaaa1",
"text": "Hey, can we reschedule our meeting to 3pm?",
"isSender": false,
"isUnread": false
},
{
"id": "1343994",
"chatID": "!telegram_nick:local-telegram.localhost",
"accountID": "local-telegram_ba_QFrb5lrLPhO3OT5MFBeTWv0x4BI",
"senderID": "@nick:local-telegram.localhost",
"senderName": "Nick Mills-Barrett",
"timestamp": "2025-08-28T14:22:15.432Z",
"sortKey": "aaaa2",
"text": "The deployment is complete, everything looks good",
"isSender": false,
"isUnread": true
}
],
"chats": {
"!signal_adamvy:local-signal.localhost": {
"id": "!signal_adamvy:local-signal.localhost",
"localChatID": "1229720",
"accountID": "local-signal_ba_7N74FrU29pxij_TnqfxeUHj53FY",
"network": "Signal",
"title": "Adam Van Ymeren",
"type": "single",
"participants": {
"items": [
{
"id": "@adamvy:local-signal.localhost",
"fullName": "Adam Van Ymeren",
"cannotMessage": false,
"isSelf": false
},
{
"id": "@batuhan:local-signal.localhost",
"fullName": "Batuhan İçöz",
"cannotMessage": false,
"isSelf": true
}
],
"hasMore": false,
"total": 2
},
"lastActivity": "2025-08-31T17:38:20.393Z",
"unreadCount": 0,
"isArchived": false,
"isMuted": false,
"isPinned": true
},
"!telegram_nick:local-telegram.localhost": {
"id": "!telegram_nick:local-telegram.localhost",
"localChatID": "1229721",
"accountID": "local-telegram_ba_QFrb5lrLPhO3OT5MFBeTWv0x4BI",
"network": "Telegram",
"title": "Nick Mills-Barrett",
"type": "single",
"participants": {
"items": [
{
"id": "@nick:local-telegram.localhost",
"username": "nick",
"fullName": "Nick Mills-Barrett",
"cannotMessage": false,
"isSelf": false
},
{
"id": "@batuhan:local-telegram.localhost",
"username": "batuhan",
"fullName": "Batuhan İçöz",
"cannotMessage": false,
"isSelf": true
}
],
"hasMore": false,
"total": 2
},
"lastActivity": "2025-08-31T16:45:10.123Z",
"unreadCount": 2,
"isArchived": false,
"isMuted": true,
"isPinned": false
}
},
"hasMore": true,
"oldestCursor": "1756379069621",
"newestCursor": null
}