# How to verify the signer with Email OTP

Authentication verifies a signer's identity, enhancing the security of the document signing process. BoldSign offers various authentication methods such as email OTP, SMS OTP, Identity Verification and access code authentication to ensure signers' identities.

* **AccessCode** -  A unique set of alphanumeric characters specified by the sender, which the recipient must use to access the document. The sender provides this secure code directly to the recipient.

* **EmailOTP** - A one-time password generated by the system and sent to the recipient's email address. This password is required to access the document.

* **SMSOTP** - A one-time password generated by the system and sent to the recipient's phone number via SMS. This password is required to access the document.

* **Identity Verification** - Identity verification is a process used to confirm the signer's identity, which may involve submitting a passport or driver's license. This method offers the highest level of security by thoroughly validating the signer's identity.

## Code snippet

The sample code snippets below demonstrates how to add `EmailOTP` authentication to the recipients when sending a document using a template.

{% codetab id="codetab1" %}

cURL

```shell

curl -X 'POST' \ 'https://api.boldsign.com/v1/template/send?templateId=d6bad813-xxxx-xxxx-8c9e-e91a96c06392' \
     -H 'accept: application/json' \
     -H 'X-API-KEY: {Your API Key}' \
     -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
     -d '{
       "title": "Sample document",
       "message": "Kindly review and sign this.",
       "roles": [
    {
      "roleIndex": 1,
      "signerName": "Richard",
      "signerEmail": "richardWhites@gmail.com",
      "authenticationType": "EmailOTP",
      "signerType": "Signer",
      "signerRole": "Manager",
      "locale": "EN"
    }
  ]
 }'
```

C#

```csharp

using BoldSign.Api;
using BoldSign.Model;
var apiClient = new ApiClient("https://api.boldsign.com", "{Your API Key}");
var templateClient = new TemplateClient(apiClient);

var templateRole = new Roles(
    roleSignerName:"Richard",
    authenticationType:AuthenticationType.EmailOTP,
    roleSignerEmailAddress:"richardWhites@gmail.com",
    roleSignerIndex:1,
    locale: Locales.EN);

var roles = new List<Roles>
{
    templateRole,
    
};

var sendForSignFromTemplate = new SendForSignFromTemplate()
{  
    
    TemplateId = "d6bad813-xxxx-xxxx-8c9e-e91a96c06392",
    Roles = roles,
  
};

var documentCreated =  templateClient.SendUsingTemplate(sendForSignFromTemplate);
Console.WriteLine(documentCreated.DocumentId);

```

Python

```python

import requests
import json

url = "https://api.boldsign.com/v1/template/send?templateId=d6bad813-xxxx-xxxx-8c9e-e91a96c06392"

payload = {
    "message": "Kindly review and sign this.",
    "roles": [
        {
            "roleIndex": 1,
            "signerName": "Richard",
            "signerEmail": "richardWhites@gmail.com",
            "authenticationType":"EmailOTP"
        }
    ]
}

headers = {
    'accept': 'application/json',
    'X-API-KEY': '{Your API Key}',
    'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true'
}

response = requests.post(url, headers=headers, data=json.dumps(payload))

print(response.text)
```

NodeJS

```js
onst axios = require('axios');

async function GetData(){
try{
 
const response = await axios.post(
    'https://api.boldsign.com/v1/template/send',
    {
        'roles': [
            {
                'roleIndex': 1,
                'signerName': 'Richard',
                'signerEmail': 'richardWhites@gmail.com',
                'authenticationType': 'EmailOTP'

          },
           
        ],
      
        title: "Simple document",
	     message: "Kindly review and sign this.",
    },
    {

        params: {
            'templateId': 'd6bad813-xxxx-xxxx-8c9e-e91a96c06392',
        },
        headers: {
            'accept': 'application/json',
            'X-API-KEY': '{Your API Key}',
            'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true'
        }
    }

);
  console.log(JSON.stringify(response.data));
  return response;
  }
  catch (error) {
    console.error('Error:', error.message);
    throw error; 
}}
  GetData();
```
{% /codetab %}

In the example above, we have added `EmailOTP` authentication to access the document. Replace `templateId` with the ID of the existing template to be used for sending the document, and update the `SignerEmail` and `SignerName` properties with the email and name of the signer. Once the code is executed, the document from the template will be sent for signature with email OTP authentication.

**Note:**

For more details on OTP behavior, validity, and resend limits when using Email or SMS OTP for signing, please refer to this article: [OTP limitation and Restriction](https://support.boldsign.com/kb/article/19836/otp-limitations-and-restrictions-in-boldsign)
