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, 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.

Note that you cannot currently use the verification_id to send an OTP from OneLogin Protect, as it expects a Push Authentication. See Verify a Factor Protect & Voice for more information.

To verify an authentication factor without the verification_id, the HTTPS method is POST.

Request Parameter



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



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 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?

Found a problem or a bug? Submit a support ticket.

Looking for walkthroughs or how-to guides on OneLogin's user and admin features? Check out the documentation in our Knowledge Base.

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