SignaNote API Documentation

Welcome to the SignaNote API documentation. This guide will help you integrate digital signature functionality into your applications using our RESTful API.

Authentication

To use the SignaNote API, you need to include your API key in the header of each request:

Authorization: Bearer YOUR_API_KEY

You can obtain an API key from your SignaNote dashboard.

Endpoints

POST /api/v1/documents

Create a new document for signing.

Request Body:

{
  "title": "Contract Agreement",
  "content": "Base64 encoded PDF or image",
  "signers": [
    {
      "name": "John Doe",
      "email": "[email protected]"
    },
    {
      "name": "Jane Smith",
      "email": "[email protected]"
    }
  ]
}

Response:

{
  "document_id": "doc_123456",
  "status": "pending",
  "signing_url": "https://signanote.com/sign/doc_123456"
}

GET /api/v1/documents/{document_id}

Retrieve the status and details of a document.

Response:

{
  "document_id": "doc_123456",
  "title": "Contract Agreement",
  "status": "completed",
  "signers": [
    {
      "name": "John Doe",
      "email": "[email protected]",
      "status": "signed"
    },
    {
      "name": "Jane Smith",
      "email": "[email protected]",
      "status": "signed"
    }
  ],
  "completed_at": "2025-03-02T14:30:00Z"
}

POST /api/v1/documents/{document_id}/remind

Send a reminder to signers who haven't signed the document yet.

Response:

{
  "message": "Reminders sent successfully",
  "recipients": ["[email protected]"]
}

GET /api/v1/documents/{document_id}/download

Download the signed document.

This endpoint returns the signed document as a file download.

Example: Creating and Monitoring a Document

Here's a Python example that demonstrates how to create a document, check its status, and download it once signed:

import requests
import time
import base64

API_KEY = 'your_api_key_here'
BASE_URL = 'https://api.signanote.com/v1'

headers = {
    'Authorization': f'Bearer {API_KEY}',
    'Content-Type': 'application/json'
}

# Step 1: Create a document
with open('contract.pdf', 'rb') as file:
    pdf_content = base64.b64encode(file.read()).decode('utf-8')

create_doc_payload = {
    "title": "Important Contract",
    "content": pdf_content,
    "signers": [
        {"name": "John Doe", "email": "[email protected]"},
        {"name": "Jane Smith", "email": "[email protected]"}
    ]
}

response = requests.post(f'{BASE_URL}/documents', json=create_doc_payload, headers=headers)
document_id = response.json()['document_id']
print(f"Document created with ID: {document_id}")

# Step 2: Check document status periodically
while True:
    response = requests.get(f'{BASE_URL}/documents/{document_id}', headers=headers)
    status = response.json()['status']
    print(f"Document status: {status}")
    
    if status == 'completed':
        break
    
    time.sleep(60)  # Wait for 60 seconds before checking again

# Step 3: Download the signed document
response = requests.get(f'{BASE_URL}/documents/{document_id}/download', headers=headers)
with open('signed_contract.pdf', 'wb') as file:
    file.write(response.content)

print("Signed document downloaded successfully!")

Rate Limiting

The SignaNote API is rate limited to ensure fair usage. The current limits are:

If you exceed these limits, you'll receive a 429 Too Many Requests response.

Support

If you need help with the API or have any questions, please contact our developer support team at [email protected].