DEV Community

Cover image for Integrate In-Person Signing to Docs Using BoldSign API
Vijay Amalan for BoldSign

Posted on • Originally published at boldsign.com

Integrate In-Person Signing to Docs Using BoldSign API

Electronic signatures have become a cornerstone of business transactions, offering efficiency, convenience, and security. However, there are instances where the traditional method of in-person signing holds significant weight, ensuring trust and authenticity in important documents. BoldSign provides a seamless API integration for adding in-person signers to your documents. Let’s see how you can leverage BoldSign’s API to incorporate in-person signing into your workflow.

In-Person Signing

In-person signing requires physically meeting with the signer to execute a document. This method adds an extra layer of assurance and credibility to the signature process, particularly in scenarios where the legality and authenticity of signatures are paramount.

Integrating In-Person Signing with the BoldSign API

BoldSign simplifies the process of incorporating in-person signatures into your electronic documents through its comprehensive API. By designating a host email address, you can seamlessly facilitate in-person signing sessions within your organization. Please note that the host facilitating the in-person signing session must be a registered user within your organization. This requirement reinforces security measures, ensuring that only authorized personnel oversee the signing process.

Example Code for Adding an In-Person Signer

Curl

    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 'Message=' \
         -F 'Signers={
            "name": "Hanky",
            "emailAddress": "hankWhites@cubeflakes.com",
            "signerType": "InPersonSigner",
            "hostEmail":"richards@cubeflakes.com",
            "formFields": [
               {
                    "id": "string",
                    "name": "string",
                    "fieldType": "Signature",
                    "pageNumber": 1,
                    "bounds": {
                      "x": 50,
                      "y": 50,
                      "width": 100,
                      "height": 20
                       },
          "isRequired": true
        }
      ],
      "locale": "EN"
    }' \
      -F 'Files=@{your file path}' \
      -F 'Title={title}' \
Enter fullscreen mode Exit fullscreen mode

C#

    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
    {
        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
    {
        signatureField
    };
    var signer = new DocumentSigner(
        signerName: "David",
        signerType: SignerType.InPersonSigner,
        signerEmail: "hankWhites@cubeflakes.com",
        hostEmail: "richards@cubeflakes.com",
        formFields: formFieldCollections,
        locale: Locales.EN);
    var documentSigners = new List
    {
        signer
    };
    var sendForSign = new SendForSign
    {
        Message = "please sign this",
        Title = "Agreement",
        Signers = documentSigners,
        Files = filesToUpload
    };
    var documentCreated = documentClient.SendDocument(sendForSign);
Enter fullscreen mode Exit fullscreen mode

Python

    import requests
    import json
    url = "https://api.boldsign.com/v1/document/send"
    signer_data = {
        "name": "Hank ",
        "emailAddress": "hankWhites@cubeflakes.com",
        "signerType": "InPersonSigner",
        "hostEmail": "richards@cubeflakes.com",
        "formFields": [
            {
                "id": "string",
                "name": "string",
                "fieldType": "Signature",
                "pageNumber": 1,
                "bounds": {
                    "x": 50,
                    "y": 50,
                    "width": 100,
                    "height": 20
                },
                "isRequired": True
            }
        ],
        "locale": "EN"
    }
    payload = {
        'Message': '',
        'Signers': json.dumps(signer_data),
        'Title': '{title}'
    }
    files = [
        ('Files', (
            'doc-2.pdf',
            open('{Your file path}', 'rb'),
            'application/pdf'
        ))
    ]
    headers = {
        'accept': 'application/json',
        'X-API-KEY': '{Your API Key}'
    }
    response = requests.request("POST", url, headers=headers, data=payload, files=files)
    print(response.text)
Enter fullscreen mode Exit fullscreen mode

Node js

    const axios = require('axios');
    const FormData = require('form-data');
    const fs = require('fs');
    let data = new FormData();
    data.append('Message', '');
    data.append('Signers', '{\r\n        "name": "Hank",\r\n        "hostEmail": "richards@cubeflakes.com",\r\n        "emailAddress": "hankWhites@cubeflakes.com",\r\n        "signerType": "InPersonSigner",\r\n        "formFields": [\r\n           {\r\n                "id": "string",\r\n                "name": "string",\r\n                "fieldType": "Signature",\r\n                "pageNumber": 1,\r\n                "bounds": {\r\n                  "x": 50,\r\n                  "y": 50,\r\n                  "width": 100,\r\n                  "height": 20\r\n                   },\r\n      "isRequired": true\r\n    }\r\n  ],\r\n  "locale": "EN"\r\n}');
    data.append('Files', fs.createReadStream('{Your file path}'));
    data.append('Title', '{title}');
    let config = {
      method: 'post',
      maxBodyLength: Infinity,
      url: 'https://api.boldsign.com/v1/document/send',
      headers: { 
        'accept': 'application/json', 
        'X-API-KEY': '{Your API key}', 
        ...data.getHeaders()
      },
      data : data
    };
    axios.request(config)
    .then((response) => {
      console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
      console.log(error);
    });
Enter fullscreen mode Exit fullscreen mode

PHP

    <?php
    require_once "vendor/autoload.php";
    use GuzzleHttp\Client;
    use GuzzleHttp\Psr7\Request;
    use \GuzzleHttp\Psr7\Utils;
    $headers = [
     'accept' => 'application/json',
     'X-API-KEY' => 'Your API Key'
    ];
    $options = [
     'multipart' => [
       [
         'name' => 'Signers',
         'contents' => '{
           "name": "Hank",
            "emailAddress": "hankWhites@cubeflakes.com",
           "signerType": "InPersonSigner",
           "hostEmail": "richards@cubeflakes.com",
           "formFields": [
              {
                   "id": "string",
                   "name": "string",
                   "fieldType": "Signature",
                   "pageNumber": 1,
                   "bounds": {
                     "x": 50,
                     "y": 50,
                     "width": 200,
                     "height": 60
                      },
         "isRequired": true
       }
     ],
     "locale": "EN"
    }'
       ],
       [
         'name' => 'Title',
         'contents' => 'dcsd'
       ],
       [
          'name' => 'Files',
          'contents' => Utils::tryFopen('{Your File Path}, 'r'),
          'filename' => 'Your File Name’,
          'headers'  => [
            'Content-Type' => ''
          ]
        ]
    ]];
    $request = new Request('POST', 'https://api.boldsign.com/v1/document/send', $headers);
    $res = $client->sendAsync($request, $options)->wait();
    echo $res->getBody();
Enter fullscreen mode Exit fullscreen mode

Conclusion

Incorporating in-person signing into your electronic documents can be necessary for certain kinds of  transactions, depending on your local regulations. With BoldSign’s API, integrating in-person signatures into your workflow becomes a streamlined process, ensuring compliance and reliability in your document management.

By following the outlined steps and leveraging the provided sample codes, you can incorporate in-person signing capabilities into your applications. Start your 30-day free trial now to see how BoldSign can make your document signing processes easy and affordable. Please feel free to leave a comment below; your thoughts are much appreciated. Please schedule a demo or contact our support team via our support portal if you have any questions or would like more information about our services.

Related blogs

Note: This blog was originally published at boldsign.com

Top comments (0)