Skip to main content
Endpoint: https://BASE_URL/api/sms/otp/generate Request Type: POST Sample Response:
OptionsRequiredDescription
api*keyyes_string*
Your API key (It can be found on your Termii dashboard).
pin*typeyesEnum: "NUMERIC" "ALPHANUMERIC"
Type of PIN code that will be generated and sent as part of the OTP message. You can set PIN type to numeric or alphanumeric
phone_numberyes_string*
Represents the destination phone number.Phone number must be in the international format (Example: 23490126727)
pin*attemptsyes_integer*
Example: 3
Represents the number of times the PIN can be attempted before expiration. It has a minimum of one attempt
pin*time_to_liveyes_integer*
Example: 1
Represents how long the PIN is valid before expiration. The time is in minutes. The minimum time value is 0 and the maximum time value is 60
pin*lengthyes_integer*
Example: 4
The length of the PIN code. It has a minimum of 4 and maximum of 8.
{
"api_key": "Your API Key",
"pin_type": "NUMERIC",
"phone_number": "2348109477743",
"pin_attempts": 3,
"pin_time_to_live": 0,
"pin_length": 4
}
var data = {
      "api_key": "Your API Key",
      "pin_type": "NUMERIC",
      "phone_number": "2348109477743",
      "pin_attempts": 3,
      "pin_time_to_live": 0,
      "pin_length": 4
      };

var data = JSON.stringify(data);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});

xhr.open("POST", "https://BASE_URL/api/sms/otp/generate");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");

xhr.send(data);

var request = require('request');
var data = {
"api_key": "Your API Key",
"pin_type": "NUMERIC",
"phone_number": "2348109477743",
"pin_attempts": 3,
"pin_time_to_live": 0,
"pin_length": 4
};
var options = {
'method': 'POST',
'url': 'https://BASE_URL/api/sms/otp/generate',
'headers': {
'Content-Type': ['application/json', 'application/json']
},
body: JSON.stringify(data)

};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});

import requests
url = "https://BASE_URL/api/sms/otp/generate"
payload = {
       "api_key": "Your API Key",
        "pin_type": "NUMERIC",
        "phone_number": "2348109477743",
        "pin_attempts": 3,
        "pin_time_to_live": 0,
        "pin_length": 4
   }
headers = {
'Content-Type': 'application/json',
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text)
RestClient restClient = new RestClient("https://BASE_URL/api/sms/otp/generate");

//Creating Json object
JObject objectBody = new JObject();
objectBody.Add("api_key","Your API Key");
objectBody.Add("pin_type","NUMERIC");
objectBody.Add("phone_number","2348109477743");
objectBody.Add("pin_attempts", 3);
objectBody.Add("pin_time_to_live", 0);
objectBody.Add("pin_length",4);

RestRequest restRequest = new RestRequest(Method.POST);

restRequest.AddHeader("Content-Type", "application/json");
restRequest.AddParameter("application/json", objectBody, ParameterType.RequestBody);
IRestResponse restResponse = restClient.Execute(restRequest);
Console.WriteLine(restResponse.Content);  

Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://BASE_URL/api/sms/otp/generate")
.header("Content-Type", "application/json")
.body("{\r\n \"api_key\": \"Your API Key\",\r\n \"pin_type\": \"NUMERIC\",\r\n \"phone_number\": \"2348109477743\",\r\n \"pin_attempts\": 3,\r\n \"pin_time_to_live\": 0,\r\n \"pin_length\": 4\r\n }")
.asString();

$curl = curl_init();
$data = array("api_key" => "Your API key", "pint_type" => "NUMERIC",
"phone_number" => "2348109477743", "pin_attempts" => 3, "pin_time_to_live" => 0, "pin_length" => 4 );

$post_data = json_encode($data);

curl_setopt_array($curl, array(
CURLOPT_URL => "https://BASE_URL/api/sms/otp/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $post_data,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Sample Response:
{
       "status": "success",
       "data":
     {
         "pin_id": "db34d5ce-9bd4-4f10-b8ec-8ee402ccd0",
         "otp": "522726",
         "phone_number": "2348109077743",
         "phone_number_other": "Termii"
     }
  }