Skip to content
Download Beeper

Login

Complete first-party Beeper app login

Start Beeper app setup
POST/v1/app/setup/start
Send setup sign-in code
POST/v1/app/setup/email
Complete setup sign-in with code
POST/v1/app/setup/response
Create account for setup
POST/v1/app/setup/register
ModelsExpand Collapse
LoginStartResponse object { setupRequestID, signInMethods }
setupRequestID: string

Setup request ID to use in the next sign-in step.

signInMethods: array of string

Available sign-in methods for this setup request.

LoginResponseResponse = object { matrix, session } or object { copy, leadToken, registrationRequired, 2 more }
One of the following:
Success object { matrix, session }
matrix: object { accessToken, deviceID, homeserver, userID }

Account credentials for first-party app setup.

accessToken: string

Beeper account access token. Returned once for first-party app setup.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

session: object { e2ee, state, matrix, verification }

Current app sign-in and encrypted messaging setup state after sign-in.

e2ee: object { crossSigning, firstSyncDone, hasBackedUpRecoveryKey, 6 more }

Encrypted messaging setup status.

crossSigning: boolean

Whether this account can verify trusted devices.

firstSyncDone: boolean

Whether the first encrypted message sync is complete.

hasBackedUpRecoveryKey: boolean

Whether the user confirmed that they saved their recovery key.

initialized: boolean

Whether encrypted messaging setup has started.

keyBackup: boolean

Whether encrypted message backup is available.

secrets: object { masterKey, megolmBackupKey, recoveryKey, 2 more }

Encrypted messaging keys available on this device.

masterKey: boolean

Whether the account identity key is available.

megolmBackupKey: boolean

Whether the encrypted message backup key is available.

recoveryKey: boolean

Whether a recovery key is available.

selfSigningKey: boolean

Whether the device trust key is available.

userSigningKey: boolean

Whether the user trust key is available.

secretStorage: boolean

Whether secure key storage is available.

verified: boolean

Whether this device is trusted for encrypted messages.

recoveryKeyGeneratedAt: optional number

Unix timestamp for when the recovery key was created.

state: "needs-login" or "initializing" or "needs-cross-signing-setup" or 4 more

Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server.

One of the following:
"needs-login"
"initializing"
"needs-cross-signing-setup"
"needs-verification"
"needs-secrets"
"needs-first-sync"
"ready"
matrix: optional object { deviceID, homeserver, userID }

Signed-in account details. Omitted until sign-in is complete.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

verification: optional object { id, availableActions, direction, 8 more }

Trusted device verification progress.

id: string

Verification ID to pass in verification action paths.

availableActions: array of "accept" or "cancel" or "qr.confirmScanned" or 2 more

Verification actions that are valid for the current state.

One of the following:
"accept"
"cancel"
"qr.confirmScanned"
"sas.start"
"sas.confirm"
direction: "incoming" or "outgoing"

Whether this device started or received the verification.

One of the following:
"incoming"
"outgoing"
methods: array of "qr" or "sas"

Verification methods supported for this transaction.

One of the following:
"qr"
"sas"
purpose: "login" or "device"

Why this verification exists.

One of the following:
"login"
"device"
state: "requested" or "ready" or "sas_ready" or 4 more

Current trusted-device verification state.

One of the following:
"requested"
"ready"
"sas_ready"
"qr_scanned"
"done"
"cancelled"
"error"
error: optional object { code, reason }

Verification error details, if verification stopped.

code: string

Verification error code.

reason: string

User-facing verification error message.

otherDevice: optional object { id, name }

Other device participating in verification.

id: string

Other device ID.

name: optional string

Other device display name, if known.

otherUserID: optional string

Other Beeper user participating in verification.

qr: optional object { data }

QR verification data.

data: string

QR code payload to display for verification.

sas: optional object { emojis, decimals }

Emoji or number comparison data for verification.

emojis: string

Emoji sequence to compare on both devices.

decimals: optional string

Number sequence to compare on both devices.

RegistrationRequired object { copy, leadToken, registrationRequired, 2 more }
copy: object { submit, terms, title, usernamePlaceholder }

Copy to display during account creation.

submit: "Continue"

Submit button label.

terms: "By continuing, you agree to the Terms of Use and acknowledge the Privacy Policy."

Terms and privacy notice to show before account creation.

title: "Choose your username"

Title for the username step.

usernamePlaceholder: "Username"

Placeholder for the username field.

leadToken: string

Registration token returned by Beeper.

registrationRequired: true

Indicates that the user needs to create a Beeper account.

setupRequestID: string

Setup request ID to use when creating the account.

usernameSuggestions: optional array of string

Suggested usernames for the new account.

LoginRegisterResponse object { matrix, session }
matrix: object { accessToken, deviceID, homeserver, userID }

Account credentials for first-party app setup.

accessToken: string

Beeper account access token. Returned once for first-party app setup.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

session: object { e2ee, state, matrix, verification }

Current app sign-in and encrypted messaging setup state after sign-in.

e2ee: object { crossSigning, firstSyncDone, hasBackedUpRecoveryKey, 6 more }

Encrypted messaging setup status.

crossSigning: boolean

Whether this account can verify trusted devices.

firstSyncDone: boolean

Whether the first encrypted message sync is complete.

hasBackedUpRecoveryKey: boolean

Whether the user confirmed that they saved their recovery key.

initialized: boolean

Whether encrypted messaging setup has started.

keyBackup: boolean

Whether encrypted message backup is available.

secrets: object { masterKey, megolmBackupKey, recoveryKey, 2 more }

Encrypted messaging keys available on this device.

masterKey: boolean

Whether the account identity key is available.

megolmBackupKey: boolean

Whether the encrypted message backup key is available.

recoveryKey: boolean

Whether a recovery key is available.

selfSigningKey: boolean

Whether the device trust key is available.

userSigningKey: boolean

Whether the user trust key is available.

secretStorage: boolean

Whether secure key storage is available.

verified: boolean

Whether this device is trusted for encrypted messages.

recoveryKeyGeneratedAt: optional number

Unix timestamp for when the recovery key was created.

state: "needs-login" or "initializing" or "needs-cross-signing-setup" or 4 more

Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server.

One of the following:
"needs-login"
"initializing"
"needs-cross-signing-setup"
"needs-verification"
"needs-secrets"
"needs-first-sync"
"ready"
matrix: optional object { deviceID, homeserver, userID }

Signed-in account details. Omitted until sign-in is complete.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

verification: optional object { id, availableActions, direction, 8 more }

Trusted device verification progress.

id: string

Verification ID to pass in verification action paths.

availableActions: array of "accept" or "cancel" or "qr.confirmScanned" or 2 more

Verification actions that are valid for the current state.

One of the following:
"accept"
"cancel"
"qr.confirmScanned"
"sas.start"
"sas.confirm"
direction: "incoming" or "outgoing"

Whether this device started or received the verification.

One of the following:
"incoming"
"outgoing"
methods: array of "qr" or "sas"

Verification methods supported for this transaction.

One of the following:
"qr"
"sas"
purpose: "login" or "device"

Why this verification exists.

One of the following:
"login"
"device"
state: "requested" or "ready" or "sas_ready" or 4 more

Current trusted-device verification state.

One of the following:
"requested"
"ready"
"sas_ready"
"qr_scanned"
"done"
"cancelled"
"error"
error: optional object { code, reason }

Verification error details, if verification stopped.

code: string

Verification error code.

reason: string

User-facing verification error message.

otherDevice: optional object { id, name }

Other device participating in verification.

id: string

Other device ID.

name: optional string

Other device display name, if known.

otherUserID: optional string

Other Beeper user participating in verification.

qr: optional object { data }

QR verification data.

data: string

QR code payload to display for verification.

sas: optional object { emojis, decimals }

Emoji or number comparison data for verification.

emojis: string

Emoji sequence to compare on both devices.

decimals: optional string

Number sequence to compare on both devices.

LoginVerification

LoginVerificationRecovery Key

First-party sign-in and encrypted messaging setup for Beeper Desktop and Beeper Server.

Verify with recovery key
POST/v1/app/setup/verification/recovery-key
ModelsExpand Collapse
RecoveryKeyVerifyResponse object { session }
session: object { e2ee, state, matrix, verification }

Current app sign-in and encrypted messaging setup state.

e2ee: object { crossSigning, firstSyncDone, hasBackedUpRecoveryKey, 6 more }

Encrypted messaging setup status.

crossSigning: boolean

Whether this account can verify trusted devices.

firstSyncDone: boolean

Whether the first encrypted message sync is complete.

hasBackedUpRecoveryKey: boolean

Whether the user confirmed that they saved their recovery key.

initialized: boolean

Whether encrypted messaging setup has started.

keyBackup: boolean

Whether encrypted message backup is available.

secrets: object { masterKey, megolmBackupKey, recoveryKey, 2 more }

Encrypted messaging keys available on this device.

masterKey: boolean

Whether the account identity key is available.

megolmBackupKey: boolean

Whether the encrypted message backup key is available.

recoveryKey: boolean

Whether a recovery key is available.

selfSigningKey: boolean

Whether the device trust key is available.

userSigningKey: boolean

Whether the user trust key is available.

secretStorage: boolean

Whether secure key storage is available.

verified: boolean

Whether this device is trusted for encrypted messages.

recoveryKeyGeneratedAt: optional number

Unix timestamp for when the recovery key was created.

state: "needs-login" or "initializing" or "needs-cross-signing-setup" or 4 more

Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server.

One of the following:
"needs-login"
"initializing"
"needs-cross-signing-setup"
"needs-verification"
"needs-secrets"
"needs-first-sync"
"ready"
matrix: optional object { deviceID, homeserver, userID }

Signed-in account details. Omitted until sign-in is complete.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

verification: optional object { id, availableActions, direction, 8 more }

Trusted device verification progress.

id: string

Verification ID to pass in verification action paths.

availableActions: array of "accept" or "cancel" or "qr.confirmScanned" or 2 more

Verification actions that are valid for the current state.

One of the following:
"accept"
"cancel"
"qr.confirmScanned"
"sas.start"
"sas.confirm"
direction: "incoming" or "outgoing"

Whether this device started or received the verification.

One of the following:
"incoming"
"outgoing"
methods: array of "qr" or "sas"

Verification methods supported for this transaction.

One of the following:
"qr"
"sas"
purpose: "login" or "device"

Why this verification exists.

One of the following:
"login"
"device"
state: "requested" or "ready" or "sas_ready" or 4 more

Current trusted-device verification state.

One of the following:
"requested"
"ready"
"sas_ready"
"qr_scanned"
"done"
"cancelled"
"error"
error: optional object { code, reason }

Verification error details, if verification stopped.

code: string

Verification error code.

reason: string

User-facing verification error message.

otherDevice: optional object { id, name }

Other device participating in verification.

id: string

Other device ID.

name: optional string

Other device display name, if known.

otherUserID: optional string

Other Beeper user participating in verification.

qr: optional object { data }

QR verification data.

data: string

QR code payload to display for verification.

sas: optional object { emojis, decimals }

Emoji or number comparison data for verification.

emojis: string

Emoji sequence to compare on both devices.

decimals: optional string

Number sequence to compare on both devices.

LoginVerificationRecovery KeyReset

First-party sign-in and encrypted messaging setup for Beeper Desktop and Beeper Server.

Create new recovery key
POST/v1/app/setup/verification/recovery-key/reset
Confirm new recovery key
POST/v1/app/setup/verification/recovery-key/reset/confirm
ModelsExpand Collapse
ResetCreateResponse object { recoveryKey, session }
recoveryKey: string

New recovery key. Show it once and ask the user to save it.

session: object { e2ee, state, matrix, verification }

Current app sign-in and encrypted messaging setup state after creating the new recovery key.

e2ee: object { crossSigning, firstSyncDone, hasBackedUpRecoveryKey, 6 more }

Encrypted messaging setup status.

crossSigning: boolean

Whether this account can verify trusted devices.

firstSyncDone: boolean

Whether the first encrypted message sync is complete.

hasBackedUpRecoveryKey: boolean

Whether the user confirmed that they saved their recovery key.

initialized: boolean

Whether encrypted messaging setup has started.

keyBackup: boolean

Whether encrypted message backup is available.

secrets: object { masterKey, megolmBackupKey, recoveryKey, 2 more }

Encrypted messaging keys available on this device.

masterKey: boolean

Whether the account identity key is available.

megolmBackupKey: boolean

Whether the encrypted message backup key is available.

recoveryKey: boolean

Whether a recovery key is available.

selfSigningKey: boolean

Whether the device trust key is available.

userSigningKey: boolean

Whether the user trust key is available.

secretStorage: boolean

Whether secure key storage is available.

verified: boolean

Whether this device is trusted for encrypted messages.

recoveryKeyGeneratedAt: optional number

Unix timestamp for when the recovery key was created.

state: "needs-login" or "initializing" or "needs-cross-signing-setup" or 4 more

Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server.

One of the following:
"needs-login"
"initializing"
"needs-cross-signing-setup"
"needs-verification"
"needs-secrets"
"needs-first-sync"
"ready"
matrix: optional object { deviceID, homeserver, userID }

Signed-in account details. Omitted until sign-in is complete.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

verification: optional object { id, availableActions, direction, 8 more }

Trusted device verification progress.

id: string

Verification ID to pass in verification action paths.

availableActions: array of "accept" or "cancel" or "qr.confirmScanned" or 2 more

Verification actions that are valid for the current state.

One of the following:
"accept"
"cancel"
"qr.confirmScanned"
"sas.start"
"sas.confirm"
direction: "incoming" or "outgoing"

Whether this device started or received the verification.

One of the following:
"incoming"
"outgoing"
methods: array of "qr" or "sas"

Verification methods supported for this transaction.

One of the following:
"qr"
"sas"
purpose: "login" or "device"

Why this verification exists.

One of the following:
"login"
"device"
state: "requested" or "ready" or "sas_ready" or 4 more

Current trusted-device verification state.

One of the following:
"requested"
"ready"
"sas_ready"
"qr_scanned"
"done"
"cancelled"
"error"
error: optional object { code, reason }

Verification error details, if verification stopped.

code: string

Verification error code.

reason: string

User-facing verification error message.

otherDevice: optional object { id, name }

Other device participating in verification.

id: string

Other device ID.

name: optional string

Other device display name, if known.

otherUserID: optional string

Other Beeper user participating in verification.

qr: optional object { data }

QR verification data.

data: string

QR code payload to display for verification.

sas: optional object { emojis, decimals }

Emoji or number comparison data for verification.

emojis: string

Emoji sequence to compare on both devices.

decimals: optional string

Number sequence to compare on both devices.

ResetConfirmResponse object { session }
session: object { e2ee, state, matrix, verification }

Current app sign-in and encrypted messaging setup state.

e2ee: object { crossSigning, firstSyncDone, hasBackedUpRecoveryKey, 6 more }

Encrypted messaging setup status.

crossSigning: boolean

Whether this account can verify trusted devices.

firstSyncDone: boolean

Whether the first encrypted message sync is complete.

hasBackedUpRecoveryKey: boolean

Whether the user confirmed that they saved their recovery key.

initialized: boolean

Whether encrypted messaging setup has started.

keyBackup: boolean

Whether encrypted message backup is available.

secrets: object { masterKey, megolmBackupKey, recoveryKey, 2 more }

Encrypted messaging keys available on this device.

masterKey: boolean

Whether the account identity key is available.

megolmBackupKey: boolean

Whether the encrypted message backup key is available.

recoveryKey: boolean

Whether a recovery key is available.

selfSigningKey: boolean

Whether the device trust key is available.

userSigningKey: boolean

Whether the user trust key is available.

secretStorage: boolean

Whether secure key storage is available.

verified: boolean

Whether this device is trusted for encrypted messages.

recoveryKeyGeneratedAt: optional number

Unix timestamp for when the recovery key was created.

state: "needs-login" or "initializing" or "needs-cross-signing-setup" or 4 more

Current sign-in and encrypted messaging setup state for Beeper Desktop or Beeper Server.

One of the following:
"needs-login"
"initializing"
"needs-cross-signing-setup"
"needs-verification"
"needs-secrets"
"needs-first-sync"
"ready"
matrix: optional object { deviceID, homeserver, userID }

Signed-in account details. Omitted until sign-in is complete.

deviceID: string

Current device ID.

homeserver: string

Beeper homeserver URL for this account.

userID: string

Signed-in Beeper user ID.

verification: optional object { id, availableActions, direction, 8 more }

Trusted device verification progress.

id: string

Verification ID to pass in verification action paths.

availableActions: array of "accept" or "cancel" or "qr.confirmScanned" or 2 more

Verification actions that are valid for the current state.

One of the following:
"accept"
"cancel"
"qr.confirmScanned"
"sas.start"
"sas.confirm"
direction: "incoming" or "outgoing"

Whether this device started or received the verification.

One of the following:
"incoming"
"outgoing"
methods: array of "qr" or "sas"

Verification methods supported for this transaction.

One of the following:
"qr"
"sas"
purpose: "login" or "device"

Why this verification exists.

One of the following:
"login"
"device"
state: "requested" or "ready" or "sas_ready" or 4 more

Current trusted-device verification state.

One of the following:
"requested"
"ready"
"sas_ready"
"qr_scanned"
"done"
"cancelled"
"error"
error: optional object { code, reason }

Verification error details, if verification stopped.

code: string

Verification error code.

reason: string

User-facing verification error message.

otherDevice: optional object { id, name }

Other device participating in verification.

id: string

Other device ID.

name: optional string

Other device display name, if known.

otherUserID: optional string

Other Beeper user participating in verification.

qr: optional object { data }

QR verification data.

data: string

QR code payload to display for verification.

sas: optional object { emojis, decimals }

Emoji or number comparison data for verification.

emojis: string

Emoji sequence to compare on both devices.

decimals: optional string

Number sequence to compare on both devices.