---
descriptions:
  enroll_factor:
    type: |
      The type of factor you wish to enroll.
        - `totp`
        - `sms`
    totp_issuer: >-
      An identifier for the organization issuing the challenge. Should be the
      name of your application or company. Required when type is `totp`.
    totp_user: >-
      An identifier for the user. Used by authenticator apps to label
      connections. Required when type is `totp`.
    phone_number: >-
      A valid phone number for an SMS-enabled device. Required when type is
      `sms`.
reference:
  curl:
    - key: enroll_factor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: /auth/factors/enroll
      type: POST
      parameters:
        - key: type
          type: |
            "totp" | "sms"
          description: (enroll_factor.type)
        - key: totp_issuer
          type: string
          description: (enroll_factor.totp_issuer)
        - key: totp_user
          type: string
          description: (enroll_factor.totp_user)
        - key: phone_number
          type: string
          description: (enroll_factor.phone_number)
      returns:
        - (authentication_factor)
  dotnet:
    - key: EnrollFactor
      id: enroll_factor
      url: /reference/mfa/Enroll-factor
      title: mfaService.EnrollFactor()
      parameters:
        - key: options
          type: EnrollFactorOptions
          description: >
            Create an instance of `EnrollTotpFactorOptions` or
            `EnrollSmsFactorOptions` to enroll an Authentication Factor with
            TOTP or SMS respectively.


            ---


            `EnrollTotpFactorOptions` accepts two parameters:

            - `issuer` – an identifier for the organization issuing the
            challenge. Should be the name of your application or company.

            - `user` – an identifier for the user. Used by authenticator apps to
            label connections.


            ---


            `EnrollSmsFactorOptions` accepts one parameter – a valid phone
            number for an SMS-enabled device.
        - (cancellationToken)
      returns:
        - key: Task<Factor>
          description: (authentication_factor.self)
  ruby:
    - key: enroll_factor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: MFA.enroll_factor()
      parameters:
        - key: type
          type: |
            "totp" | "sms"
          description: (enroll_factor.type)
        - key: totp_issuer
          type: String
          optional: true
          description: (enroll_factor.totp_issuer)
        - key: totp_user
          type: String
          optional: true
          description: (enroll_factor.totp_user)
        - key: phone_number
          type: String
          optional: true
          description: (enroll_factor.phone_number)
      returns:
        - (Factor)
  python:
    - key: enroll_factor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: mfa.enroll_factor()
      parameters:
        - key: type
          type: |
            "totp" | "sms"
          description: (enroll_factor.type)
        - key: totp_issuer
          type: str
          optional: true
          description: (enroll_factor.totp_issuer)
        - key: totp_user
          type: str
          optional: true
          description: (enroll_factor.totp_user)
        - key: phone_number
          type: str
          optional: true
          description: (enroll_factor.phone_number)
      returns:
        - (AuthenticationFactor)
  js:
    - key: enrollFactor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: mfa.enrollFactor()
      parameters:
        - key: options
          type: object
          unwrap: true
          properties:
            - key: type
              type: |
                "totp" | "sms"
              description: (enroll_factor.type)
            - key: issuer
              type: string
              description: (enroll_factor.totp_issuer)
            - key: user
              type: string
              description: (enroll_factor.totp_user)
            - key: phoneNumber
              type: string
              description: (enroll_factor.phone_number)
      returns:
        - (Factor)
  php:
    - key: enrollFactor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: $mfa->enrollFactor()
      parameters:
        - key: type
          type: |
            "totp"|"sms"
          description: (enroll_factor.type)
        - key: totpIssuer
          type: string
          optional: true
          description: (enroll_factor.totp_issuer)
        - key: totpUser
          type: string
          optional: true
          description: (enroll_factor.totp_user)
        - key: phoneNumber
          type: string
          optional: true
          description: (enroll_factor.phone_number)
      returns:
        - (AuthenticationFactor)
  java:
    - key: enrollFactor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: mfa.enrollFactor()
      parameters:
        - key: options
          type: EnrollFactorOptions
          expanded: true
          properties:
            - key: type
              type: |
                "totp" | "sms"
              description: (enroll_factor.type)
            - key: issuer
              type: String
              optional: true
              description: (enroll_factor.totp_issuer)
            - key: user
              type: String
              optional: true
              description: (enroll_factor.totp_user)
            - key: phoneNumber
              type: String
              optional: true
              description: (enroll_factor.phone_number)
            - key: builder()
              type: EnrollFactorOptionsBuilder
              description: (java.builder)
      returns:
        - (Factor)
  go:
    - key: EnrollFactor
      id: enroll_factor
      url: /reference/mfa/enroll-factor
      title: mfa.EnrollFactor()
      parameters:
        - (ctx)
        - key: opts
          type: mfa.EnrollFactorOpts
          expanded: true
          properties:
            - key: Type
              type: mfa.FactorType
              description: (enroll_factor.type)
            - key: TOTPIssuer
              type: string
              description: (enroll_factor.totp_issuer)
            - key: TOTPUser
              type: string
              description: (enroll_factor.totp_user)
            - key: PhoneNumber
              type: string
              description: (enroll_factor.phone_number)
      returns:
        - key: enroll
          type: mfa.Factor
          description: (authentication_factor.self)
        - (err)
originalPath: .tmp-workos-clone/packages/docs/content/reference/mfa/factor/enroll.mdx
---

## Enroll Factor

Enrolls an Authentication Factor to be used as an additional factor of authentication. The returned ID should be used to create an authentication Challenge.

<CodeBlock referenceId="enroll_factor">
  <CodeBlockTab title="Request" file="enroll-factor-request" />
  <CodeBlockTab title="Response" file="enroll-factor-response" />
</CodeBlock>
