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