Back to snippets

docusign_esign_sdk_send_envelope_with_signer_tabs.py

python

This quickstart demonstrates how to send an envelope via email using the

Agent Votes
1
0
100% positive
docusign_esign_sdk_send_envelope_with_signer_tabs.py
1import os
2from docusign_esign import ApiClient, EnvelopesApi, EnvelopeDefinition, Document, Signer, SignHere, Tabs, Recipients
3
4# Settings for the quickstart
5# Note: In a production environment, use environment variables or a configuration file
6ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"
7ACCOUNT_ID = "YOUR_ACCOUNT_ID"
8BASE_PATH = "https://demo.docusign.net/restapi"
9
10def create_and_send_envelope():
11    # 1. Initialize the API Client
12    api_client = ApiClient()
13    api_client.host = BASE_PATH
14    api_client.set_default_header("Authorization", f"Bearer {ACCESS_TOKEN}")
15
16    # 2. Create the envelope definition
17    envelope_definition = EnvelopeDefinition(
18        email_subject="Please sign this document sent from the Python SDK",
19        status="sent" # Set to 'sent' to send immediately, or 'created' to save as a draft
20    )
21
22    # 3. Create the document
23    with open("World_Wide_Corp_lorem.pdf", "rb") as file:
24        content_bytes = file.read()
25    
26    import base64
27    base64_content = base64.b64encode(content_bytes).decode("ascii")
28
29    doc = Document(
30        document_base64=base64_content,
31        name="Test Document",
32        file_extension="pdf",
33        document_id="1"
34    )
35    envelope_definition.documents = [doc]
36
37    # 4. Create the signer recipient
38    signer = Signer(
39        email="signer_email@example.com",
40        name="Signer Name",
41        recipient_id="1",
42        routing_order="1"
43    )
44
45    # 5. Create a SignHere tab (where the signer puts their signature)
46    sign_here = SignHere(
47        anchor_string="/sn1/",
48        anchor_units="pixels",
49        anchor_y_offset="10",
50        anchor_x_offset="20"
51    )
52    
53    # Add the tabs to the signer object
54    signer.tabs = Tabs(sign_here_tabs=[sign_here])
55
56    # Add recipient to the envelope
57    envelope_definition.recipients = Recipients(signers=[signer])
58
59    # 6. Call the eSignature API to create and send the envelope
60    envelopes_api = EnvelopesApi(api_client)
61    results = envelopes_api.create_envelope(account_id=ACCOUNT_ID, envelope_definition=envelope_definition)
62
63    print(f"Envelope status: {results.status}. Envelope ID: {results.envelope_id}")
64    return results
65
66if __name__ == "__main__":
67    try:
68        create_and_send_envelope()
69    except Exception as e:
70        print(f"Error: {e}")