Sandbox mode

Sandbox Identity Verification enables you to simulate the identity verification process in a non-production environment. Any document created using sandbox OAuth credentials or sandbox API key will operate in sandbox mode. This mode ensures that you can evaluate the feature's capabilities without incurring costs associated with live mode usage.

Name Matching for Identity Verification:

In the identity verification process, name matching is used to verify the signer's name against their government-issued ID. To ensure smooth testing in sandbox mode, use the signer name Jenny Rosen for all test scenarios. This requirement overrides the typical name matching process for sandbox testing purposes.

Name matching ensures that the signer’s identity is verified accurately. In the sandbox environment, a predefined name allows consistent and predictable testing results.

curl -X POST 'https://api.boldsign.com/v1/document/send' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: {your sandbox API key}' \
-d '{
    "Title": "Document title",
    "Message": "This is a document message",
    "Signers": [
        {
            "Name": "Jenny Rosen",
            "EmailAddress": "david@cubeflakes.com",
            "IdentityVerificationSettings": {
                "Type": "EveryAccess",
                "MaximumRetryCount": 10,
                "RequireLiveCapture": true,
                "RequireMatchingSelfie": true,
                "NameMatcher": "Strict",
                "AllowedDocumentTypes": [
                    "Passport",
                    "IDCard",
                    "DriverLicense"
                ]
            },
            
            "FormFields": [
                {
                    "Id": "TextBox1",
                    "FieldType": "Textbox",
                    "PageNumber": 1,
                    "Bounds": {
                        "X": 50,
                        "Y": 50,
                        "Width": 200,
                        "Height": 30
                    }
                }
            ]
        }
    ],
    "Files": [
        "data:application/pdf;base64,JVBERi0xLjcKJcfs..." // Replace with your actual base64-encoded PDF content
    ]
}'
var apiClient = new ApiClient("https://api.boldsign.com", "{your sandbox API key}");
var documentClient = new DocumentClient(apiClient);

var textField = new FormField(
    id: "TextBox1",
    isReadOnly: true,
    type: FieldType.TextBox,
    pageNumber: 1,
    bounds: new Rectangle(x: 50, y: 50, width: 200, height: 30));

var idVerificationSettings = new IdentityVerificationSettings(
    type: IdentityVerificationType.EveryAccess,
    maximumRetryCount: 10,
    requireLiveCapture: true,
    requireMatchingSelfie: true,
    nameMatcher: NameVariation.Strict)
{
    AllowedDocumentTypes = new List<AllowedDocumentType>()
    {
        AllowedDocumentType.IDCard,
        AllowedDocumentType.Passport,
        AllowedDocumentType.DriverLicense,
    },
};

var signer = new DocumentSigner(
    signerName: "Jenny Rosen",
    signerType: SignerType.Signer,
    identityVerificationSettings: idVerificationSettings,
    signerEmail: "david@cubeflakes.com",
    formFields: new List<FormField>() { textField },
    locale: Locales.EN);

var documentSigners = new List<DocumentSigner>()
{
    signer,
};

var sendForSign = new SendForSign()
{
    Message = "please sign this",
    Title = "Agreement",
    HideDocumentId = false,
    Signers = documentSigners,
    Files = new List<IDocumentFile>()
    {
        new DocumentFileBytes()
        {
            ContentType = "application/pdf",
            FileName = "sample.pdf",
            FileData = fileStreamArray,
        },
    },
};

var documentCreated = await documentClient.SendDocumentAsync(sendForSign);
import boldsign

# Configure API key authorization
configuration = boldsign.Configuration(api_key="Your-Sandbox-API-Key-Here")

with boldsign.ApiClient(configuration) as api_client:
    # Create an instance of the DocumentApi class
    document_api = boldsign.DocumentApi(api_client)
    
    # Define the text form field
    text_field = boldsign.FormField(
        id="TextBox1",
        field_type="Textbox",
        page_number=1,
        bounds=boldsign.Rectangle(x=50, y=50, width=200, height=30)
    )
    
    # Define the identity verification settings
    id_verification_settings = boldsign.IdentityVerificationSettings(
        type="EveryAccess",
        maximum_retry_count=10,
        require_live_capture=True,
        require_matching_selfie=True,
        name_matcher="Strict",
        allowed_document_types=["Passport", "IDCard", "DriverLicense"]
    )
    
    # Define the signer with identity verification
    signer = boldsign.DocumentSigner(
        name="David",
        email_address="david@cubeflakes.com",
        signer_type="Signer",
        form_fields=[text_field],
        identity_verification_settings=id_verification_settings
    )
    
    # Prepare the document for sending
    send_for_sign = boldsign.SendForSign(
        title="Agreement",
        message="This is a document message",
        signers=[signer],
        files=["\tests\data\agreement.pdf"]
    )
    
    # Send the document for signature
    response = document_api.send_document(send_for_sign=send_for_sign)
import { DocumentApi, DocumentSigner, FormField, Rectangle, SendForSign, IdentityVerificationSettings } from 'boldsign';

// Create an instance of the DocumentApi class
const documentApi = new DocumentApi();

// Configure API key authorization
documentApi.setApiKey('Your-Sandbox-API-Key-Here');

// Define the form field bounds
const bounds = new Rectangle();
bounds.x = 50;
bounds.y = 50;
bounds.width = 200;
bounds.height = 30;

// Define the text form field
const formField = new FormField();
formField.id = "TextBox1";
formField.fieldType = FormField.FieldTypeEnum.Textbox;
formField.pageNumber = 1;
formField.bounds = bounds;

// Define the identity verification settings
const idVerificationSettings = new IdentityVerificationSettings();
idVerificationSettings.type = IdentityVerificationSettings.TypeEnum.EveryAccess;
idVerificationSettings.maximumRetryCount = 10;
idVerificationSettings.requireLiveCapture = true;
idVerificationSettings.requireMatchingSelfie = true;
idVerificationSettings.nameMatcher = IdentityVerificationSettings.NameMatcherEnum.Strict;
idVerificationSettings.allowedDocumentTypes = ["Passport", "IDCard", "DriverLicense"];

// Define the signer with identity verification
const documentSigner = new DocumentSigner();
documentSigner.name = "David";
documentSigner.emailAddress = "david@cubeflakes.com";
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
documentSigner.formFields = [formField];
documentSigner.identityVerificationSettings = idVerificationSettings;

// Prepare the document for sending
const sendForSign = new SendForSign();
sendForSign.title = "Agreement";
sendForSign.message = "This is a document message";
sendForSign.signers = [documentSigner];
sendForSign.files = ["\tests\data\agreement.pdf"];

// Send the document for signature
documentApi.sendDocument(sendForSign)
    .then(response => {
        console.log('Document sent successfully with ID:', response.documentId);
    })
    .catch(error => {
        console.error('Error:', error.message);
    });
<?php
require 'vendor/autoload.php';

use BoldSign\Configuration;
use BoldSign\Api\DocumentApi;
use BoldSign\Model\DocumentSigner;
use BoldSign\Model\FormField;
use BoldSign\Model\Rectangle;
use BoldSign\Model\SendForSign;
use BoldSign\Model\IdentityVerificationSettings;

// Configure API key authorization
$config = new Configuration();
$config->setApiKey('Your-Sandbox-API-Key-Here');

// Create an instance of the DocumentApi class
$documentApi = new DocumentApi($config);

// Define the form field bounds
$bounds = new Rectangle();
$bounds->setX(50);
$bounds->setY(50);
$bounds->setWidth(200);
$bounds->setHeight(30);

// Define the text form field
$formField = new FormField();
$formField->setId("TextBox1");
$formField->setFieldType(FormField::FIELD_TYPE_TEXTBOX);
$formField->setPageNumber(1);
$formField->setBounds($bounds);

// Define the identity verification settings
$idVerificationSettings = new IdentityVerificationSettings();
$idVerificationSettings->setType(IdentityVerificationSettings::TYPE_EVERY_ACCESS);
$idVerificationSettings->setMaximumRetryCount(10);
$idVerificationSettings->setRequireLiveCapture(true);
$idVerificationSettings->setRequireMatchingSelfie(true);
$idVerificationSettings->setNameMatcher(IdentityVerificationSettings::NAME_MATCHER_STRICT);
$idVerificationSettings->setAllowedDocumentTypes(["Passport", "IDCard", "DriverLicense"]);

// Define the signer with identity verification
$signer = new DocumentSigner();
$signer->setName("David");
$signer->setEmailAddress("david@cubeflakes.com");
$signer->setSignerType(DocumentSigner::SIGNER_TYPE_SIGNER);
$signer->setFormFields([$formField]);
$signer->setIdentityVerificationSettings($idVerificationSettings);

// Prepare the document for sending
$sendForSign = new SendForSign();
$sendForSign->setTitle("Agreement");
$sendForSign->setMessage("This is a document message");
$sendForSign->setSigners([$signer]);
$sendForSign->setFiles(["\tests\data\agreement.pdf"]);

// Send the document for signature
try {
    $response = $documentApi->sendDocument($sendForSign);
    echo "Document sent successfully with ID: " . $response->getDocumentId();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
import com.boldsign.ApiClient;
import com.boldsign.Configuration;
import com.boldsign.api.DocumentApi;
import com.boldsign.model.DocumentSigner;
import com.boldsign.model.FormField;
import com.boldsign.model.Rectangle;
import com.boldsign.model.SendForSign;
import com.boldsign.model.IdentityVerificationSettings;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

// Configure API key authorization
ApiClient client = Configuration.getDefaultApiClient();
client.setApiKey("Your-Sandbox-API-Key-Here");

// Create an instance of the DocumentApi class
DocumentApi documentApi = new DocumentApi(client);

// Define the form field bounds
Rectangle bounds = new Rectangle();
bounds.setX(50f);
bounds.setY(50f);
bounds.setWidth(200f);
bounds.setHeight(30f);

// Define the text form field
FormField formField = new FormField();
formField.setId("TextBox1");
formField.setFieldType(FormField.FieldTypeEnum.TEXTBOX);
formField.setPageNumber(1);
formField.setBounds(bounds);

List<FormField> formFields = new ArrayList<>();
formFields.add(formField);

// Define the identity verification settings
IdentityVerificationSettings idVerificationSettings = new IdentityVerificationSettings();
idVerificationSettings.setType(IdentityVerificationSettings.TypeEnum.EVERY_ACCESS);
idVerificationSettings.setMaximumRetryCount(10);
idVerificationSettings.setRequireLiveCapture(true);
idVerificationSettings.setRequireMatchingSelfie(true);
idVerificationSettings.setNameMatcher(IdentityVerificationSettings.NameMatcherEnum.STRICT);

List<String> allowedDocTypes = new ArrayList<>();
allowedDocTypes.add("Passport");
allowedDocTypes.add("IDCard");
allowedDocTypes.add("DriverLicense");
idVerificationSettings.setAllowedDocumentTypes(allowedDocTypes);

// Define the signer with identity verification
DocumentSigner signer = new DocumentSigner();
signer.setName("David");
signer.setEmailAddress("david@cubeflakes.com");
signer.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signer.setFormFields(formFields);
signer.setIdentityVerificationSettings(idVerificationSettings);

List<DocumentSigner> signers = new ArrayList<>();
signers.add(signer);

// Prepare the document for sending
SendForSign sendForSign = new SendForSign();
sendForSign.setTitle("Agreement");
sendForSign.setMessage("This is a document message");
sendForSign.setSigners(signers);

// Add files to the request
List<File> files = new ArrayList<>();
files.add(new File("\tests\data\agreement.pdf"));
sendForSign.setFiles(files);

// Send the document for signature
try {
    DocumentCreated response = documentApi.sendDocument(sendForSign);
    System.out.println("Document sent successfully with ID: " + response.getDocumentId());
} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
}