## Complete setup sign-in with code

`app.setup.response(SetupResponseParams**kwargs)  -> SetupResponseResponse`

**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: str`

  Sign-in code from the user email.

- `setup_request_id: str`

  Setup request ID returned by the start step.

### Returns

- `SetupResponseResponse`

  - `class Success: …`

    - `matrix: SuccessMatrix`

      Account credentials for first-party app setup.

      - `access_token: str`

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

      - `device_id: str`

        Current device ID.

      - `homeserver: str`

        Beeper homeserver URL for this account.

      - `user_id: str`

        Signed-in Beeper user ID.

    - `session: SuccessSession`

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

      - `e2ee: SuccessSessionE2EE`

        Encrypted messaging setup status.

        - `cross_signing: bool`

          Whether this account can verify trusted devices.

        - `first_sync_done: bool`

          Whether the first encrypted message sync is complete.

        - `has_backed_up_recovery_key: bool`

          Whether the user confirmed that they saved their recovery key.

        - `initialized: bool`

          Whether encrypted messaging setup has started.

        - `key_backup: bool`

          Whether encrypted message backup is available.

        - `secrets: SuccessSessionE2EESecrets`

          Encrypted messaging keys available on this device.

          - `master_key: bool`

            Whether the account identity key is available.

          - `megolm_backup_key: bool`

            Whether the encrypted message backup key is available.

          - `recovery_key: bool`

            Whether a recovery key is available.

          - `self_signing_key: bool`

            Whether the device trust key is available.

          - `user_signing_key: bool`

            Whether the user trust key is available.

        - `secret_storage: bool`

          Whether secure key storage is available.

        - `verified: bool`

          Whether this device is trusted for encrypted messages.

        - `recovery_key_generated_at: Optional[float]`

          Unix timestamp for when the recovery key was created.

      - `state: Literal["needs-login", "initializing", "needs-cross-signing-setup", 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[SuccessSessionMatrix]`

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

        - `device_id: str`

          Current device ID.

        - `homeserver: str`

          Beeper homeserver URL for this account.

        - `user_id: str`

          Signed-in Beeper user ID.

      - `verification: Optional[SuccessSessionVerification]`

        Trusted device verification progress.

        - `id: str`

          Verification ID to pass in verification action paths.

        - `available_actions: List[Literal["accept", "cancel", "qr.confirmScanned", 2 more]]`

          Verification actions that are valid for the current state.

          - `"accept"`

          - `"cancel"`

          - `"qr.confirmScanned"`

          - `"sas.start"`

          - `"sas.confirm"`

        - `direction: Literal["incoming", "outgoing"]`

          Whether this device started or received the verification.

          - `"incoming"`

          - `"outgoing"`

        - `methods: List[Literal["qr", "sas"]]`

          Verification methods supported for this transaction.

          - `"qr"`

          - `"sas"`

        - `purpose: Literal["login", "device"]`

          Why this verification exists.

          - `"login"`

          - `"device"`

        - `state: Literal["requested", "ready", "sas_ready", 4 more]`

          Current trusted-device verification state.

          - `"requested"`

          - `"ready"`

          - `"sas_ready"`

          - `"qr_scanned"`

          - `"done"`

          - `"cancelled"`

          - `"error"`

        - `error: Optional[SuccessSessionVerificationError]`

          Verification error details, if verification stopped.

          - `code: str`

            Verification error code.

          - `reason: str`

            User-facing verification error message.

        - `other_device: Optional[SuccessSessionVerificationOtherDevice]`

          Other device participating in verification.

          - `id: str`

            Other device ID.

          - `name: Optional[str]`

            Other device display name, if known.

        - `other_user_id: Optional[str]`

          Other Beeper user participating in verification.

        - `qr: Optional[SuccessSessionVerificationQR]`

          QR verification data.

          - `data: str`

            QR code payload to display for verification.

        - `sas: Optional[SuccessSessionVerificationSAS]`

          Emoji or number comparison data for verification.

          - `emojis: str`

            Emoji sequence to compare on both devices.

          - `decimals: Optional[str]`

            Number sequence to compare on both devices.

  - `class RegistrationRequired: …`

    - `copy: RegistrationRequiredCopy`

      Copy to display during account creation.

      - `submit: Literal["Continue"]`

        Submit button label.

        - `"Continue"`

      - `terms: Literal["By continuing, you agree to the Terms of Use and acknowledge the Privacy Policy."]`

        Terms and privacy notice to show before account creation.

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

      - `title: Literal["Choose your username"]`

        Title for the username step.

        - `"Choose your username"`

      - `username_placeholder: Literal["Username"]`

        Placeholder for the username field.

        - `"Username"`

    - `lead_token: str`

      Registration token returned by Beeper.

    - `registration_required: Literal[true]`

      Indicates that the user needs to create a Beeper account.

      - `true`

    - `setup_request_id: str`

      Setup request ID to use when creating the account.

    - `username_suggestions: Optional[List[str]]`

      Suggested usernames for the new account.

### Example

```python
from beeper_desktop_api import BeeperDesktop

client = BeeperDesktop()
response = client.app.setup.response(
    response="response",
    setup_request_id="setupRequestID",
)
print(response)
```

#### 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"
      }
    }
  }
}
```
