---
updatedAt: 2026-08-07T08:07:34.000Z
agentTools:
  projectIndex: https://docs.verihubs.com/llms.txt
---

# Sandbox - Verify OTP V2

SMS OTP version change is by introducing a new API version release.<br>

Version changes usually need to be applied immediately to the latest version, in order to get a better API usage experience than the previous version.<br>

The benefits you get if you use a newer version are as follows.
- Decreasing processing time in API Request and Response
- Improve feature in SMS: Blocking Request, Spam Check, Sequential Phone Number, and Blocked Numbers
- Increase RPS in SMS (before 30rps to 50rps)
- Better developer environment to support future developments
- Improve logging and monitoring on our side
- Improved dependencies and improved service stability<br>

This method helps you to verify one-time password to destination number<br>

The following table describes the msisdn option to be used as an input<br>

 Msisdn          | Description          | Response |
---------------- |:---------------------|:-------------------------- |
6282123060007       | Verify OTP Success           | 201 "OTP has been verified" |
6282123060008        |   Invalid OTP           | 404 "OTP Not Found" |
6282123060009        | Exceeded time limit           |  422 "OTP cannot be verified because it has already reached the time limit" |
6282123060010        | Invalid OTP            |  400 "Invalid OTP" |


# OpenAPI definition

```json
{
  "openapi": "3.0.2",
  "servers": [
    {
      "url": "https://api.verihubs.com/"
    }
  ],
  "info": {
    "title": "Sandbox - SMS API Documentation",
    "version": "2.0.0"
  },
  "tags": [
    {
      "name": "Sandbox - SMS OTP",
      "description": "Get information about SMS OTP API"
    }
  ],
  "paths": {
    "/v2/otp/verify/sandbox": {
      "post": {
        "tags": [
          "Sandbox - SMS OTP"
        ],
        "summary": "Sandbox - Verify OTP V2",
        "description": "SMS OTP version change is by introducing a new API version release.<br>\n\nVersion changes usually need to be applied immediately to the latest version, in order to get a better API usage experience than the previous version.<br>\n\nThe benefits you get if you use a newer version are as follows.\n- Decreasing processing time in API Request and Response\n- Improve feature in SMS: Blocking Request, Spam Check, Sequential Phone Number, and Blocked Numbers\n- Increase RPS in SMS (before 30rps to 50rps)\n- Better developer environment to support future developments\n- Improve logging and monitoring on our side\n- Improved dependencies and improved service stability<br>\n\nThis method helps you to verify one-time password to destination number<br>\n\nThe following table describes the msisdn option to be used as an input<br>\n\n Msisdn          | Description          | Response |\n---------------- |:---------------------|:-------------------------- |\n6282123060007       | Verify OTP Success           | 201 \"OTP has been verified\" |\n6282123060008        |   Invalid OTP           | 404 \"OTP Not Found\" |\n6282123060009        | Exceeded time limit           |  422 \"OTP cannot be verified because it has already reached the time limit\" |\n6282123060010        | Invalid OTP            |  400 \"Invalid OTP\" |\n",
        "operationId": "sandbox_verify_otp_post_v2",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "App-ID",
              "type": "string"
            },
            "name": "app-id",
            "in": "header"
          },
          {
            "required": true,
            "schema": {
              "title": "API-Key",
              "type": "string"
            },
            "name": "api-key",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyOtp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseVerifyOTP"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend401"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseVerify404"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseVerify422"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend500"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "VerifyOtp": {
        "title": "VerifyOtp",
        "required": [
          "msisdn",
          "otp"
        ],
        "type": "object",
        "properties": {
          "msisdn": {
            "description": "This value is destination number. You need to include international prefix number.",
            "type": "string",
            "example": "6282123060001"
          },
          "otp": {
            "description": "Code received by destination number.",
            "type": "string"
          },
          "challenge": {
            "description": "This value is a category. You can verify OTP based on the same challenge.",
            "type": "string",
            "example": "update_account"
          }
        }
      },
      "ResponseVerifyOTP": {
        "title": "ResponseVerifyOTP",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "OTP has been verified"
          }
        }
      },
      "ResponseSend401": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "Authorization failed"
          }
        }
      },
      "ResponseVerify404": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "OTP not found"
          }
        }
      },
      "ResponseVerify422": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "OTP cannot be verified because it has already reached the time limit."
          }
        }
      },
      "ResponseSend500": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "Internal Server Error"
          }
        }
      }
    }
  }
}
```