Skip to content
Download Beeper

List chat accounts

GET/v1/accounts

List chat accounts connected to this Beeper Client API server, including bridge, network, user identity, and connection status.

ReturnsExpand Collapse
accountID: string

Chat account added to Beeper. Use this to route account-scoped actions. Examples include matrix for Beeper/Matrix, discordgo for a cloud bridge, slackgo.TEAM-USER for workspace-scoped cloud bridges, and local-whatsapp_ba_… for local bridges.

bridge: AccountBridge { id, provider, type }

Bridge metadata for the account. Available in Beeper Desktop v4.2.785+.

id: string

Bridge identifier. Beeper Cloud accounts often use the network type (for example matrix or discordgo); on-device accounts use a local bridge ID (for example local-whatsapp). Available in Beeper Desktop v4.2.785+.

provider: "cloud" or "self-hosted" or "local" or "platform-sdk"

Where this account runs: on this device or in Beeper Cloud. Available in Beeper Desktop v4.2.785+.

One of the following:
"cloud"
"self-hosted"
"local"
"platform-sdk"
type: string

Bridge type, such as matrix, discordgo, slackgo, whatsapp, telegram, or twitter. Available in Beeper Desktop v4.2.785+.

status: "connected" or "connecting" or "backfilling" or 5 more

Current connection status for this account.

One of the following:
"connected"
"connecting"
"backfilling"
"connection_required"
"reconnect_required"
"attention_required"
"disconnected"
"disabled"
user: User { id, cannotMessage, email, 5 more }

User the account belongs to.

id: string

Stable Beeper user ID. Use as the primary key when referencing a person.

cannotMessage: optional boolean

True if Beeper cannot initiate messages to this user (e.g., blocked, network restriction, or no DM path). The user may still message you.

email: optional string

Email address if known. Not guaranteed verified.

fullName: optional string

Display name as shown in clients (e.g., ‘Alice Example’). May include emojis.

imgURL: optional string

Avatar image URL if available. This may be a remote URL, media URL, data URL, or local file URL depending on the source. May be temporary or available only on this device; download promptly if durable access is needed.

isSelf: optional boolean

True if this user represents the authenticated account’s own identity.

phoneNumber: optional string

User’s phone number in E.164 format (e.g., ‘+14155552671’). Omit if unknown.

username: optional string

Human-readable handle if available (e.g., ‘@alice’). May be network-specific and not globally unique.

capabilities: optional object { allowed_reactions, archive, custom_emoji_reactions, 24 more }

Runtime bridgev2 room feature capabilities for this connected account, when available.

allowed_reactions: optional array of string

Allowed Unicode reactions. Omitted means all emoji reactions are allowed.

archive: optional boolean

True if archive/unarchive is supported.

custom_emoji_reactions: optional boolean

True if custom emoji reactions are supported.

delete: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
delete_chat: optional boolean

True if deleting chats for the authenticated user is supported.

delete_chat_for_everyone: optional boolean

True if deleting chats for everyone is supported.

delete_for_me: optional boolean

True if deleting messages only for the authenticated user is supported.

delete_max_age: optional number

Maximum message age for delete-for-everyone, in seconds.

disappearing_timer: optional object { omit_empty_timer, timers, types }

Disappearing-message timer capabilities.

omit_empty_timer: optional boolean

True if empty timer objects should be omitted from message content.

timers: optional array of number

Allowed disappearing timer values in milliseconds. Omitted means any timer is allowed.

types: optional array of "after_read" or "after_send"

Supported disappearing timer types.

One of the following:
"after_read"
"after_send"
edit: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
edit_max_age: optional number

Maximum message age for edits, in seconds.

edit_max_count: optional number

Maximum number of edits allowed for one message.

file: optional map[object { mime_types, caption, max_caption_length, 5 more } ]

Supported attachment message types and their per-type constraints, keyed by Matrix msgtype or bridgev2 pseudo-msgtype.

mime_types: map[-2 or -1 or 0 or 2 more]

Supported MIME types or MIME patterns for this file message type. Missing MIME types should be treated as rejected.

One of the following:
-2
-1
0
1
2
caption: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
max_caption_length: optional number

Maximum caption length when captions are supported.

max_duration: optional number

Maximum audio or video duration in seconds.

max_height: optional number

Maximum image or video height in pixels.

max_size: optional number

Maximum file size in bytes.

max_width: optional number

Maximum image or video width in pixels.

view_once: optional boolean

True if this file type can be sent as view-once media.

formatting: optional map[-2 or -1 or 0 or 2 more]

Supported rich-text formatting features keyed by bridgev2 feature name. Omitted means no formatting support is advertised.

One of the following:
-2
-1
0
1
2
location_message: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
mark_as_unread: optional boolean

True if marking chats unread is supported.

max_text_length: optional number

Maximum length of normal text messages.

member_actions: optional object { ban, invite, kick, 2 more }

Participant management capabilities.

ban: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
invite: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
kick: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
leave: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
revoke_invite: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
message_request: optional object { accept_with_button, accept_with_message }

Message request capabilities.

accept_with_button: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
accept_with_message: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
poll: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
reaction: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
reaction_count: optional number

Maximum number of reactions allowed on a single message.

read_receipts: optional boolean

True if read receipts are supported.

reply: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
state: optional object { "com.beeper.disappearing_timer", "m.room.avatar", "m.room.name", "m.room.topic" }

Room state update capabilities keyed by Matrix state event type.

"com.beeper.disappearing_timer": optional object { level }

Disappearing-message timer state capability.

level: -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
"m.room.avatar": optional object { level }

Chat avatar state capability.

level: -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
"m.room.name": optional object { level }

Chat title state capability.

level: -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
"m.room.topic": optional object { level }

Chat description/topic state capability.

level: -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
thread: optional -2 or -1 or 0 or 2 more

-2: rejected, -1: dropped, 0: unsupported, 1: partially supported, 2: fully supported.

One of the following:
-2
-1
0
1
2
typing_notifications: optional boolean

True if typing notifications are supported.

loginID: optional string

Bridge login ID for this account, when known. One bridge login can contain multiple chat accounts.

network: optional string

Human-friendly network name for the account. Omitted when the network is unknown.

statusText: optional string

Human-friendly account status text.

List chat accounts

curl http://localhost:23373/v1/accounts \
    -H "Authorization: Bearer $BEEPER_ACCESS_TOKEN"
[
  {
    "accountID": "matrix",
    "bridge": {
      "id": "matrix",
      "provider": "cloud",
      "type": "matrix"
    },
    "status": "connected",
    "user": {
      "id": "@batuhan:beeper.com",
      "cannotMessage": true,
      "email": "batuhan@example.com",
      "fullName": "Batuhan İçöz",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "batuhan:beeper.com"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "matrix",
    "network": "Beeper",
    "statusText": "statusText"
  },
  {
    "accountID": "discordgo",
    "bridge": {
      "id": "discordgo",
      "provider": "cloud",
      "type": "discordgo"
    },
    "status": "connected",
    "user": {
      "id": "221590782384013314",
      "cannotMessage": true,
      "email": "email",
      "fullName": "Batuhan İçöz",
      "imgURL": "file:///Users/batuhan/Library/Application%20Support/BeeperTexts/media/local.beeper.com/batuhan_jmaNwqQPUITme6VV5OSXhH3ZYpmi9UyaYQ43S2UA9qkkzy11Q9JUAiv8TYmOkoQr",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "batuhanicoz"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "discordgo",
    "network": "Discord",
    "statusText": "statusText"
  },
  {
    "accountID": "local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
    "bridge": {
      "id": "local-whatsapp",
      "provider": "local",
      "type": "whatsapp"
    },
    "status": "connected",
    "user": {
      "id": "ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
      "cannotMessage": true,
      "email": "email",
      "fullName": "Batuhan İçöz",
      "imgURL": "file:///Users/batuhan/Library/Application%20Support/BeeperTexts/media/localhostlocal-whatsapp/_gkBAAAAB1xsnfQKMTcwOTkzODU5MAkBAAAAB1xsnfQ",
      "isSelf": true,
      "phoneNumber": "+15550101001",
      "username": "username"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
    "network": "WhatsApp",
    "statusText": "statusText"
  }
]
Returns Examples
[
  {
    "accountID": "matrix",
    "bridge": {
      "id": "matrix",
      "provider": "cloud",
      "type": "matrix"
    },
    "status": "connected",
    "user": {
      "id": "@batuhan:beeper.com",
      "cannotMessage": true,
      "email": "batuhan@example.com",
      "fullName": "Batuhan İçöz",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "batuhan:beeper.com"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "matrix",
    "network": "Beeper",
    "statusText": "statusText"
  },
  {
    "accountID": "discordgo",
    "bridge": {
      "id": "discordgo",
      "provider": "cloud",
      "type": "discordgo"
    },
    "status": "connected",
    "user": {
      "id": "221590782384013314",
      "cannotMessage": true,
      "email": "email",
      "fullName": "Batuhan İçöz",
      "imgURL": "file:///Users/batuhan/Library/Application%20Support/BeeperTexts/media/local.beeper.com/batuhan_jmaNwqQPUITme6VV5OSXhH3ZYpmi9UyaYQ43S2UA9qkkzy11Q9JUAiv8TYmOkoQr",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "batuhanicoz"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "discordgo",
    "network": "Discord",
    "statusText": "statusText"
  },
  {
    "accountID": "local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
    "bridge": {
      "id": "local-whatsapp",
      "provider": "local",
      "type": "whatsapp"
    },
    "status": "connected",
    "user": {
      "id": "ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
      "cannotMessage": true,
      "email": "email",
      "fullName": "Batuhan İçöz",
      "imgURL": "file:///Users/batuhan/Library/Application%20Support/BeeperTexts/media/localhostlocal-whatsapp/_gkBAAAAB1xsnfQKMTcwOTkzODU5MAkBAAAAB1xsnfQ",
      "isSelf": true,
      "phoneNumber": "+15550101001",
      "username": "username"
    },
    "capabilities": {
      "allowed_reactions": [
        "string"
      ],
      "archive": true,
      "custom_emoji_reactions": true,
      "delete": -2,
      "delete_chat": true,
      "delete_chat_for_everyone": true,
      "delete_for_me": true,
      "delete_max_age": 0,
      "disappearing_timer": {
        "omit_empty_timer": true,
        "timers": [
          0
        ],
        "types": [
          "after_read"
        ]
      },
      "edit": -2,
      "edit_max_age": 0,
      "edit_max_count": 0,
      "file": {
        "foo": {
          "mime_types": {
            "foo": -2
          },
          "caption": -2,
          "max_caption_length": 0,
          "max_duration": 0,
          "max_height": 0,
          "max_size": 0,
          "max_width": 0,
          "view_once": true
        }
      },
      "formatting": {
        "foo": -2
      },
      "location_message": -2,
      "mark_as_unread": true,
      "max_text_length": 0,
      "member_actions": {
        "ban": -2,
        "invite": -2,
        "kick": -2,
        "leave": -2,
        "revoke_invite": -2
      },
      "message_request": {
        "accept_with_button": -2,
        "accept_with_message": -2
      },
      "poll": -2,
      "reaction": -2,
      "reaction_count": 0,
      "read_receipts": true,
      "reply": -2,
      "state": {
        "com.beeper.disappearing_timer": {
          "level": -2
        },
        "m.room.avatar": {
          "level": -2
        },
        "m.room.name": {
          "level": -2
        },
        "m.room.topic": {
          "level": -2
        }
      },
      "thread": -2,
      "typing_notifications": true
    },
    "loginID": "ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc",
    "network": "WhatsApp",
    "statusText": "statusText"
  }
]