> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Login with MFA

> Authenticate with email and password (MFA flow). Returns an MFA challenge if MFA is enabled, or the user if not.



## OpenAPI

````yaml https://api.voxo.co/v2/docs/openapi.json post /v2/authentication/mfa
openapi: 3.1.0
info:
  title: VOXO API
  description: VOXO Communication Platform API
  version: 2.0.0
servers:
  - url: https://api.voxo.co
security:
  - bearerAuth: []
paths:
  /v2/authentication/mfa:
    post:
      tags:
        - Authentication
      summary: Login with MFA
      description: >-
        Authenticate with email and password (MFA flow). Returns an MFA
        challenge if MFA is enabled, or the user if not.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$
                  description: User email address
                password:
                  type: string
                  minLength: 3
                  description: User password (min 3 characters)
              required:
                - email
                - password
              additionalProperties: false
      responses:
        '200':
          description: User or MFA challenge
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      user:
                        type: object
                        properties:
                          id:
                            type: number
                            description: User ID
                          email:
                            type: string
                            description: User email
                          userRole:
                            type: number
                            description: User role ID
                          avatarPath:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Avatar image URL
                          avatarThumbnailPath:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Avatar thumbnail URL
                          tenantId:
                            type: number
                            description: Tenant ID
                          partnerId:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Partner ID
                          timezone:
                            type: string
                            description: User timezone
                          coverPhoto:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Cover photo URL
                          darkMode:
                            type: number
                            description: Dark mode enabled (0/1)
                          mobileDarkMode:
                            type: number
                            description: Mobile dark mode enabled (0/1)
                          otp:
                            type: string
                            description: One-time password
                          mfaEnabled:
                            type: number
                            description: MFA enabled (0/1)
                          mfaMode:
                            type: string
                            description: MFA mode (email, sms, app)
                          mfaPhoneNumber:
                            type: string
                            description: MFA phone number
                          mfaSmsVerified:
                            type: number
                            description: MFA SMS verified (0/1)
                          mfaAppSecret:
                            type: string
                            description: MFA app secret
                          mfaAppVerified:
                            type: number
                            description: MFA app verified (0/1)
                          mfaEmailVerified:
                            type: number
                            description: MFA email verified (0/1)
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: User title
                          enableCallNotifications:
                            type: number
                            description: Call notifications enabled (0/1)
                          enableChatNotifications:
                            type: number
                            description: Chat notifications enabled (0/1)
                          enableAllNewMessageNotifications:
                            type: number
                            description: All new message notifications (0/1)
                          enableDirectMessageNotifications:
                            type: number
                            description: Direct message notifications (0/1)
                          enableTextNotifications:
                            type: number
                            description: Text notifications enabled (0/1)
                          enablePostCallNotifications:
                            type: number
                            description: Post-call notifications (0/1)
                          enableMobileTextNotifications:
                            type: number
                            description: Mobile text notifications (0/1)
                          enableMobileCallNotifications:
                            type: number
                            description: Mobile call notifications (0/1)
                          enableMobileChatNotifications:
                            type: number
                            description: Mobile chat notifications (0/1)
                          enableBusyLights:
                            type: number
                            description: Busy lights enabled (0/1)
                          isGoogleCalendarAuthorized:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Google Calendar authorized (0/1)
                          isOutlookCalendarAuthorized:
                            type: number
                            description: Outlook Calendar authorized (0/1)
                          extId:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Extension ID
                          extName:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Extension name
                          extNum:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Extension number
                          callerIdNumber:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Caller ID number
                          dnd:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Do not disturb
                          outboundRecord:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Outbound recording setting
                          peerName:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: SIP peer name
                          peerSecret:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: SIP peer secret
                          enableMeetings:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Meetings enabled
                          enableTranscription:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Transcription enabled
                          branchId:
                            anyOf:
                              - type: number
                              - type: 'null'
                            description: Branch ID
                          branchName:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Branch name
                          permissions:
                            type: array
                            items:
                              type: string
                            description: User permission names
                        required:
                          - id
                          - email
                          - userRole
                          - avatarPath
                          - avatarThumbnailPath
                          - tenantId
                          - partnerId
                          - timezone
                          - coverPhoto
                          - darkMode
                          - mobileDarkMode
                          - otp
                          - mfaEnabled
                          - mfaMode
                          - mfaPhoneNumber
                          - mfaSmsVerified
                          - mfaAppSecret
                          - mfaAppVerified
                          - mfaEmailVerified
                          - title
                          - enableCallNotifications
                          - enableChatNotifications
                          - enableAllNewMessageNotifications
                          - enableDirectMessageNotifications
                          - enableTextNotifications
                          - enablePostCallNotifications
                          - enableMobileTextNotifications
                          - enableMobileCallNotifications
                          - enableMobileChatNotifications
                          - enableBusyLights
                          - isGoogleCalendarAuthorized
                          - isOutlookCalendarAuthorized
                          - extId
                          - extName
                          - extNum
                          - callerIdNumber
                          - dnd
                          - outboundRecord
                          - peerName
                          - peerSecret
                          - enableMeetings
                          - enableTranscription
                          - branchId
                          - branchName
                          - permissions
                        additionalProperties: false
                        description: Authenticated user
                      accessToken:
                        type: string
                        description: JWT access token
                    required:
                      - user
                      - accessToken
                    additionalProperties: false
                  - type: object
                    properties:
                      mode:
                        description: MFA method
                        type: string
                        enum:
                          - email
                          - sms
                          - app
                      mfaVerifyToken:
                        description: Token to submit with MFA code
                        type: string
                      mfaSetupToken:
                        description: Token for MFA setup flow
                        type: string
                      phoneNumber:
                        description: Masked phone number for SMS MFA
                        type: string
                      message:
                        type: string
                        description: User-facing message
                    required:
                      - message
                    additionalProperties: false
        '400':
          description: Validation error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                  - validationErrors
                additionalProperties: false
        '401':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````