Sample code for 30+ languages & platforms
Java

DocuSign Add Recipients to a Draft Envelope

See more DocuSign Examples

Demonstrates how to add one or more recipients to a DocuSign draft envelope.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Http http = new Http();

        // Load a previously obtained OAuth2 access token.
        JsonObject jsonToken = new JsonObject();
        try {
            jsonToken.loadFile("qa_data/tokens/docusign.json");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
        http.setAuthToken(jsonToken.stringOf("access_token"));

        // Send the following request.
        // Make sure to use your own account ID (obtained from Get Docusign User Account Information)

        // POST https://demo.docusign.net/restapi/v2.1/accounts/<account ID>/envelopes/<envelope ID>/recipients HTTP/1.1
        // Accept: application/json
        // Cache-Control: no-cache
        // Authorization: Bearer eyJ0eX...
        // Content-Length: ...
        // Content-Type: application/json
        //
        // {
        //   "carbonCopies": [
        //     {
        //       "email": "support@chilkatsoft.com",
        //       "name": "Chilkat Support",
        //       "recipientId": "101",
        //       "tabs": {}
        //     }
        //   ],
        //   "signers": [
        //     {
        //       "email": "admin@chilkatsoft.com",
        //       "name": "Chilkat Admin",
        //       "recipientId": "1",
        //      "tabs": {
        //         "signHereTabs": [{
        //             "anchorString": "Please Sign Here",
        //             "anchorXOffset": "1",
        //             "anchorYOffset": "0",
        //             "anchorIgnoreIfNotPresent": "false",
        //             "anchorUnits": "inches"
        //         }]
        //     }
        //     },
        //     {
        //       "email": "matt@chilkat.io",
        //       "name": "Matt",
        //       "recipientId": "2",
        //      "tabs": {
        //         "signHereTabs": [{
        //             "anchorString": "Please Also Sign Here",
        //             "anchorXOffset": "1",
        //             "anchorYOffset": "0",
        //             "anchorIgnoreIfNotPresent": "false",
        //             "anchorUnits": "inches"
        //         }]
        //     }
        //     }
        //   ]
        // }

        JsonObject json = new JsonObject();
        int i = 0;
        json.setI(i);
        json.updateString("carbonCopies[i].email", "support@chilkatsoft.com");
        json.updateString("carbonCopies[i].name", "Chilkat Support");
        json.updateString("carbonCopies[i].recipientId", "101");
        json.updateNewObject("carbonCopies[i].tabs");
        i = 0;
        json.setI(i);
        json.updateString("signers[i].email", "admin@chilkatsoft.com");
        json.updateString("signers[i].name", "Chilkat Admin");
        json.updateString("signers[i].recipientId", "1");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorString", "Please Sign Here");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorXOffset", "1");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorYOffset", "0");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorIgnoreIfNotPresent", "false");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorUnits", "inches");
        i = i + 1;
        json.setI(i);
        json.updateString("signers[i].email", "matt@chilkat.io");
        json.updateString("signers[i].name", "Matt");
        json.updateString("signers[i].recipientId", "2");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorString", "Please Also Sign Here");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorXOffset", "1");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorYOffset", "0");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorIgnoreIfNotPresent", "false");
        json.updateString("signers[i].tabs.signHereTabs[0].anchorUnits", "inches");

        StringBuilder sbJson = new StringBuilder();
        json.setEmitCompact(false);
        json.emitSb(sbJson);

        http.setRequestHeader("Cache-Control", "no-cache");
        http.setRequestHeader("Accept", "application/json");

        // Use your own account ID here.
        http.setUrlVar("accountId", "7f3f65ed-5e87-418d-94c1-92499ddc8252");
        // Use the envelope ID returned by DocuSign when creating the draft envelope).
        http.setUrlVar("envelopeId", "cee4191c-f94e-4089-9d7c-8033685cbc1a");

        String url = "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes/{$envelopeId}/recipients";
        HttpResponse resp = new HttpResponse();
        try {
            http.httpSb("POST", url, sbJson, "utf-8", "application/json", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        JsonObject jResp = new JsonObject();
        jResp.load(resp.getBodyStr());
        jResp.setEmitCompact(false);

        System.out.println("Response Body:");
        System.out.println(jResp.emit());

        // If you get a 401 response status code, it's likely you need to refresh the DocuSign OAuth2 token).
        int respStatusCode = resp.getStatusCode();
        System.out.println("Response Status Code = " + respStatusCode);
        if (respStatusCode >= 400) {
            System.out.println("Response Header:");
            System.out.println(resp.getHeader());
            System.out.println("Failed.");
            return;
        }

        // Sample JSON response:
        // (Sample code for parsing the JSON response is shown below)

        // {
        //     "signers": [
        //         {
        //             "creationReason": "sender",
        //             "requireUploadSignature": "false",
        //             "email": "admin@chilkatsoft.com",
        //             "recipientId": "1",
        //             "requireIdLookup": "false",
        //             "routingOrder": "1",
        //             "status": "created",
        //             "completedCount": "0",
        //             "deliveryMethod": "email",
        //             "recipientType": "signer"
        //         },
        //         {
        //             "creationReason": "sender",
        //             "requireUploadSignature": "false",
        //             "email": "matt@chilkat.io",
        //             "recipientId": "2",
        //             "requireIdLookup": "false",
        //             "routingOrder": "1",
        //             "status": "created",
        //             "completedCount": "0",
        //             "deliveryMethod": "email",
        //             "recipientType": "signer"
        //         }
        //     ],
        //     "agents": [],
        //     "editors": [],
        //     "intermediaries": [],
        //     "carbonCopies": [
        //         {
        //             "email": "support@chilkatsoft.com",
        //             "recipientId": "101",
        //             "requireIdLookup": "false",
        //             "routingOrder": "1",
        //             "status": "created",
        //             "completedCount": "0",
        //             "deliveryMethod": "email",
        //             "recipientType": "carboncopy"
        //         }
        //     ],
        //     "certifiedDeliveries": [],
        //     "inPersonSigners": [],
        //     "seals": [],
        //     "witnesses": [],
        //     "recipientCount": "3"
        // }

        // Sample code for parsing the JSON response...
        // Use the following online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        String creationReason = "";
        String requireUploadSignature = "";
        String email = "";
        String recipientId = "";
        String requireIdLookup = "";
        String routingOrder = "";
        String status = "";
        String completedCount = "";
        String deliveryMethod = "";
        String recipientType = "";

        String recipientCount = json.stringOf("recipientCount");
        i = 0;
        int count_i = json.sizeOfArray("signers");
        while (i < count_i) {
            json.setI(i);
            creationReason = json.stringOf("signers[i].creationReason");
            requireUploadSignature = json.stringOf("signers[i].requireUploadSignature");
            email = json.stringOf("signers[i].email");
            recipientId = json.stringOf("signers[i].recipientId");
            requireIdLookup = json.stringOf("signers[i].requireIdLookup");
            routingOrder = json.stringOf("signers[i].routingOrder");
            status = json.stringOf("signers[i].status");
            completedCount = json.stringOf("signers[i].completedCount");
            deliveryMethod = json.stringOf("signers[i].deliveryMethod");
            recipientType = json.stringOf("signers[i].recipientType");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("agents");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("editors");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("intermediaries");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("carbonCopies");
        while (i < count_i) {
            json.setI(i);
            email = json.stringOf("carbonCopies[i].email");
            recipientId = json.stringOf("carbonCopies[i].recipientId");
            requireIdLookup = json.stringOf("carbonCopies[i].requireIdLookup");
            routingOrder = json.stringOf("carbonCopies[i].routingOrder");
            status = json.stringOf("carbonCopies[i].status");
            completedCount = json.stringOf("carbonCopies[i].completedCount");
            deliveryMethod = json.stringOf("carbonCopies[i].deliveryMethod");
            recipientType = json.stringOf("carbonCopies[i].recipientType");
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("certifiedDeliveries");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("inPersonSigners");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("seals");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        i = 0;
        count_i = json.sizeOfArray("witnesses");
        while (i < count_i) {
            json.setI(i);
            //    ...
            i = i + 1;
        }

        // If the recipient already exists within the envelope, we would get
        // a success (201) response status code, but errors within the JSON response, such as this:

        // {
        //   "signers": [
        //     {
        //       "creationReason": "sender",
        //       "requireUploadSignature": "false",
        //       "email": "admin@chilkatsoft.com",
        //       "recipientId": "1",
        //       "requireIdLookup": "false",
        //       "routingOrder": "1",
        //       "status": "error",
        //       "completedCount": "0",
        //       "deliveryMethod": "email",
        //       "errorDetails": {
        //         "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
        //         "message": "This recipientId already exists."
        //       },
        //       "recipientType": "signer"
        //     },
        //     {
        //       "creationReason": "sender",
        //       "requireUploadSignature": "false",
        //       "email": "matt@chilkat.io",
        //       "recipientId": "2",
        //       "requireIdLookup": "false",
        //       "routingOrder": "1",
        //       "status": "error",
        //       "completedCount": "0",
        //       "deliveryMethod": "email",
        //       "errorDetails": {
        //         "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
        //         "message": "This recipientId already exists."
        //       },
        //       "recipientType": "signer"
        //     }
        //   ],
        //   "agents": [
        //   ],
        //   "editors": [
        //   ],
        //   "intermediaries": [
        //   ],
        //   "carbonCopies": [
        //     {
        //       "email": "support@chilkatsoft.com",
        //       "recipientId": "101",
        //       "requireIdLookup": "false",
        //       "routingOrder": "1",
        //       "status": "error",
        //       "completedCount": "0",
        //       "deliveryMethod": "email",
        //       "errorDetails": {
        //         "errorCode": "RECIPIENT_ALREADY_EXISTS_IN_ENVELOPE",
        //         "message": "This recipientId already exists."
        //       },
        //       "recipientType": "carboncopy"
        //     }
        //   ],
        //   "certifiedDeliveries": [
        //   ],
        //   "inPersonSigners": [
        //   ],
        //   "seals": [
        //   ],
        //   "witnesses": [
        //   ],
        //   "recipientCount": "3"
        // }
        //
    }
}