eSignature REST API

The DocuSign REST API lets you eSign documents, request signatures, automate your forms, and do much more directly through your app or website. To ensure data privacy the DocuSign REST API is served over HTTPS, and documents are encrypted using AES-256. Learn more.

API Endpoints

All REST API endpoints start with the following base URL:


The server value varies based on which data center your account resides is. For instance, North American account holders accessing the live production system might use the following account baseUrl:

On the other hand European users might use this account base URL:

You should never hardcode your account URL value and you should always use authentication to determine the correct base URL to use for each user.


The REST API supports HTTP custom header authentication as well as OAuth authorization flows. Custom header authentication is recommended for service integrations that do not require end users to authenticate with the DocuSign platform. User applications that require end users to authenticate with DocuSign should use OAuth.

HTTP Custom Header

To retrieve your base URL using custom header authentication, also called legacy header, add your username, password, and Integrator Key in JSON format to the X-DocuSign-Authentication HTTP header:

curl -H 'X-DocuSign-Authentication:{"Username": "","Password": "xxx","IntegratorKey": "your_key"}' \


OAuth 2.0 authorization flows using the Authorization: bearer {token} header are also supported, learn about OAuth.


You can test the DocuSign API using a developer sandbox account. Sandbox accounts operate in the demo environment, which is identical to the live production system except documents sent through demo are not legally binding. Sandbox accounts have enterprise features enabled so you can test advanced features.

All accounts in the demo environment start with the following base URL:

For example, to create and send an envelope in the demo environment send an HTTP POST request to the following URL:


    "status": "sent",
    "emailSubject": "Request a signature via email example",
    "documents": [{
        "documentId": "1",
        "name": "contract.pdf",
        "documentBase64": "[base64 encoded file bytes...]"
    "recipients": {
        "signers": [{
            "name": "[SIGNER NAME]",
            "email": "[SIGNER EMAIL ADDRESS]",
            "recipientId": "1",
            "tabs": {
                "signHereTabs": [{
                    "xPosition": "25",
                    "yPosition": "50",
                    "documentId": "1",
                    "pageNumber": "1"

You can check real time status for the demo and live production environments through the DocuSign Trust Center.

Get Started