Documentation menu

API reference

Hosted inbox & media library

Optional. When a session has a workspace id (`/set-org-id`) and its webhook points at the hosted receiver, every message — inbound and outbound — is stored, media is copied to permanent storage, and these read endpoints expose the history. Skip this section if you keep your own store.

GET/chatroomsList chats
GET/chatrooms/{chatRoomId}/messagesChat history
GET/chatrooms/{chatRoomId}/messages/{messageId}/media-urlMedia link for a message
POST/chatrooms/{chatRoomId}/readClear unread count
GET/media-filesMedia library
GET/media-files/{messageId}/urlMedia link by storage id
GET/chatrooms

List chats

Newest activity first.

ParameterTypeDescription
clientIdrequiredstring (query)
Request
curl "https://api.meowsapp.com/chatrooms?clientId=acmemain" -H "Authorization: Bearer $SN_TOKEN"
Response · 200
{ "chatRooms": [ {
  "chatRoomId": "acmemain-60111111111111-123456789012345", "clientId": "acmemain",
  "name": "Jane Lim", "myLid": "60111111111111", "clientLid": "123456789012345",
  "isGroup": false, "remoteJid": "123456789012345",
  "lastMessage": "See you tomorrow", "lastMessageFromMe": false,
  "lastMessageAt": "2026-08-28T05:22:55Z", "unreadCount": 2,
  "avatarUrl": "https://files.meowsapp.com/…/avatars/123456789012345/1965117713.jpg"
} ] }
GET/chatrooms/{chatRoomId}/messages

Chat history

The last 200 messages of a chat, oldest first.

ParameterTypeDescription
chatRoomIdrequiredstring (path)From /chatrooms.
Request
curl "https://api.meowsapp.com/chatrooms/acmemain-60111111111111-123456789012345/messages" -H "Authorization: Bearer $SN_TOKEN"
Response · 200
{ "messages": [ {
  "messageId": "3EB0…", "chatRoomId": "acmemain-6011…-1234…", "clientId": "acmemain",
  "body": "Here you go", "messageType": "image", "fromMe": false, "pushname": "Jane",
  "sentAt": "2026-08-28T05:22:55Z", "deleted": false, "fromAi": false,
  "media": { "mimeType": "image/jpeg", "mediaType": "image", "fileName": "photo.jpg", "fileSize": 102400 },
  "downloadUrl": "https://files.meowsapp.com/…/acme/acmemain/2a7b….jpg",
  "extras": { "quoted": { "…": "…" }, "reactions": { "60111111111111": "👍" }, "edited": true, "editHistory": ["…"], "meta": { "fromAI": false } }
} ] }
  • messageType: chat, image, video, audio, document, sticker, contact, location, poll, vote_update, interactive, interactive_reply.
  • extras mirrors the webhook's per-type objects plus reactions, edited/editHistory, revoked, forwarded, mentions, group.
GET/chatrooms/{chatRoomId}/messages/{messageId}/media-url

Media link for a message

A permanent public link to the stored file (downloadUrl in history is the same link).

Response · 200
{ "ok": true, "url": "https://files.meowsapp.com/…/acme/acmemain/2a7b….jpg" }
StatusWhen
404That message has no media.
POST/chatrooms/{chatRoomId}/read

Clear unread count

Resets the hosted unreadCount to 0 without sending WhatsApp read receipts (use /mark-read for blue ticks).

No parameters

Response · 200
{ "status": "ok" }
GET/media-files

Media library

Every stored file for a session, newest first, paginated.

ParameterTypeDescription
clientIdrequiredstring (query)
orgIdrequiredstring (query)
pagenumber (query)1-based, default 1.
limitnumber (query)Default 50, max 200.
Response · 200
{ "ok": true, "files": [ { "messageId": "3f2c…-uuid", "clientId": "acmemain", "mimeType": "image/jpeg", "mediaType": "image", "fileName": "photo.jpg", "fileSize": 102400, "caption": "", "createdAt": "2026-08-28T05:22:55Z" } ],
  "pagination": { "page": 1, "limit": 50, "total": 123 } }
  • messageId here is the storage record's UUID, not the WhatsApp message id — use it only with /media-files/{messageId}/url.
GET/media-files/{messageId}/url

Media link by storage id

Response · 200
{ "ok": true, "url": "https://files.meowsapp.com/…/acme/acmemain/2a7b….jpg" }