See api-docs Menu

Verify an Authentication Factor

Use this API to authenticate a one-time password (OTP) code provided by a multifactor authentication (MFA) device.

Use this endpoint to verify an OTP code provided by SMS, Email, OneLogin Protect or Authenticator.

Resource URL


Header Parameter




Set to bearer:<access_token>.

Set <access_token> to the access token you generated using the Generate Token API.

The access token must have been generated using an API credential pair created using the scope required to call this API. This API can be called using the Manage All scope.

Resource Parameters




Set to the id of the user.

If you don’t know the user’s id, use the Get Users API call to return all users and their id values.




The verification_id is returned on activation of the factor or you can get the device_id using the Activate Factor API call. For factors that don’t require a trigger event such as OneLogin Protect OTP or Authenticator OTP reference Activate Factor API call.

Request Parameter



OTP code provided by the device or SMS message sent to user.

When a device like OneLogin Protect that supports Push has been used you do not need to provide the otp_token and can keep polling this endpoint until the state_token expires.



ID of the specified device which has been registerd for the given user. Available on Get Devices API call.

Request Body

For OneLogin Email and OneLogin SMS:

  "otp": "123456"

For OneLogin Protect OTP and Authenticator OTP:

  "otp": "123456",
  "device_id": "98765"

Sample Response

    "status": {
        "type": "success",
        "code": 200,
        "message": "Success",
        "error": false
    "statusCode": 401,
    "name": "InvalidCredentials",
    "message": "Please provide valid credentials"
    "statusCode": 403,
    "name": "ForbiddenAction",
    "message": "You are not authorised to perform this action or access the resource"

Postman Collection

Replace sample variables indicated by {{ }} with your actual values.

Download for the MFA API

Sample Code


Replace sample values indicated by < > with your actual values.

curl 'https://<subdomain>/api/2/mfa/users/<user_id>/verifications/<verification_id>' \
-X PUT \
-H "Authorization: bearer: <access_token>" \
-H "Content-Type: application/json" \
-d '{

Have a Question?

Have a how-to question? Seeing a weird error? Ask us about it on StackOverflow.

Found a bug? Submit a support ticket.

Have a product idea or request? Share it with us in our Ideas Portal.