Skip to content
Download Beeper

Create bridge login session

bridges.login_sessions.create(strbridge_id, LoginSessionCreateParams**kwargs) -> LoginSession
POST/v1/bridges/{bridgeID}/login-sessions

Start a temporary bridge login session to connect a new chat account or reconnect an existing bridge login. Omit loginID and accountID to connect a new account.

ParametersExpand Collapse
bridge_id: str

Bridge ID.

minLength1
account_id: Optional[str]

Existing chat account ID to reconnect. Omit to connect a new account.

minLength1
flow_id: Optional[str]

Optional flow ID returned by the list login flows endpoint. If omitted, Beeper chooses the default flow.

minLength1
login_id: Optional[str]

Existing bridge login ID to reconnect. Omit to connect a new account.

minLength1
ReturnsExpand Collapse
class LoginSession:
bridge_id: str

Bridge ID.

login_session_id: str

Temporary bridge login session ID.

status: Literal["waiting_for_input", "waiting_for_cookies", "waiting_for_display", 3 more]
One of the following:
"waiting_for_input"
"waiting_for_cookies"
"waiting_for_display"
"complete"
"cancelled"
"failed"
account: Optional[Account]

A chat account added to Beeper.

account_id: str

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 metadata for the account. Available in Beeper Desktop v4.2.785+.

id: str

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: Literal["cloud", "self-hosted", "local", "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: str

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

status: Literal["connected", "connecting", "backfilling", 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

User the account belongs to.

id: str

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

cannot_message: Optional[bool]

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[str]

Email address if known. Not guaranteed verified.

full_name: Optional[str]

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

img_url: Optional[str]

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.

is_self: Optional[bool]

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

phone_number: Optional[str]

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

username: Optional[str]

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

capabilities: Optional[Capabilities]

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

allowed_reactions: Optional[List[str]]

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

archive: Optional[bool]

True if archive/unarchive is supported.

custom_emoji_reactions: Optional[bool]

True if custom emoji reactions are supported.

delete: Optional[Literal[-2, -1, 0, 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[bool]

True if deleting chats for the authenticated user is supported.

delete_chat_for_everyone: Optional[bool]

True if deleting chats for everyone is supported.

delete_for_me: Optional[bool]

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

delete_max_age: Optional[int]

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

disappearing_timer: Optional[CapabilitiesDisappearingTimer]

Disappearing-message timer capabilities.

omit_empty_timer: Optional[bool]

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

timers: Optional[List[int]]

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

types: Optional[List[Literal["after_read", "after_send"]]]

Supported disappearing timer types.

One of the following:
"after_read"
"after_send"
edit: Optional[Literal[-2, -1, 0, 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[int]

Maximum message age for edits, in seconds.

edit_max_count: Optional[int]

Maximum number of edits allowed for one message.

file: Optional[Dict[str, CapabilitiesFile]]

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

mime_types: Dict[str, Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[int]

Maximum caption length when captions are supported.

max_duration: Optional[int]

Maximum audio or video duration in seconds.

max_height: Optional[int]

Maximum image or video height in pixels.

max_size: Optional[int]

Maximum file size in bytes.

max_width: Optional[int]

Maximum image or video width in pixels.

view_once: Optional[bool]

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

formatting: Optional[Dict[str, Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[bool]

True if marking chats unread is supported.

max_text_length: Optional[int]

Maximum length of normal text messages.

member_actions: Optional[CapabilitiesMemberActions]

Participant management capabilities.

ban: Optional[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[CapabilitiesMessageRequest]

Message request capabilities.

accept_with_button: Optional[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[int]

Maximum number of reactions allowed on a single message.

read_receipts: Optional[bool]

True if read receipts are supported.

reply: Optional[Literal[-2, -1, 0, 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[CapabilitiesState]

Room state update capabilities keyed by Matrix state event type.

com_beeper_disappearing_timer: Optional[CapabilitiesStateComBeeperDisappearingTimer]

Disappearing-message timer state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomAvatar]

Chat avatar state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomName]

Chat title state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomTopic]

Chat description/topic state capability.

level: Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[bool]

True if typing notifications are supported.

login_id: Optional[str]

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

network: Optional[str]

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

status_text: Optional[str]

Human-friendly account status text.

account_id: Optional[str]

Chat account ID for reconnect flows, when known.

current_step: Optional[CurrentStep]

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

One of the following:
class CurrentStepUserInput:
fields: List[LoginInputField]
id: str

Field ID to send back in the fields object.

initial_value: Optional[str]

Initial field value, when provided by the network.

label: Optional[str]

Field label to show to the user.

optional: Optional[bool]

True if the user can leave this field empty.

placeholder: Optional[str]

Placeholder text to show when the field is empty.

type: Optional[str]

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

step_id: str
type: Literal["user_input"]
attachments: Optional[List[Optional[object]]]
instructions: Optional[str]

User-facing instructions for this step.

class CurrentStepCookies:
fields: List[CookieField]
One of the following:
One of the following:
step_id: str
type: Literal["cookies"]
url: str

URL to open for the user.

expected_final_url_regex: Optional[str]

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

extract_js: Optional[str]

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

instructions: Optional[str]

User-facing instructions for this browser step.

user_agent: Optional[str]

Suggested user agent for the browser session.

class CurrentStepDisplayAndWait:
display: CurrentStepDisplayAndWaitDisplay
One of the following:
class CurrentStepDisplayAndWaitDisplayQRCode:
data: str
type: Literal["qr"]
class CurrentStepDisplayAndWaitDisplayEmoji:
image_url: str
type: Literal["emoji"]
class CurrentStepDisplayAndWaitDisplayCode:
data: str
type: Literal["code"]
class CurrentStepDisplayAndWaitDisplayEmpty:
type: Literal["nothing"]
step_id: str
type: Literal["display_and_wait"]
instructions: Optional[str]

User-facing instructions for this step.

class CurrentStepComplete:
type: Literal["complete"]
account: Optional[Account]

A chat account added to Beeper.

account_id: str

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 metadata for the account. Available in Beeper Desktop v4.2.785+.

id: str

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: Literal["cloud", "self-hosted", "local", "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: str

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

status: Literal["connected", "connecting", "backfilling", 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

User the account belongs to.

id: str

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

cannot_message: Optional[bool]

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[str]

Email address if known. Not guaranteed verified.

full_name: Optional[str]

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

img_url: Optional[str]

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.

is_self: Optional[bool]

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

phone_number: Optional[str]

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

username: Optional[str]

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

capabilities: Optional[Capabilities]

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

allowed_reactions: Optional[List[str]]

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

archive: Optional[bool]

True if archive/unarchive is supported.

custom_emoji_reactions: Optional[bool]

True if custom emoji reactions are supported.

delete: Optional[Literal[-2, -1, 0, 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[bool]

True if deleting chats for the authenticated user is supported.

delete_chat_for_everyone: Optional[bool]

True if deleting chats for everyone is supported.

delete_for_me: Optional[bool]

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

delete_max_age: Optional[int]

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

disappearing_timer: Optional[CapabilitiesDisappearingTimer]

Disappearing-message timer capabilities.

omit_empty_timer: Optional[bool]

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

timers: Optional[List[int]]

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

types: Optional[List[Literal["after_read", "after_send"]]]

Supported disappearing timer types.

One of the following:
"after_read"
"after_send"
edit: Optional[Literal[-2, -1, 0, 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[int]

Maximum message age for edits, in seconds.

edit_max_count: Optional[int]

Maximum number of edits allowed for one message.

file: Optional[Dict[str, CapabilitiesFile]]

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

mime_types: Dict[str, Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[int]

Maximum caption length when captions are supported.

max_duration: Optional[int]

Maximum audio or video duration in seconds.

max_height: Optional[int]

Maximum image or video height in pixels.

max_size: Optional[int]

Maximum file size in bytes.

max_width: Optional[int]

Maximum image or video width in pixels.

view_once: Optional[bool]

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

formatting: Optional[Dict[str, Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[bool]

True if marking chats unread is supported.

max_text_length: Optional[int]

Maximum length of normal text messages.

member_actions: Optional[CapabilitiesMemberActions]

Participant management capabilities.

ban: Optional[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[CapabilitiesMessageRequest]

Message request capabilities.

accept_with_button: Optional[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[int]

Maximum number of reactions allowed on a single message.

read_receipts: Optional[bool]

True if read receipts are supported.

reply: Optional[Literal[-2, -1, 0, 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[CapabilitiesState]

Room state update capabilities keyed by Matrix state event type.

com_beeper_disappearing_timer: Optional[CapabilitiesStateComBeeperDisappearingTimer]

Disappearing-message timer state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomAvatar]

Chat avatar state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomName]

Chat title state capability.

level: Literal[-2, -1, 0, 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[CapabilitiesStateMRoomTopic]

Chat description/topic state capability.

level: Literal[-2, -1, 0, 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[Literal[-2, -1, 0, 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[bool]

True if typing notifications are supported.

login_id: Optional[str]

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

network: Optional[str]

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

status_text: Optional[str]

Human-friendly account status text.

instructions: Optional[str]

Completion instructions, when provided.

login: Optional[BridgeLogin]

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

bridge_id: str

Bridge ID.

login_id: str

Bridge login ID.

remove_scopes: List[Literal["current-device", "all-devices"]]
One of the following:
"current-device"
"all-devices"
status: Literal["connected", "connecting", "needs_login", 2 more]
One of the following:
"connected"
"connecting"
"needs_login"
"logged_out"
"unknown"
account_ids: Optional[List[str]]

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

status_text: Optional[str]

Human-friendly bridge login status text.

user: Optional[User]

User the account belongs to.

id: str

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

cannot_message: Optional[bool]

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[str]

Email address if known. Not guaranteed verified.

full_name: Optional[str]

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

img_url: Optional[str]

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.

is_self: Optional[bool]

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

phone_number: Optional[str]

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

username: Optional[str]

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

step_id: Optional[str]
error: Optional[APIError]
code: str
message: str
details: Optional[Dict[str, Optional[object]]]
login: Optional[BridgeLogin]

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

bridge_id: str

Bridge ID.

login_id: str

Bridge login ID.

remove_scopes: List[Literal["current-device", "all-devices"]]
One of the following:
"current-device"
"all-devices"
status: Literal["connected", "connecting", "needs_login", 2 more]
One of the following:
"connected"
"connecting"
"needs_login"
"logged_out"
"unknown"
account_ids: Optional[List[str]]

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

status_text: Optional[str]

Human-friendly bridge login status text.

user: Optional[User]

User the account belongs to.

id: str

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

cannot_message: Optional[bool]

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[str]

Email address if known. Not guaranteed verified.

full_name: Optional[str]

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

img_url: Optional[str]

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.

is_self: Optional[bool]

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

phone_number: Optional[str]

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

username: Optional[str]

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

login_id: Optional[str]

Bridge login ID for reconnect flows, when known.

Create bridge login session

import os
from beeper_desktop_api import BeeperDesktop

client = BeeperDesktop(
    access_token=os.environ.get("BEEPER_ACCESS_TOKEN"),  # This is the default and can be omitted
)
login_session = client.bridges.login_sessions.create(
    bridge_id="local-whatsapp",
)
print(login_session.bridge_id)
{
  "bridgeID": "bridgeID",
  "loginSessionID": "loginSessionID",
  "status": "waiting_for_input",
  "account": {
    "accountID": "accountID",
    "bridge": {
      "id": "id",
      "provider": "cloud",
      "type": "type"
    },
    "status": "connected",
    "user": {
      "id": "id",
      "cannotMessage": true,
      "email": "email",
      "fullName": "fullName",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "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": "loginID",
    "network": "network",
    "statusText": "statusText"
  },
  "accountID": "accountID",
  "currentStep": {
    "fields": [
      {
        "id": "id",
        "initialValue": "initialValue",
        "label": "label",
        "optional": true,
        "placeholder": "placeholder",
        "type": "type"
      }
    ],
    "stepID": "stepID",
    "type": "user_input",
    "attachments": [
      {}
    ],
    "instructions": "instructions"
  },
  "error": {
    "code": "code",
    "message": "message",
    "details": {
      "foo": "bar"
    }
  },
  "login": {
    "bridgeID": "bridgeID",
    "loginID": "loginID",
    "removeScopes": [
      "current-device"
    ],
    "status": "connected",
    "accountIDs": [
      "string"
    ],
    "statusText": "statusText",
    "user": {
      "id": "id",
      "cannotMessage": true,
      "email": "email",
      "fullName": "fullName",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "username"
    }
  },
  "loginID": "loginID"
}
Returns Examples
{
  "bridgeID": "bridgeID",
  "loginSessionID": "loginSessionID",
  "status": "waiting_for_input",
  "account": {
    "accountID": "accountID",
    "bridge": {
      "id": "id",
      "provider": "cloud",
      "type": "type"
    },
    "status": "connected",
    "user": {
      "id": "id",
      "cannotMessage": true,
      "email": "email",
      "fullName": "fullName",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "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": "loginID",
    "network": "network",
    "statusText": "statusText"
  },
  "accountID": "accountID",
  "currentStep": {
    "fields": [
      {
        "id": "id",
        "initialValue": "initialValue",
        "label": "label",
        "optional": true,
        "placeholder": "placeholder",
        "type": "type"
      }
    ],
    "stepID": "stepID",
    "type": "user_input",
    "attachments": [
      {}
    ],
    "instructions": "instructions"
  },
  "error": {
    "code": "code",
    "message": "message",
    "details": {
      "foo": "bar"
    }
  },
  "login": {
    "bridgeID": "bridgeID",
    "loginID": "loginID",
    "removeScopes": [
      "current-device"
    ],
    "status": "connected",
    "accountIDs": [
      "string"
    ],
    "statusText": "statusText",
    "user": {
      "id": "id",
      "cannotMessage": true,
      "email": "email",
      "fullName": "fullName",
      "imgURL": "imgURL",
      "isSelf": true,
      "phoneNumber": "phoneNumber",
      "username": "username"
    }
  },
  "loginID": "loginID"
}