> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging.termii.com/llms.txt
> Use this file to discover all available pages before exploring further.

# In App Token

> This API returns OTP codes in JSON format which can be used within any web or mobile app. Tokens are numeric or alpha-numeric codes generated to authenticate login requests and verify customer transactions.

**Endpoint:** `https://BASE_URL/api/sms/otp/generate`

**Request Type:** `POST`

**Sample Response:**

| Options                                                                                                                                      | Required | Description                                                                                                                         |
| -------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| api\*key                                                                                                                                     | yes      | \_string\* <br /> Your API key (It can be found on your [Termii dashboard](https://api.termii.com)).                                |
| pin\*type                                                                                                                                    | yes      | Enum: `"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\_number                                                                                                                                | yes      | \_string\* <br /> Represents the destination phone number.Phone number must be in the international format (Example: `23490126727`) |
| pin\*attempts                                                                                                                                | yes      | \_integer\* <br /> Example: `3`                                                                                                     |
| Represents the number of times the PIN can be attempted before expiration. It has a minimum of one attempt                                   |          |                                                                                                                                     |
| pin\*time\_to\_live                                                                                                                          | yes      | \_integer\* <br /> 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\*length                                                                                                                                  | yes      | \_integer\* <br /> Example: `4`                                                                                                     |
| The length of the PIN code. It has a minimum of 4 and maximum of 8.                                                                          |          |                                                                                                                                     |

<CodeGroup>
  ```json JSON theme={null}
  {
  "api_key": "Your API Key",
  "pin_type": "NUMERIC",
  "phone_number": "2348109477743",
  "pin_attempts": 3,
  "pin_time_to_live": 0,
  "pin_length": 4
  }
  ```

  ```json JavaScript theme={null}
  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);
  ```

  ```json NodeJs theme={null}

  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);
  });
  ```

  ```json Python theme={null}

  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)
  ```

  ```json C# theme={null}
  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);  
  ```

  ```json Java theme={null}

  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();
  ```

  ```json Php theme={null}

  $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;
  ```
</CodeGroup>

**Sample Response:**

```
{
       "status": "success",
       "data":
     {
         "pin_id": "db34d5ce-9bd4-4f10-b8ec-8ee402ccd0",
         "otp": "522726",
         "phone_number": "2348109077743",
         "phone_number_other": "Termii"
     }
  }
```
