Maton

SignNow

Access the SignNow API with managed OAuth authentication. Upload documents, send signature invites, manage templates, and automate e-signature workflows.

Reference

Get Current User

GET /signnow/user

Response:

{
  "id": "59cce130e93a4e9488522ca67e3a6779f3e48a72",
  "first_name": "Chris",
  "last_name": "Kim",
  "active": "1",
  "verified": true,
  "emails": ["chris@example.com"],
  "primary_email": "chris@example.com",
  "document_count": 0,
  "subscriptions": [...],
  "teams": [...],
  "organization": {...}
}

Get User Documents

GET /signnow/user/documents

Response:

[
  {
    "id": "c63a7bc73f03449c987bf0feaa36e96212408352",
    "document_name": "Contract",
    "page_count": "3",
    "created": "1770598603",
    "updated": "1770598603",
    "original_filename": "contract.pdf",
    "owner": "chris@example.com",
    "template": false,
    "roles": [],
    "field_invites": [],
    "signatures": []
  }
]

Upload Document

Documents must be uploaded as multipart form data with a PDF file:

python <<'EOF'
import urllib.request, os, json

def encode_multipart_formdata(files):
    boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW'
    lines = []
    for (key, filename, content) in files:
        lines.append(f'--{boundary}'.encode())
        lines.append(f'Content-Disposition: form-data; name="{key}"; filename="{filename}"'.encode())
        lines.append(b'Content-Type: application/pdf')
        lines.append(b'')
        lines.append(content)
    lines.append(f'--{boundary}--'.encode())
    lines.append(b'')
    body = b'\r\n'.join(lines)
    content_type = f'multipart/form-data; boundary={boundary}'
    return content_type, body

with open('document.pdf', 'rb') as f:
    file_content = f.read()

content_type, body = encode_multipart_formdata([('file', 'document.pdf', file_content)])
req = urllib.request.Request('https://api.maton.ai/signnow/document', data=body, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', content_type)
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "id": "c63a7bc73f03449c987bf0feaa36e96212408352"
}

Get Document

GET /signnow/document/{document_id}

Response:

{
  "id": "c63a7bc73f03449c987bf0feaa36e96212408352",
  "document_name": "Contract",
  "page_count": "3",
  "created": "1770598603",
  "updated": "1770598603",
  "original_filename": "contract.pdf",
  "owner": "chris@example.com",
  "template": false,
  "roles": [],
  "viewer_roles": [],
  "attachments": [],
  "fields": [],
  "signatures": [],
  "texts": [],
  "checks": []
}

Update Document

PUT /signnow/document/{document_id}
Content-Type: application/json

{
  "document_name": "Updated Contract Name"
}

Response:

{
  "id": "c63a7bc73f03449c987bf0feaa36e96212408352",
  "signatures": [],
  "texts": [],
  "checks": []
}

Download Document

GET /signnow/document/{document_id}/download?type=collapsed

Returns the PDF file as binary data.

Query parameters:

  • type - Download type: collapsed (flattened PDF), zip (all pages as images)

Get Document History

GET /signnow/document/{document_id}/historyfull

Response:

[
  {
    "unique_id": "c4eb89d84b2b407ba8ec1cf4d25b8b435bcef69d",
    "user_id": "59cce130e93a4e9488522ca67e3a6779f3e48a72",
    "document_id": "c63a7bc73f03449c987bf0feaa36e96212408352",
    "email": "chris@example.com",
    "created": 1770598603,
    "event": "created_document"
  }
]

Move Document to Folder

POST /signnow/document/{document_id}/move
Content-Type: application/json

{
  "folder_id": "5e2798bdd3d642c3aefebe333bb5b723d6db01a4"
}

Response:

{
  "result": "success"
}

Merge Documents

Combines multiple documents into a single PDF:

POST /signnow/document/merge
Content-Type: application/json

{
  "name": "Merged Document",
  "document_ids": ["doc_id_1", "doc_id_2"]
}

Returns the merged PDF as binary data.

Delete Document

DELETE /signnow/document/{document_id}

Response:

{
  "status": "success"
}

Create Template from Document

POST /signnow/template
Content-Type: application/json

{
  "document_id": "c63a7bc73f03449c987bf0feaa36e96212408352",
  "document_name": "Contract Template"
}

Response:

{
  "id": "47941baee4f74784bc1d37c25e88836fc38ed501"
}

Create Document from Template

POST /signnow/template/{template_id}/copy
Content-Type: application/json

{
  "document_name": "New Contract from Template"
}

Response:

{
  "id": "08f5f4a2cc1a4d6c8a986adbf90be2308807d4ae",
  "name": "New Contract from Template"
}

Send Freeform Invite

Send a document for signature:

POST /signnow/document/{document_id}/invite
Content-Type: application/json

{
  "to": "signer@example.com",
  "from": "sender@example.com"
}

Response:

{
  "result": "success",
  "id": "c38a57f08f2e48d98b5de52f75f7b1dd0a074c00",
  "callback_url": "none"
}

Note: Custom subject and message require a paid subscription plan.

Create an embeddable signing link (requires document fields):

POST /signnow/link
Content-Type: application/json

{
  "document_id": "c63a7bc73f03449c987bf0feaa36e96212408352"
}

Note: Document must have signature fields added before creating a signing link.

Get All Folders

GET /signnow/folder

Response:

{
  "id": "2ea71a3a9d06470d8e5ec0df6122971f47db7706",
  "name": "Root",
  "system_folder": true,
  "folders": [
    {
      "id": "5e2798bdd3d642c3aefebe333bb5b723d6db01a4",
      "name": "Documents",
      "document_count": "5",
      "template_count": "2"
    },
    {
      "id": "fafdef6de6d947fc84627e4ddeed6987bfeee02d",
      "name": "Templates",
      "document_count": "0",
      "template_count": "3"
    },
    {
      "id": "6063688b1e724a25aa98befcc3f2cb7795be7da1",
      "name": "Trash Bin",
      "document_count": "0"
    }
  ],
  "total_documents": 0,
  "documents": []
}

Get Folder by ID

GET /signnow/folder/{folder_id}

Response:

{
  "id": "5e2798bdd3d642c3aefebe333bb5b723d6db01a4",
  "name": "Documents",
  "user_id": "59cce130e93a4e9488522ca67e3a6779f3e48a72",
  "parent_id": "2ea71a3a9d06470d8e5ec0df6122971f47db7706",
  "system_folder": true,
  "folders": [],
  "total_documents": 5,
  "documents": [...]
}

List Event Subscriptions

GET /signnow/event_subscription

Response:

{
  "subscriptions": [
    {
      "id": "b1d6700dfb0444ed9196e913b2515ae8d5f731a7",
      "event": "document.complete",
      "created": "1770598678",
      "callback_url": "https://example.com/webhook"
    }
  ]
}

Create Event Subscription

POST /signnow/event_subscription
Content-Type: application/json

{
  "event": "document.complete",
  "callback_url": "https://example.com/webhook"
}

Response:

{
  "id": "b1d6700dfb0444ed9196e913b2515ae8d5f731a7",
  "created": 1770598678
}

Available Events:

  • document.create - Document created
  • document.update - Document updated
  • document.delete - Document deleted
  • document.complete - Document signed by all parties
  • invite.create - Invite sent
  • invite.update - Invite updated

Delete Event Subscription

DELETE /signnow/event_subscription/{subscription_id}

Response:

{
  "id": "b1d6700dfb0444ed9196e913b2515ae8d5f731a7",
  "status": "deleted"
}

Resources

On this page