Skip to content
Download Beeper

Create account for setup

client.App.Setup.Register(ctx, body) (*AppSetupRegisterResponse, error)
POST/v1/app/setup/register

Create a Beeper account after the user chooses a username and accepts the Terms of Use.

ParametersExpand Collapse
body AppSetupRegisterParams
AcceptTerms param.Field[bool]

Confirms that the user agreed to our terms of use and has read our privacy policy.

const AppSetupRegisterParamsAcceptTermsTrue AppSetupRegisterParamsAcceptTerms = true
LeadToken param.Field[string]

Registration token returned by Beeper.

SetupRequestID param.Field[string]

Setup request ID returned by the start step.

Username param.Field[string]

Username selected by the user.

minLength1
ReturnsExpand Collapse
type AppSetupRegisterResponse struct{…}
Matrix AppSetupRegisterResponseMatrix

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 AppSetupRegisterResponseSession

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

E2EE AppSetupRegisterResponseSessionE2EE

Encrypted messaging setup status.

CrossSigning bool

Whether this account can verify trusted devices.

FirstSyncDone bool

Whether the first encrypted message sync is complete.

HasBackedUpRecoveryKey bool

Whether the user confirmed that they saved their recovery key.

Initialized bool

Whether encrypted messaging setup has started.

KeyBackup bool

Whether encrypted message backup is available.

Secrets AppSetupRegisterResponseSessionE2EESecrets

Encrypted messaging keys available on this device.

MasterKey bool

Whether the account identity key is available.

MegolmBackupKey bool

Whether the encrypted message backup key is available.

RecoveryKey bool

Whether a recovery key is available.

SelfSigningKey bool

Whether the device trust key is available.

UserSigningKey bool

Whether the user trust key is available.

SecretStorage bool

Whether secure key storage is available.

Verified bool

Whether this device is trusted for encrypted messages.

RecoveryKeyGeneratedAt float64Optional

Unix timestamp for when the recovery key was created.

State string

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

One of the following:
const AppSetupRegisterResponseSessionStateNeedsLogin AppSetupRegisterResponseSessionState = "needs-login"
const AppSetupRegisterResponseSessionStateInitializing AppSetupRegisterResponseSessionState = "initializing"
const AppSetupRegisterResponseSessionStateNeedsCrossSigningSetup AppSetupRegisterResponseSessionState = "needs-cross-signing-setup"
const AppSetupRegisterResponseSessionStateNeedsVerification AppSetupRegisterResponseSessionState = "needs-verification"
const AppSetupRegisterResponseSessionStateNeedsSecrets AppSetupRegisterResponseSessionState = "needs-secrets"
const AppSetupRegisterResponseSessionStateNeedsFirstSync AppSetupRegisterResponseSessionState = "needs-first-sync"
const AppSetupRegisterResponseSessionStateReady AppSetupRegisterResponseSessionState = "ready"
Matrix AppSetupRegisterResponseSessionMatrixOptional

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 AppSetupRegisterResponseSessionVerificationOptional

Trusted device verification progress.

ID string

Verification ID to pass in verification action paths.

AvailableActions []string

Verification actions that are valid for the current state.

One of the following:
const AppSetupRegisterResponseSessionVerificationAvailableActionAccept AppSetupRegisterResponseSessionVerificationAvailableAction = "accept"
const AppSetupRegisterResponseSessionVerificationAvailableActionCancel AppSetupRegisterResponseSessionVerificationAvailableAction = "cancel"
const AppSetupRegisterResponseSessionVerificationAvailableActionQRConfirmScanned AppSetupRegisterResponseSessionVerificationAvailableAction = "qr.confirmScanned"
const AppSetupRegisterResponseSessionVerificationAvailableActionSASStart AppSetupRegisterResponseSessionVerificationAvailableAction = "sas.start"
const AppSetupRegisterResponseSessionVerificationAvailableActionSASConfirm AppSetupRegisterResponseSessionVerificationAvailableAction = "sas.confirm"
Direction string

Whether this device started or received the verification.

One of the following:
const AppSetupRegisterResponseSessionVerificationDirectionIncoming AppSetupRegisterResponseSessionVerificationDirection = "incoming"
const AppSetupRegisterResponseSessionVerificationDirectionOutgoing AppSetupRegisterResponseSessionVerificationDirection = "outgoing"
Methods []string

Verification methods supported for this transaction.

One of the following:
const AppSetupRegisterResponseSessionVerificationMethodQR AppSetupRegisterResponseSessionVerificationMethod = "qr"
const AppSetupRegisterResponseSessionVerificationMethodSAS AppSetupRegisterResponseSessionVerificationMethod = "sas"
Purpose string

Why this verification exists.

One of the following:
const AppSetupRegisterResponseSessionVerificationPurposeLogin AppSetupRegisterResponseSessionVerificationPurpose = "login"
const AppSetupRegisterResponseSessionVerificationPurposeDevice AppSetupRegisterResponseSessionVerificationPurpose = "device"
State string

Current trusted-device verification state.

One of the following:
const AppSetupRegisterResponseSessionVerificationStateRequested AppSetupRegisterResponseSessionVerificationState = "requested"
const AppSetupRegisterResponseSessionVerificationStateReady AppSetupRegisterResponseSessionVerificationState = "ready"
const AppSetupRegisterResponseSessionVerificationStateSASReady AppSetupRegisterResponseSessionVerificationState = "sas_ready"
const AppSetupRegisterResponseSessionVerificationStateQRScanned AppSetupRegisterResponseSessionVerificationState = "qr_scanned"
const AppSetupRegisterResponseSessionVerificationStateDone AppSetupRegisterResponseSessionVerificationState = "done"
const AppSetupRegisterResponseSessionVerificationStateCancelled AppSetupRegisterResponseSessionVerificationState = "cancelled"
const AppSetupRegisterResponseSessionVerificationStateError AppSetupRegisterResponseSessionVerificationState = "error"
Error AppSetupRegisterResponseSessionVerificationErrorOptional

Verification error details, if verification stopped.

Code string

Verification error code.

Reason string

User-facing verification error message.

OtherDevice AppSetupRegisterResponseSessionVerificationOtherDeviceOptional

Other device participating in verification.

ID string

Other device ID.

Name stringOptional

Other device display name, if known.

OtherUserID stringOptional

Other Beeper user participating in verification.

QR AppSetupRegisterResponseSessionVerificationQROptional

QR verification data.

Data string

QR code payload to display for verification.

SAS AppSetupRegisterResponseSessionVerificationSASOptional

Emoji or number comparison data for verification.

Emojis string

Emoji sequence to compare on both devices.

Decimals stringOptional

Number sequence to compare on both devices.

Create account for setup

package main

import (
  "context"
  "fmt"

  "github.com/beeper/desktop-api-go"
  "github.com/beeper/desktop-api-go/option"
)

func main() {
  client := beeperdesktopapi.NewClient(
    option.WithAccessToken("My Access Token"),
  )
  response, err := client.App.Setup.Register(context.TODO(), beeperdesktopapi.AppSetupRegisterParams{
    AcceptTerms: true,
    LeadToken: "leadToken",
    SetupRequestID: "setupRequestID",
    Username: "x",
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.Matrix)
}
{
  "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"
      }
    }
  }
}
Returns Examples
{
  "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"
      }
    }
  }
}