--- title: Desktop API Changelog - Beeper Developer Docs --- Find a version Find a version ## [v4.2.557 (2026-02-13)](/desktop-api/changelog/version/v4-2-557-2026-02-13/index.md) Latest ### Added - **Desktop API discovery** - New [`GET /v1/info`](/desktop-api-reference/resources/info/methods/retrieve/index.md) endpoint provides app metadata, runtime info, and endpoint discovery for the running Desktop API server. - **WebSocket events** - New live events endpoint at [`GET /v1/ws`](/desktop-api/websocket-experimental/index.md) with per-chat subscriptions via `subscriptions.set`. - **Message reactions** - New message reaction endpoints: - [`POST /v1/chats/{chatID}/messages/{messageID}/reactions`](/desktop-api-reference/resources/chats/subresources/messages/subresources/reactions/methods/add/index.md) - [`DELETE /v1/chats/{chatID}/messages/{messageID}/reactions`](/desktop-api-reference/resources/chats/subresources/messages/subresources/reactions/methods/delete/index.md) - **Token introspection** - New [`POST /oauth/introspect`](/desktop-api/auth#desktop-api-discovery-and-introspection/index.md) endpoint uses `application/x-www-form-urlencoded` and returns active/inactive token metadata. - **Contacts list** - New [`GET /v1/accounts/{accountID}/contacts/list`](/desktop-api-reference/resources/accounts/subresources/contacts/methods/list/index.md) endpoint for cursor-based merged contact listing. ### Changed - **Chat creation behavior** - [`POST /v1/chats`](/desktop-api-reference/resources/chats/methods/create/index.md) now supports `mode=start` to create or resolve direct chats from merged contact data and returns `status=existing|created` in that mode. - **Account schema** - `network` is no longer returned from `Account`; use `accountID` plus `user` and contact/query behavior instead. ## [v4.2.509 (2026-01-27)](/desktop-api/changelog/version/v4-2-509-2026-01-27/index.md) ### Added - **Assets** - New streaming endpoint: `GET /v1/assets/serve` - Accepts `mxc://`, `localmxc://`, and `file://` URLs. - Supports range requests for large media playback/seek. ## [v4.2.499 (2026-01-23)](/desktop-api/changelog/version/v4-2-499-2026-01-23/index.md) ### Added - **Message editing** - New endpoint: `PUT /v1/chats/{chatID}/messages/{messageID}`. - **Asset uploads** - New endpoints: - `POST /v1/assets/upload` (multipart/form-data) - `POST /v1/assets/upload/base64` (JSON base64 body) - **Send message attachments** - `POST /v1/chats/{chatID}/messages` now supports attachment payloads via `uploadID`. ### Changed - **Message schema** - Added `type` and `linkedMessageID` fields in message responses. ## [v4.1.294 (2025-10-16)](/desktop-api/changelog/version/v4-1-294-2025-10-16/index.md) ### REST API - **Breaking** - gRPC-style `/v0` endpoints are deprecated in favor of RESTful `/v1` endpoints - **New** - List endpoints for chats (`/v1/chats`) and messages (`/v1/chats/:chatID/messages`) - **Fixed** - Searching for chats no longer returns cached responses Endpoint changes Reference for old routes are published [here](/desktop-api/v0/index.md). | Endpoint | Request/Response | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | [`GET /v0/get-chat`](/desktop-api/v0/operations/get_chat/index.md) → [`GET /v1/chats/{chatID}`](/desktop-api-reference/resources/chats/methods/retrieve/index.md) | **Request** `chatID` is now a path parameter; default `maxParticipantCount` `-1` (was `20`). **Response** Unchanged. | | [`POST /v0/create-chat`](/desktop-api/v0/operations/create_chat/index.md) → [`POST /v1/chats`](/desktop-api-reference/resources/chats/methods/create/index.md) | **Request** Unchanged. **Response** Returns `{ "chatID": string }`; HTTP status replaces the `success` flag. | | [`POST /v0/send-message`](/desktop-api/v0/operations/send_message/index.md) → [`POST /v1/chats/{chatID}/messages`](/desktop-api-reference/resources/messages/methods/send/index.md) | **Request** `chatID` moved to path; body now only `text` plus optional `replyToMessageID`. **Response** `success` flag removed. | | [`POST /v0/archive-chat`](/desktop-api/v0/operations/archive_chat/index.md) → [`POST /v1/chats/{chatID}/archive`](/desktop-api-reference/resources/chats/methods/archive/index.md) | **Request** `chatID` moved to path; body still optional `archived` boolean. **Response** Success now `204 No Content` (empty body). | | [`POST /v0/set-chat-reminder`](/desktop-api/v0/operations/set_chat_reminder/index.md) → [`POST /v1/chats/{chatID}/reminders`](/desktop-api-reference/resources/chats/subresources/reminders/methods/create/index.md) | **Request** `chatID` moved to path; body still wraps `reminder`. **Response** Success now `204 No Content` (empty body). | | [`POST /v0/clear-chat-reminder`](/desktop-api/v0/operations/clear_chat_reminder/index.md) → [`DELETE /v1/chats/{chatID}/reminders`](/desktop-api-reference/resources/chats/subresources/reminders/methods/delete/index.md) | **Request** Method is `DELETE`; `chatID` path param; no body. **Response** Success now `204 No Content`. | | [`GET /v0/search-messages`](/desktop-api/v0/operations/search_messages/index.md) → [`GET /v1/messages/search`](/desktop-api-reference/resources/messages/methods/search/index.md) | **Request** Max `limit` now `20`. **Response** Unchanged; each page capped at 20 results. | | [`GET /v0/search-users`](/desktop-api/v0/operations/search_users/index.md) → [`GET /v1/accounts/{accountID}/contacts`](/desktop-api-reference/resources/contacts/methods/search/index.md) | **Request** `accountID` moved into the path; `query` unchanged. **Response** Unchanged. | | [`GET /v0/get-accounts`](/desktop-api/v0/operations/get_accounts/index.md) → [`GET /v1/accounts`](/desktop-api-reference/resources/accounts/methods/list/index.md) | **Request/Response** Unchanged. | | [`POST /v0/download-asset`](/desktop-api/v0/operations/download_asset/index.md) → [`POST /v1/assets/download`](/desktop-api-reference/resources/app/methods/downloadAsset/index.md) | **Request/Response** Unchanged. | | [`POST /v0/open-app`](/desktop-api/v0/operations/open_app/index.md) → [`POST /v1/focus`](/desktop-api-reference/resources/app/methods/open/index.md) | **Request/Response** Unchanged. | | [`GET /v0/search`](/desktop-api/v0/operations/search/index.md) → [`GET /v1/search`](/desktop-api-reference/resources/app/methods/search/index.md) | **Request/Response** Unchanged. | | [`GET /v0/search-chats`](/desktop-api/v0/operations/search_chats/index.md) → [`GET /v1/chats/search`](/desktop-api-reference/resources/chats/methods/search/index.md) | **Request/Response** Unchanged. | ### MCP Server We have an all new MCP server, and it’s [open source](https://github.com/beeper/desktop-api-js/tree/main/packages/mcp-server)! - **Breaking** - MCP server no longer supports Server-Side Events (SSE). If your preferred client does not support Streamable HTTP or stdio, [get in touch](mailto:help@beeper.com) for workarounds. Everything should work as before. If you encounter any issues, please [email us at ](mailto:help@beeper.com)! ### TypeScript SDK - **Breaking** - Some methods were reorganized - **Breaking** - `client.token.*` removed - **New** - `client.chats.list()` and `client.messages.list(chatID)` Method changes | Old Usage | New Usage | Notes | | ----------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------- | | `client.app.downloadAsset({ url })` | `client.assets.download({ url })` | Resource renamed | | `client.app.open({ chatID, ... })` | `client.focus({ chatID, ... })` | Moved to top-level | | `client.app.search({ query })` | `client.search({ query })` | Moved to top-level | | `client.chats.retrieve({ chatID })` | `client.chats.retrieve(chatID)` | `chatID` now path parameter | | `client.chats.archive({ chatID, archived })` | `client.chats.archive(chatID, { archived })` | `chatID` now path parameter | | `client.chats.reminders.create({ chatID, reminder })` | `client.chats.reminders.create(chatID, { reminder })` | `chatID` now path parameter | | `client.chats.reminders.delete({ chatID })` | `client.chats.reminders.delete(chatID)` | `chatID` now path parameter | | `client.contacts.search({ accountID, query })` | `client.accounts.contacts.search(accountID, { query })` | Moved to subresource; `accountID` now path parameter | | `client.messages.send({ chatID, text, ... })` | `client.messages.send(chatID, { text, ... })` | `chatID` now path parameter | | `client.token.*` | N/A | Removed | ## [v4.1.244 (2025-09-30)](/desktop-api/changelog/version/v4-1-244-2025-09-30/index.md) ### Fixed - API responses no longer truncate the message text to 500 characters, increased the limit in the MCP responses to 1000 ## [v4.1.239 (2025-09-26)](/desktop-api/changelog/version/v4-1-239-2025-09-26/index.md) ### Added - **Remote Access** is now available, allowing advanced users to expose Beeper Desktop API to the internet. Read more [here](/desktop-api/advanced/remote-access/index.md). - Authenticated responses from the Desktop API now returns the Desktop app version the user is on in the response headers (`X-Beeper-Desktop-Version`). You can use the [token info endpoint](/desktop-api-reference/resources/token/methods/info/index.md) as a no-op request to check the version. ## [v4.1.210 (2025-09-17)](/desktop-api/changelog/version/v4-1-210-2025-09-17/index.md) ### Added - [`POST /v0/create-chat`](/desktop-api/v0/operations/create_chat/index.md): create single or group chats using participant IDs, optional title, and initial message text (`CreateChatOutput`). - [`POST /v0/download-asset`](/desktop-api/v0/operations/download_asset/index.md): fetch Matrix `mxc://` assets and return a local `srcURL` (`DownloadAssetOutput`). Assets (avatars, message attachments) return a local file path if they are already downloaded. This method can be used to download assets that are not yet downloaded. - [`GET /v0/search`](/desktop-api/v0/operations/search/index.md): unified search returning top chats, participant matches, and first page of messages (`UnifiedSearchOutput`). - [`GET /v0/search-users`](/desktop-api/v0/operations/search_users/index.md): look up contacts on a specific account before creating chats (`SearchUsersOutput`). ### Changed - [`POST /v0/open-app`](/desktop-api/v0/operations/open_app/index.md) (`OpenAppInput`): new `draftAttachmentPath`; message jump now uses `messageID`. - [`GET /v0/search-chats`](/desktop-api/v0/operations/search_chats/index.md) (`SearchChatsInput`): consolidated literal `query`, new `scope` toggle (titles vs participants), removed `participantQuery`, dropped `channel` from `type`, boolean filters now nullable. - [`GET /v0/search-messages`](/desktop-api/v0/operations/search_messages/index.md) (`SearchMessagesInput`/`SearchMessagesOutput`): replaced `onlyWith*` flags with `mediaTypes` array (`any/video/image/link/file`); default page size documented as 20 with enforced cap; updated cursor examples; mute/low-priority filters nullable. - [`POST /v0/send-message`](/desktop-api/v0/operations/send_message/index.md) (`SendMessageOutput`): response returns `chatID` and `pendingMessageID` instead of a final `messageID`. ### Removed - `POST /v0/download-attachment` and `GetAttachmentOutput` superseded by the new download asset flow. ## [v4.1.169 (2025-09-02)](/desktop-api/changelog/version/v4-1-169-2025-09-02/index.md) Starting from this version, Beeper Desktop API & MCP is now available to everyone on the stable version of the app. ### Fixed - MCP: [`search_chats`](/desktop-api/v0/operations/search_chats/index.md) and [`get_chat`](/desktop-api/v0/operations/get_chat/index.md) now returns more information about a chat with explicit `chatID` and instructions for the LLM on how to use it ## [v4.1.155 (2025-08-31)](/desktop-api/changelog/version/v4-1-155-2025-08-31/index.md) ### Added - Introduced more token-efficient `localChatID` fields for all chats. - Improved attachment support. - Released official SDK for TypeScript! --- ## [v4.1.92 (2025-08-13)](/desktop-api/changelog/version/v4-1-92-2025-08-13/index.md) ### Added - Initial release of Beeper Desktop API & MCP