# Login ## Start Beeper app setup `$ beeper-desktop app:login start` **post** `/v1/app/setup/start` Start setting up Beeper Desktop or Beeper Server. The flow supports existing Beeper accounts and new account creation. ### Returns - `AppLoginStartResponse: 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. ### Example ```cli beeper-desktop app:login start \ --access-token 'My Access Token' ``` #### Response ```json { "setupRequestID": "setupRequestID", "signInMethods": [ "string" ] } ``` ## Send setup sign-in code `$ beeper-desktop app:login email` **post** `/v1/app/setup/email` Send a sign-in code to the user email address for app setup. ### Parameters - `--email: string` Email address to send the sign-in code to. - `--setup-request-id: string` Setup request ID returned by the start step. ### Example ```cli beeper-desktop app:login email \ --access-token 'My Access Token' \ --email dev@stainless.com \ --setup-request-id setupRequestID ``` ## Complete setup sign-in with code `$ beeper-desktop app:login response` **post** `/v1/app/setup/response` Finish setup sign-in with the code sent to the user email address. If the user needs a new account, the response includes account creation copy and username suggestions. ### Parameters - `--response: string` Sign-in code from the user email. - `--setup-request-id: string` Setup request ID returned by the start step. ### Returns - `AppLoginResponseResponse: object { matrix, session } or object { copy, leadToken, registrationRequired, 2 more }` - `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. - `"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. - `"accept"` - `"cancel"` - `"qr.confirmScanned"` - `"sas.start"` - `"sas.confirm"` - `direction: "incoming" or "outgoing"` Whether this device started or received the verification. - `"incoming"` - `"outgoing"` - `methods: array of "qr" or "sas"` Verification methods supported for this transaction. - `"qr"` - `"sas"` - `purpose: "login" or "device"` Why this verification exists. - `"login"` - `"device"` - `state: "requested" or "ready" or "sas_ready" or 4 more` Current trusted-device verification state. - `"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. - `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. ### Example ```cli beeper-desktop app:login response \ --access-token 'My Access Token' \ --response response \ --setup-request-id setupRequestID ``` #### Response ```json { "matrix": { "accessToken": "accessToken", "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` ## Create account for setup `$ beeper-desktop app:login register` **post** `/v1/app/setup/register` Create a Beeper account after the user chooses a username and accepts the Terms of Use. ### Parameters - `--accept-terms: true` Confirms that the user agreed to our [terms of use](https://www.beeper.com/terms-onboarding) and has read our [privacy policy](https://www.beeper.com/privacy). - `--lead-token: string` Registration token returned by Beeper. - `--setup-request-id: string` Setup request ID returned by the start step. - `--username: string` Username selected by the user. ### Returns - `AppLoginRegisterResponse: 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. - `"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. - `"accept"` - `"cancel"` - `"qr.confirmScanned"` - `"sas.start"` - `"sas.confirm"` - `direction: "incoming" or "outgoing"` Whether this device started or received the verification. - `"incoming"` - `"outgoing"` - `methods: array of "qr" or "sas"` Verification methods supported for this transaction. - `"qr"` - `"sas"` - `purpose: "login" or "device"` Why this verification exists. - `"login"` - `"device"` - `state: "requested" or "ready" or "sas_ready" or 4 more` Current trusted-device verification state. - `"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. ### Example ```cli beeper-desktop app:login register \ --access-token 'My Access Token' \ --accept-terms true \ --lead-token leadToken \ --setup-request-id setupRequestID \ --username x ``` #### Response ```json { "matrix": { "accessToken": "accessToken", "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` # Verification # Recovery Key ## Verify with recovery key `$ beeper-desktop app:login:verification:recovery-key verify` **post** `/v1/app/setup/verification/recovery-key` Unlock encrypted messages with the user recovery key. ### Parameters - `--recovery-key: string` Recovery key saved by the user. ### Returns - `AppLoginVerificationRecoveryKeyVerifyResponse: 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. - `"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. - `"accept"` - `"cancel"` - `"qr.confirmScanned"` - `"sas.start"` - `"sas.confirm"` - `direction: "incoming" or "outgoing"` Whether this device started or received the verification. - `"incoming"` - `"outgoing"` - `methods: array of "qr" or "sas"` Verification methods supported for this transaction. - `"qr"` - `"sas"` - `purpose: "login" or "device"` Why this verification exists. - `"login"` - `"device"` - `state: "requested" or "ready" or "sas_ready" or 4 more` Current trusted-device verification state. - `"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. ### Example ```cli beeper-desktop app:login:verification:recovery-key verify \ --access-token 'My Access Token' \ --recovery-key x ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` # Reset ## Create new recovery key `$ beeper-desktop app:login:verification:recovery-key:reset create` **post** `/v1/app/setup/verification/recovery-key/reset` Create a new recovery key when the user cannot use the existing one. ### Parameters - `--existing-recovery-key: optional string` Existing recovery key, if the user has it. ### Returns - `AppLoginVerificationRecoveryKeyResetNewResponse: 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. - `"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. - `"accept"` - `"cancel"` - `"qr.confirmScanned"` - `"sas.start"` - `"sas.confirm"` - `direction: "incoming" or "outgoing"` Whether this device started or received the verification. - `"incoming"` - `"outgoing"` - `methods: array of "qr" or "sas"` Verification methods supported for this transaction. - `"qr"` - `"sas"` - `purpose: "login" or "device"` Why this verification exists. - `"login"` - `"device"` - `state: "requested" or "ready" or "sas_ready" or 4 more` Current trusted-device verification state. - `"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. ### Example ```cli beeper-desktop app:login:verification:recovery-key:reset create \ --access-token 'My Access Token' ``` #### Response ```json { "recoveryKey": "recoveryKey", "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ``` ## Confirm new recovery key `$ beeper-desktop app:login:verification:recovery-key:reset confirm` **post** `/v1/app/setup/verification/recovery-key/reset/confirm` Confirm that the new recovery key should be used for this account. ### Parameters - `--recovery-key: string` New recovery key returned by the reset step. ### Returns - `AppLoginVerificationRecoveryKeyResetConfirmResponse: 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. - `"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. - `"accept"` - `"cancel"` - `"qr.confirmScanned"` - `"sas.start"` - `"sas.confirm"` - `direction: "incoming" or "outgoing"` Whether this device started or received the verification. - `"incoming"` - `"outgoing"` - `methods: array of "qr" or "sas"` Verification methods supported for this transaction. - `"qr"` - `"sas"` - `purpose: "login" or "device"` Why this verification exists. - `"login"` - `"device"` - `state: "requested" or "ready" or "sas_ready" or 4 more` Current trusted-device verification state. - `"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. ### Example ```cli beeper-desktop app:login:verification:recovery-key:reset confirm \ --access-token 'My Access Token' \ --recovery-key x ``` #### Response ```json { "session": { "e2ee": { "crossSigning": true, "firstSyncDone": true, "hasBackedUpRecoveryKey": true, "initialized": true, "keyBackup": true, "secrets": { "masterKey": true, "megolmBackupKey": true, "recoveryKey": true, "selfSigningKey": true, "userSigningKey": true }, "secretStorage": true, "verified": true, "recoveryKeyGeneratedAt": 0 }, "state": "needs-login", "matrix": { "deviceID": "deviceID", "homeserver": "homeserver", "userID": "userID" }, "verification": { "id": "id", "availableActions": [ "accept" ], "direction": "incoming", "methods": [ "qr" ], "purpose": "login", "state": "requested", "error": { "code": "code", "reason": "reason" }, "otherDevice": { "id": "id", "name": "name" }, "otherUserID": "otherUserID", "qr": { "data": "data" }, "sas": { "emojis": "emojis", "decimals": "decimals" } } } } ```