Skip to content
Download Beeper

Bridges

Manage bridge-backed account types, connections, and login sessions

List available bridges
$ beeper-desktop bridges list
GET/v1/bridges
Get bridge
$ beeper-desktop bridges retrieve
GET/v1/bridges/{bridgeID}
Get bridge capabilities
$ beeper-desktop bridges retrieve-capabilities
GET/v1/bridges/{bridgeID}/capabilities
ModelsExpand Collapse
bridge: object { id, accounts, activeAccountCount, 7 more }

Available bridge that can connect or reconnect chat accounts.

id: string

Bridge ID. Use with bridge endpoints.

accounts: array of Account { accountID, bridge, status, 5 more }

Connected accounts for this bridge. Uses the same Account schema as GET /v1/accounts.

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: object { 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+.

"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.

"connected"
"connecting"
"backfilling"
"connection_required"
"reconnect_required"
"attention_required"
"disconnected"
"disabled"
user: object { 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 map[unknown]

Runtime chat/message capabilities for this connected account, when available.

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.

activeAccountCount: number

Number of active accounts for this network on this device.

displayName: string

Human-friendly bridge name shown in Beeper.

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

Where accounts for this bridge run: on this device or in Beeper Cloud.

"cloud"
"self-hosted"
"local"
"platform-sdk"
status: "available" or "connected" or "limit_reached" or 2 more

Whether this bridge can currently be used to connect new accounts.

"available"
"connected"
"limit_reached"
"temporarily_unavailable"
"disabled"
supportsMultipleAccounts: boolean

Whether this bridge can have multiple active accounts for the same network.

type: string

Underlying bridge type, such as matrix, discordgo, slackgo, whatsapp, telegram, or twitter.

network: optional string

Network grouping used for account counts and limits.

statusText: optional string

Human-friendly status text matching Beeper account management language.

disappearing_timer_capability: object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
group_field_capability: object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
group_type_capabilities: object { type_description, avatar, disappear, 5 more }

Group creation capabilities for one group type.

type_description: string
avatar: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
disappear: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
name: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
parent: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
participants: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
topic: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
username: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
login_flow: object { id, description, name }

Connect or reconnect flow option for a bridge.

id: string

Flow ID to pass when creating a bridge login session.

description: optional string

Short explanation for when to use this flow, when provided.

name: optional string

Display name for the flow, when provided.

login_input_field: object { id, initialValue, label, 3 more }
id: string

Field ID to send back in the fields object.

initialValue: optional string

Initial field value, when provided by the network.

label: optional string

Field label to show to the user.

optional: optional boolean

True if the user can leave this field empty.

placeholder: optional string

Placeholder text to show when the field is empty.

type: optional string

Suggested input type, such as text, password, or email.

login_session: object { bridgeID, loginSessionID, status, 6 more }
bridgeID: string

Bridge ID.

loginSessionID: string

Temporary bridge login session ID.

status: "waiting_for_input" or "waiting_for_cookies" or "waiting_for_display" or 3 more
"waiting_for_input"
"waiting_for_cookies"
"waiting_for_display"
"complete"
"cancelled"
"failed"
account: optional object { accountID, bridge, status, 5 more }

A chat account added to Beeper.

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: object { 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+.

"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.

"connected"
"connecting"
"backfilling"
"connection_required"
"reconnect_required"
"attention_required"
"disconnected"
"disabled"
user: object { 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 map[unknown]

Runtime chat/message capabilities for this connected account, when available.

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.

accountID: optional string

Chat account ID for reconnect flows, when known.

currentStep: optional object { fields, stepID, type, 2 more } or object { fields, stepID, type, 5 more } or object { display, stepID, type, instructions } or object { type, account, instructions, 2 more }

Step the client should show or complete next. Omitted when the session is complete, cancelled, or failed.

UserInput: object { fields, stepID, type, 2 more }
fields: array of LoginInputField { id, initialValue, label, 3 more }
id: string

Field ID to send back in the fields object.

initialValue: optional string

Initial field value, when provided by the network.

label: optional string

Field label to show to the user.

optional: optional boolean

True if the user can leave this field empty.

placeholder: optional string

Placeholder text to show when the field is empty.

type: optional string

Suggested input type, such as text, password, or email.

stepID: string
type: "user_input"
attachments: optional array of unknown
instructions: optional string

User-facing instructions for this step.

Cookies: object { fields, stepID, type, 5 more }
fields: array of CookieField { id, name, type }
stepID: string
type: "cookies"
url: string

URL to open for the user.

expectedFinalURLRegex: optional string

Regular expression that identifies the final URL after sign-in.

extractJS: optional string

Optional extraction script for browser-based sign-in helpers. Treat as an opaque helper value.

instructions: optional string

User-facing instructions for this browser step.

userAgent: optional string

Suggested user agent for the browser session.

DisplayAndWait: object { display, stepID, type, instructions }
display: object { data, type } or object { imageURL, type } or object { type }
QRCode: object { data, type }
data: string
type: "qr"
Emoji: object { imageURL, type }
imageURL: string
type: "emoji"
Empty: object { type }
stepID: string
type: "display_and_wait"
instructions: optional string

User-facing instructions for this step.

Complete: object { type, account, instructions, 2 more }
type: "complete"
account: optional object { accountID, bridge, status, 5 more }

A chat account added to Beeper.

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: object { 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+.

"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.

"connected"
"connecting"
"backfilling"
"connection_required"
"reconnect_required"
"attention_required"
"disconnected"
"disabled"
user: object { 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 map[unknown]

Runtime chat/message capabilities for this connected account, when available.

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.

instructions: optional string

Completion instructions, when provided.

login: optional object { bridgeID, loginID, removeScopes, 4 more }

Signed-in identity for a bridge. One bridge login can contain multiple chat accounts.

bridgeID: string

Bridge ID.

loginID: string

Bridge login ID.

removeScopes: array of "current-device" or "all-devices"
"current-device"
"all-devices"
status: "connected" or "connecting" or "needs_login" or 2 more
"connected"
"connecting"
"needs_login"
"logged_out"
"unknown"
accountIDs: optional array of string

Chat accounts that belong to this bridge login, when known.

statusText: optional string

Human-friendly bridge login status text.

user: optional object { 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.

stepID: optional string
error: optional object { code, message, details }
code: string
message: string
details: optional map[unknown]
login: optional object { bridgeID, loginID, removeScopes, 4 more }

Signed-in identity for a bridge. One bridge login can contain multiple chat accounts.

bridgeID: string

Bridge ID.

loginID: string

Bridge login ID.

removeScopes: array of "current-device" or "all-devices"
"current-device"
"all-devices"
status: "connected" or "connecting" or "needs_login" or 2 more
"connected"
"connecting"
"needs_login"
"logged_out"
"unknown"
accountIDs: optional array of string

Chat accounts that belong to this bridge login, when known.

statusText: optional string

Human-friendly bridge login status text.

user: optional object { 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.

loginID: optional string

Bridge login ID for reconnect flows, when known.

provisioning_capabilities: object { group_creation, resolve_identifier, image_pack_import }

Advanced network capabilities for account lookup and group creation.

group_creation: map[GroupTypeCapabilities { type_description, avatar, disappear, 5 more } ]
type_description: string
avatar: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
disappear: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
name: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
parent: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
participants: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
topic: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
username: optional object { allowed, max_length, min_length, 2 more }

Group creation field capability.

allowed: boolean
max_length: optional number
min_length: optional number
required: optional boolean
settings: optional object { types, omit_empty_timer, timers }

Disappearing-message timer capability.

types: array of "" or "after_read" or "after_send"
""
"after_read"
"after_send"
omit_empty_timer: optional true
true
timers: optional array of number
resolve_identifier: object { any_phone, contact_list, create_dm, 4 more }

Identifier lookup capabilities for this bridge.

any_phone: boolean
contact_list: boolean
create_dm: boolean
lookup_email: boolean
lookup_phone: boolean
lookup_username: boolean
image_pack_import: optional boolean
resolve_identifier_capabilities: object { any_phone, contact_list, create_dm, 4 more }

Identifier lookup capabilities for this bridge.

any_phone: boolean
contact_list: boolean
create_dm: boolean
lookup_email: boolean
lookup_phone: boolean
lookup_username: boolean

BridgesLogin Flows

Available bridges, bridge logins, login sessions for connect and reconnect flows, and advanced network capabilities.

List login flows
$ beeper-desktop bridges:login-flows list
GET/v1/bridges/{bridgeID}/login-flows

BridgesConnections

BridgesLogin Sessions

Available bridges, bridge logins, login sessions for connect and reconnect flows, and advanced network capabilities.

Create bridge login session
$ beeper-desktop bridges:login-sessions create
POST/v1/bridges/{bridgeID}/login-sessions
Get bridge login session
$ beeper-desktop bridges:login-sessions retrieve
GET/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}
Cancel bridge login session
$ beeper-desktop bridges:login-sessions cancel
DELETE/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}

BridgesLogin SessionsSteps

Available bridges, bridge logins, login sessions for connect and reconnect flows, and advanced network capabilities.

Submit login step
$ beeper-desktop bridges:login-sessions:steps submit
POST/v1/bridges/{bridgeID}/login-sessions/{loginSessionID}/steps/{stepID}