Articles in this section
Category / Section

What does the status "Completed" mean after editing a document using BoldSign API?

Published:

BoldSign’s Edit document API endpoint allows users to modify the properties of an existing document or draft document, including the title, description, files, signers, and form fields. This article explains what the Completed status means after a document has been edited using the BoldSign API.

What does “Completed” status mean?

The Completed status indicates that:

  • The edit request was processed successfully and immediately (synchronously).
  • All requested changes such as updating signer details, adding new signers, or modifying form fields and descriptions, were applied to the document.
  • No file changes were involved.
  • No further action is required. The document is updated and ready for the next step in the signing workflow. Think of it as the system’s confirmation that your edits are finalized and live…

Scenarios that trigger “Completed” status

You will see this status when you edit:

  • Signers: Change details of existing signers or add new ones (up to 50).
  • Form Fields: Add or update signature boxes, initials, text fields, checkboxes, and more.
  • Message/Description: Update the note that signers see when they get the document.
  • Labels: Add tags like HR, Legal, or Finance to organize documents.
  • Reminders: Set automatic reminders so signers don’t forget to complete their part.

Example Code Snippet

Curl


curl -X PUT 'https://api.boldsign.com/v1-beta/document/edit?documentId=YOUR-DOCUMENT-ID' \

-H 'Content-Type: application/json' \

-H 'X-API-KEY: {API-KEY}' \

-d '{

    "Message": "Please sign this document.",

    "Signers": [

        {

            "EditAction": "Update",

            "Id": "YOUR-SIGNER-ID",

            "AuthenticationType": "EmailOTP",

            "FormFields": [

                {

                    "EditAction": "Add",

                    "FieldType": "TextBox",

                    "Bounds": {

                        "X": 100,

                        "Y": 100,

                        "Width": 100,

                        "Height": 20

                    },

                    "IsRequired": false,

                    "PageNumber": 1

                }

            ]

        },

        {

            "EditAction": "Add",

            "Name": "Signer",

            "EmailAddress": "signer@gmail.com",

            "AuthenticationType": "AccessCode",

            "AuthenticationCode": "1234",

            "FormFields": [

                {

                    "EditAction": "Add",

                    "FieldType": "Signature",

                    "Bounds": {

                        "X": 150,

                        "Y": 150,

                        "Width": 200,

                        "Height": 30

                    },

                    "IsRequired": true,

                    "PageNumber": 1

                }

            ]

        }

    ],

    "Labels": ["Label1", "Label2"],

    "ReminderSettings": {

        "EnableAutoReminder": true,

        "ReminderDays": 2,

        "ReminderCount": 4

    }

}'

.NET

var apiClient = new ApiClient("https://api.boldsign.com", "YOUR_API_KEY");

var documentClient = new DocumentClient(apiClient);

// --- Form fields for existing signer ---
var textField = new EditFormField()
{
    EditAction = EditAction.Add,
    Type = FieldType.TextBox,
    IsRequired = false,
    Bounds = new Rectangle()
    {
        X = 100,
        Y = 100,
        Width = 100,
        Height = 20,
    },
    PageNumber = 1,
};

var signerToUpdate = new EditDocumentSigner()
{
    EditAction = EditAction.Update,
    Id = "YOUR-SIGNER-ID",
    AuthenticationType = AuthenticationType.EmailOTP,
    FormFields = new List<EditFormField>()
    {
        textField
    }
};

// --- Form fields for new signer ---
var signatureField = new EditFormField()
{
    EditAction = EditAction.Add,
    Type = FieldType.Signature,
    IsRequired = false,
    Bounds = new Rectangle()
    {
        X = 150,
        Y = 150,
        Width = 200,
        Height = 30,
    },
    PageNumber = 1,
};

var signerToAdd = new EditDocumentSigner()
{
    EditAction = EditAction.Add,
    Name = "Signer",
    EmailAddress = "signer@gmail.com",
    AuthenticationType = AuthenticationType.AccessCode,
    AuthenticationCode = "1234",
    FormFields = new List<EditFormField>()
    {
        signatureField
    }
};

// --- Signers collection ---
var documentSigners = new List<EditDocumentSigner>()
{
    signerToUpdate,
    signerToAdd
};

// --- Labels ---
var labels = new List<string>()
{
    "Label1",
    "Label2"
};

// --- Reminder settings ---
var reminderSettings = new ReminderSettings()
{
    EnableAutoReminder = true,
    ReminderCount = 4,
    ReminderDays = 2,
};

// --- Final request ---
var editDocumentRequest = new EditDocumentRequest()
{
    DocumentId = "YOUR-DOCUMENT-ID",
    Message = "Please sign this document.",
    Signers = documentSigners,
    Labels = labels,
    ReminderSettings = reminderSettings
};

var documentEdited = documentClient.EditDocument(editDocumentRequest);


Python

import boldsign

 

configuration = boldsign.Configuration(api_key="YOUR_API_KEY")

 

with boldsign.ApiClient(configuration) as api_client:

    document_api = boldsign.DocumentApi(api_client)

    document_id = "YOUR-DOCUMENT-ID"

 

    signer1 = boldsign.EditDocumentSigner(

        edit_action="Update",

        id="YOUR-SIGNER-ID",

        authentication_type="EmailOTP",

        form_fields=[

            boldsign.EditFormField(

                edit_action="Add",

                fieldType="TextBox",

                is_required=False,

                bounds=boldsign.Rectangle(x=100, y=100, width=100, height=20),

                page_number=1

            )

        ]

    )

 

    signer2 = boldsign.EditDocumentSigner(

        edit_action="Add",

        name="Signer22",

        email_address="signer@gmail.com",

        authentication_type="AccessCode",

        authentication_code="1234",

        form_fields=[

            boldsign.EditFormField(

                edit_action="Add",

                type="Signature",

                is_required=False,

                bounds=boldsign.Rectangle(x=150, y=150, width=200, height=30),

                page_number=1

            )

        ]

    )

 

    edit_request = boldsign.EditDocumentRequest(

        message="Please sign this document.",

        signers=[signer1, signer2],

        labels=["Label1", "Label2"],

        reminder_settings=boldsign.ReminderSettings(

            enable_auto_reminder=True,

            reminder_count=4,

            reminder_days=2

        )

    )

    response = document_api.edit_document(document_id, edit_request)

PHP


<?php require_once "vendor/autoload.php";

use BoldSign\Configuration;

use BoldSign\Api\DocumentApi;

use BoldSign\Model\EditDocumentRequest;

use BoldSign\Model\EditDocumentSigner;

use BoldSign\Model\EditFormField;

use BoldSign\Model\Rectangle;

use BoldSign\Model\ReminderSettings;

use BoldSign\Model\EditDocumentFile;

 

$config = new Configuration();

$config->setApiKey('YOUR_API_KEY');

 

$apiInstance = new DocumentApi($config);

$document_id = "YOUR-DOCUMENT-ID";

 

$formField2 = new EditFormField();

$formField2->setEditAction("Add");

$formField2->setFieldType("TextBox");

$formField2->setIsRequired(false);

$formField2->setBounds(new Rectangle([100, 100, 100, 20]));

$formField2->setPageNumber(1);

 

$signer1 = new EditDocumentSigner();

$signer1->setEditAction("Update");

$signer1->setId("YOUR-SIGNER-ID");

$signer1->setAuthenticationType("EmailOTP");

$signer1->setFormFields([$formField2]);

 

$formField3 = new EditFormField();

$formField3->setEditAction("Add");

$formField3->setFieldType("Signature");

$formField3->setBounds(new Rectangle([100, 100, 100, 70]));

$formField3->setPageNumber(1);

 

$signer2 = new EditDocumentSigner();

$signer2->setEditAction("Add");

$signer2->setName("Signer");

$signer2->setEmailAddress("signer@gmail.com");

$signer2->setAuthenticationType("AccessCode");

$signer2->setAuthenticationCode("1234");

$signer2->setFormFields([$formField3]);

 

$reminderSettings = new ReminderSettings();

$reminderSettings->setEnableAutoReminder(true);

$reminderSettings->setReminderCount(4);

$reminderSettings->setReminderDays(2);

 

$edit_document_request = new EditDocumentRequest();

$edit_document_request->setMessage('Please sign this document.');

$edit_document_request->setSigners([$signer1, $signer2]);

$edit_document_request->setLabels(["Label1", "Label2"]);

$edit_document_request->setReminderSettings($reminderSettings);

$edit_document_response = $apiInstance->editDocument($document_id, $edit_document_request);

Java


ApiClient apiClient = Configuration.getDefaultApiClient();

        apiClient.setApiKey("YOUR_API_KEY");

        DocumentApi documentApi = new DocumentApi(apiClient);

 

        Rectangle bounds = new Rectangle();

        bounds.setX(50f);

        bounds.setY(100f);

        bounds.setWidth(100f);

        bounds.setHeight(60f);

 

        EditFormField formField = new EditFormField();

        formField.setEditAction(EditFormField.EditActionEnum.ADD);

        formField.setFieldType(EditFormField.FieldTypeEnum.SIGNATURE);

        formField.setPageNumber(1);

        formField.setBounds(bounds);

 

        EditDocumentSigner signers = new EditDocumentSigner();

        signers.setEmailAddress("signer@gmail.com");

        signers.setName("signername");

        signers.setFormFields(Arrays.asList(formField));

        signers.setEditAction(EditDocumentSigner.EditActionEnum.ADD);

 

        EditDocumentRequest editDocumentJsonRequest = new EditDocumentRequest();

        editDocumentJsonRequest.setSigners(Arrays.asList(signers));

        editDocumentJsonRequest.setMessage("Updated documments");

        String documentId = "YOUR-DOCUMENT-ID";

        documentApi.editDocument(documentId, editDocumentJsonRequest);

Node Js

import {

    DocumentApi,

    EditDocumentFile,

    EditDocumentRequest,

    EditDocumentSigner,

    EditFormField,

    Rectangle,

    ReminderSettings

} from "boldsign";

import * as fs from 'fs';

 

const documentApi = new DocumentApi();

documentApi.setApiKey("YOUR_API_KEY");

 

const documentId = "YOUR-DOCUMENT-ID";

 

const bounds1 = new Rectangle();

bounds1.x = 100;

bounds1.y = 100;

bounds1.width = 100;

bounds1.height = 20;

 

const formField1 = new EditFormField();

formField1.editAction = EditFormField.EditActionEnum.Add;

formField1.fieldType = EditFormField.FieldTypeEnum.TextBox;

formField1.isRequired = false;

formField1.bounds = bounds1;

formField1.pageNumber = 1;

 

const signer1 = new EditDocumentSigner();

signer1.editAction = EditDocumentSigner.EditActionEnum.Update;

signer1.id = "YOUR-SIGNER-ID";

signer1.authenticationType = EditDocumentSigner.AuthenticationTypeEnum.EmailOtp;

signer1.formFields = [formField1];

 

const bounds2 = new Rectangle();

bounds2.x = 150;

bounds2.y = 150;

bounds2.width = 200;

bounds2.height = 30;

 

const formField3 = new EditFormField();

formField3.editAction = EditFormField.EditActionEnum.Add;

formField3.fieldType = EditFormField.FieldTypeEnum.Signature;

formField3.isRequired = false;

formField3.bounds = bounds2;

formField3.pageNumber = 1;

 

const signer2 = new EditDocumentSigner();

signer2.editAction = EditDocumentSigner.EditActionEnum.Add;

signer2.name = "Signer";

signer2.emailAddress = "signer@gmail.com";

signer2.authenticationType =EditDocumentSigner.AuthenticationTypeEnum.AccessCode;

signer2.authenticationCode = "1234";

signer2.formFields = [formField3];

 

const reminderSettings = new ReminderSettings();

reminderSettings.enableAutoReminder = true;

reminderSettings.reminderCount = 4;

reminderSettings.reminderDays = 2;

 

const editDocumentRequest = new EditDocumentRequest();

editDocumentRequest.message = "Please review and sign the attached document.";

editDocumentRequest.signers = [signer1, signer2];

editDocumentRequest.labels = ["Label1", "Label2"];

editDocumentRequest.reminderSettings = reminderSettings;

const editDocumentResponse = await documentApi.editDocument(documentId, editDocumentRequest);

Example response
Here is a sample status response from the developer console:

image.png

Use cases for edit document API

Here are sample use cases for the edit document API:
1. Update signer details
You can modify information about an existing signer without re-uploading files.

  • Example: A signer’s email address changes from john.doe@example.com to john.doe@newdomain.com.
  • Other updates: Change the signer’s name, update their authentication type (e.g., from Email OTP to Access Code), or adjust their role.
  • Outcome: The signer’s updated details are applied instantly, and they will receive notifications at the new email address or with the new authentication method.

2. Add new signers
You can include additional signers in the document workflow.

  • Example: In a rental agreement, you add a guarantor as a new signer with their own signature field.
  • Details: You can specify the signer’s name, email, authentication type (Access Code, Email OTP, etc.), and assign form fields for them to complete.
  • Outcome: The new signer is added immediately, and they will be notified to sign the document.

3. Update form fields
You can modify existing form fields in the document.

  • Example: Change a signature field to an initial field, mark a text box as optional instead of required, or adjust the field’s position on the page.
  • Outcome: The form field properties are updated instantly, ensuring signers see the correct fields when they open the document.

4. Update message/instructions
You can change the message that appears to signers when they receive the document.

  • Example: Update the message from “Please review and sign” to “Please sign this document by Friday to confirm your agreement.”
  • Outcome: The new instructions are visible to all recipients, helping clarify expectations before signing.

5. Apply labels or reminders
You can organize documents and configure automatic reminders.

  • Labels: Add tags like HR, Legal, or Finance to categorize documents for easier filtering.
  • Reminders: Configure automatic reminders (e.g., send a reminder every 2 days, up to 4 times).
  • Outcome: Labels help with document management, while reminders ensure signers don’t forget to complete their part.

If your request includes file modifications (such as adding, updating, or removing files), the response status will be Queued, indicating that the changes are being processed asynchronously.

Was this article useful?
Like
Dislike
Help us improve this page
Please provide feedback or comments
Access denied
Access denied