Send Documents with ID Verification via API

Identity verification is a signer authentication method in BoldSign that enhances document security. This feature allows senders to confirm that signers have authenticated their identity before they can access and sign a document, adding an extra level of trust and safety to the process. Refer to this for more details: Identity Verification

To add Id Verification authentication to signature requests, you need to include AuthenticationType as IdVerification. You can configure IdVerifictionSettings such as type, maximumretryCount, requireLiveCapture, requireMatchingSelfie, nameMatcher and allowedDocumentTypes. Refer to this for more details: Identity verification settings in BoldSign

Here are example codes you can use to send document with Id verification:

curl -X 'POST' \
  'https://api.boldsign.com/v1/document/send' \
  -H 'accept: application/json' \
  -H 'X-API-KEY: {Your API Key}' \
  -H 'Content-Type: multipart/form-data' \
  -F 'Files=@{Your file name};type=application/pdf' \
  -F 'Title={Title}' \
  -F 'Signers={
  "name": "Test",
  "emailAddress": "[email protected]",
  "authenticationType": "IdVerification",
  "deliveryMode": "Email",
  "identityVerificationSettings": {
    "type": "EveryAccess",
    "maximumRetryCount": 10,
    "requireLiveCapture": true,
    "requireMatchingSelfie": true,
    "nameMatcher": "Strict",
    "allowedDocumentTypes": [
      "Passport",
      "IDCard",
      "DriverLicense"
    ]
  },
  "signerType": "Signer",
  "allowFieldConfiguration": true,
  "formFields": [
    {
      "id": "signature1",
      "name": "signature1",
      "fieldType": "Signature",
      "pageNumber": 1,
      "bounds": {
        "x": 160,
        "y": 150,
        "width": 51,
        "height": 21
      },
      "isRequired": true
    }
  ]
}'
 

var apiClient = new ApiClient("https://api.boldsign.com", "{Your API Key}");
var documentClient = new DocumentClient(apiClient);

var documentFilePath = new DocumentFilePath
{
    ContentType = "application/pdf",
    FilePath = "{Your File Path}",
};

var filesToUpload = new List<IDocumentFile>
{
    documentFilePath,
};

var signatureField = new FormField(
    id: "sign",
    isRequired: true,
    type: FieldType.Signature,
    pageNumber: 1,
    bounds: new Rectangle(x: 100, y: 100, width: 100, height: 50));

var formFieldCollections = new List<FormField>()
{
    signatureField
};
var idSettings = new IdentityVerificationSettings
{

    Type = Model.IdVerification.IdVerificationType.EveryAccess,
    MaximumRetryCount = 10,
    RequireLiveCapture = true,
    RequireMatchingSelfie = true,
    NameMatcher = Model.IdVerification.NameVariation.Strict,
    AllowedDocumentTypes = new List<Model.IdVerification.AllowedDocumentType>()
    {
      Model.IdVerification.AllowedDocumentType.Passport,
      Model.IdVerification.AllowedDocumentType.IDCard,
      Model.IdVerification.AllowedDocumentType.DriverLicense,
    },

};

var signer = new DocumentSigner(
    signerName: "Signer Name",
    signerType: SignerType.Signer,
    signerEmail: "[email protected]",
    authenticationType: AuthenticationType.IdVerification,
    identityVerificationSettings: idSettings,
    formFields: formFieldCollections,
    locale: Locales.EN);

var documentSigners = new List<DocumentSigner>()
{
    signer
};	
var sendForSign = new SendForSign()
{
    Title = "Agreement",
    Signers = documentSigners,
    Files = filesToUpload,

};
var documentCreated = documentClient.SendDocument(sendForSign);
Console.WriteLine(documentCreated.DocumentId);
 
import boldsign

configuration = boldsign.Configuration(host = "https://api.boldsign.com", api_key = "YOUR_API_KEY")

with boldsign.ApiClient(configuration) as api_client:
    
    document_api = boldsign.DocumentApi(api_client)
    
    send_for_sign = boldsign.SendForSign(
        title = "Document SDK API",
        document_title = "SDK Document Test case",
        description = "Testing document from SDK integration test case", 
        files = ["YOUR_FILE_PATH"],
        signers = [
            boldsign.DocumentSigner(
                name = "Hanky",
                emailAddress = "[email protected]",
                signerOrder = 1,
                signerType = "Signer",
                formFields = [
                    boldsign.FormField(
                        name = "Sign",
                        fieldType = "Signature",
                        font = "Helvetica",
                        pageNumber = 1,
                        isRequired = True,
                        bounds = boldsign.Rectangle(x = 50, y = 50, width = 100, height = 150)
                    )
                ],
                privateMessage = "This is private message for signer",
                authenticationType = "IdVerification",
                identityVerificationSettings = boldsign.IdentityVerificationSettings(
                    type = "EveryAccess",
                    maximumRetryCount = 10,
                    requireLiveCapture = True,
                    requireMatchingSelfie = True,
                    nameMatcher = "Strict"
                )
            )
        ],
    )
    
    document_created = document_api.send_document(send_for_sign)
<?php require_once "vendor/autoload.php";

$config = new BoldSign\Configuration();
$config->setHost('https://api.boldsign.com');
$config->setApiKey('YOUR_API_KEY');

$documentApi = new BoldSign\Api\DocumentApi($config);

$idSettings = new BoldSign\Model\IdentityVerificationSettings();
$idSettings->setType('EveryAccess');
$idSettings->setMaximumRetryCount(10);
$idSettings->setRequireLiveCapture(true);
$idSettings->setRequireMatchingSelfie(true);
$idSettings->setNameMatcher('Strict');

$bounds = new BoldSign\Model\Rectangle();
$bounds->setX(100);
$bounds->setY(150);
$bounds->setWidth(200);
$bounds->setHeight(50);

$signatureFieldSettings = new BoldSign\Model\FormField();
$signatureFieldSettings->setFieldType('Signature');
$signatureFieldSettings->setId('signatureField1');
$signatureFieldSettings->setPageNumber(1);
$signatureFieldSettings->setBounds($bounds);


$signer = new BoldSign\Model\DocumentSigner();
$signer->setName('Signer Name');
$signer->setEmailAddress('[email protected]');
$signer->setAuthenticationType('IdVerification');
$signer->setFormFields([$signatureFieldSettings]);
$signer->setIdentityVerificationSettings($idSettings);

$sendForSign = new BoldSign\Model\SendForSign();
$sendForSign->setTitle('Document Title');
$sendForSign->setFiles(['YOUR_FILE_PATH']);
$sendForSign->setSigners([$signer]);

$documentCreated = $documentApi->sendDocument($sendForSign);
import java.io.File;
import java.util.Arrays;

import com.boldsign.ApiClient;
import com.boldsign.ApiException;
import com.boldsign.Configuration;
import com.boldsign.api.DocumentApi;
import com.boldsign.model.DocumentCreated;
import com.boldsign.model.DocumentSigner;
import com.boldsign.model.FormField;
import com.boldsign.model.IdentityVerificationSettings;
import com.boldsign.model.Rectangle;
import com.boldsign.model.SendForSign;

ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.boldsign.com");
client.setApiKey("YOUR_API_KEY");

DocumentApi documentApi = new DocumentApi(client);

IdentityVerificationSettings identityVerificationSettings = new IdentityVerificationSettings();
identityVerificationSettings.setType(IdentityVerificationSettings.TypeEnum.EVERY_ACCESS);
identityVerificationSettings.setMaximumRetryCount(10);
identityVerificationSettings.setRequireLiveCapture(true);
identityVerificationSettings.setRequireMatchingSelfie(true);
identityVerificationSettings.setNameMatcher(IdentityVerificationSettings.NameMatcherEnum.STRICT);

FormField formField = new FormField();
formField.setFieldType(FormField.FieldTypeEnum.SIGNATURE);
formField.setPageNumber(1);
formField.setId("Signature1");
Rectangle bounds = new Rectangle().x(100f).y(100f).width(100f).height(50f);
formField.setBounds(bounds);

DocumentSigner signer = new DocumentSigner();
signer.setName("David");
signer.setEmailAddress("[email protected]");
signer.setFormFields(Arrays.asList(formField));
signer.setAuthenticationType(DocumentSigner.AuthenticationTypeEnum.ID_VERIFICATION);
signer.setIdentityVerificationSettings(identityVerificationSettings);

SendForSign sendForSign = new SendForSign();
sendForSign.setTitle("Document title");
sendForSign.setSigners(Arrays.asList(signer));
sendForSign.setFiles(Arrays.asList(new File("YOUR_FILE_PATH")));

DocumentCreated created = documentApi.sendDocument(sendForSign);
import { DocumentApi, IdentityVerificationSettings, FormField, Rectangle, DocumentSigner, SendForSign } from "boldsign";
import * as fs from 'fs';

const documentApi = new DocumentApi("https://api.boldsign.com");
documentApi.setApiKey('YOUR_API_KEY');

const idSettings = new IdentityVerificationSettings();
idSettings.type = IdentityVerificationSettings.TypeEnum.EveryAccess;
idSettings.maximumRetryCount = 10;
idSettings.requireLiveCapture = true;
idSettings.requireMatchingSelfie = true;
idSettings.nameMatcher = IdentityVerificationSettings.NameMatcherEnum.Strict;

const signatureField = new FormField();
signatureField.id = 'signature';
signatureField.fieldType = FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
signatureField.bounds = new Rectangle();
signatureField.bounds.x = 100;
signatureField.bounds.y = 100;
signatureField.bounds.width = 200;
signatureField.bounds.height = 50;
signatureField.isRequired = true;

const signer = new DocumentSigner();
signer.name = 'Name';
signer.emailAddress = '[email protected]';
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
signer.authenticationType = DocumentSigner.AuthenticationTypeEnum.IdVerification;
signer.identityVerificationSettings = idSettings;
signer.formFields = [signatureField];

const sendForSign = new SendForSign();
sendForSign.title = '{title}';
sendForSign.files = [fs.createReadStream("YOUR_FILE_PATH")];
sendForSign.signers = [signer];

documentApi.sendDocument(sendForSign);

Replace the values (Files, Signers, etc.) with the actual values. Set the value for authenticationType as IdVerification, and provide values for Identity verification settings with the values you want to send with it.

Upon execution, the document will be created with Identity Verification and signers will be requested to identify themselves with designated documents before they can access the document.