BlockSign API Documentation
Integrate digital signatures, document management, and webhook notifications into your applications with our powerful REST API.
Authentication
All API requests require authentication using a Bearer token. Your API key can be found in your profile settings.
Authorization: Bearer YOUR_API_KEY
Navigate to Profile Settings and look for the API Key section. You can regenerate your key at any time.
Signature Levels
BlockSign supports multiple signature levels to meet different compliance requirements under eIDAS regulation.
Standard advanced signature with Swisscom TSP. Suitable for most business documents.
Advanced signature with additional Cardano blockchain anchoring for tamper evidence.
Highest legal standing, equivalent to handwritten signature. Requires identity verification.
Qualified signature with blockchain anchoring for maximum security and compliance.
Document Management
Core endpoints for uploading, listing, downloading, and managing documents.
Upload Document
POSTPOST /api/upload
Upload a PDF document for signing. Returns the document UUID for subsequent operations.
List Documents
GETGET /api/list
Retrieve a list of all documents for the authenticated user.
Document Status
GETGET /api/status?uuid={document_uuid}
Get the current status of a document (pending, signed, declined).
Download Document
GETGET /api/downloaddocument?uuid={document_uuid}
Download the signed PDF document.
Download Invoice
GETGET /api/downloadinvoice?uuid={document_uuid}
Download the invoice for a document transaction.
Delete Document
DELETEDELETE /api/deletedocument?uuid={document_uuid}
Permanently delete a document from your account.
Send Reminder
GETGET /api/reminder?uuid={document_uuid}
Send a reminder email to pending signers.
Sign Document
GETGET /api/sign_document?uuid={document_uuid}
Initiate the signing process for a document.
Signed Status
GETGET /api/signed_status?uuid={document_uuid}
Check the signed status and get details about who has signed.
Invite for Sign
POST /api/invite-for-sign
Send a document for signature to one or more recipients. Supports signature level selection, document types, and webhook callbacks.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| uuid | string | Required | Document UUID |
| string | Required | Recipient email address | |
| name | string | Required | Recipient name |
| x | number | Required | X coordinate for signature placement |
| y | number | Required | Y coordinate for signature placement |
| page | integer | Required | Page number (1-indexed) |
| signature_level | string | Optional | One of: aes, aesb, qes, qesb |
| type | string | Optional | One of: signature, pod |
| callback_url | string | Optional | Webhook URL for status notifications |
Example Request
{
"uuid": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"email": "signer@example.com",
"name": "John Doe",
"x": 100,
"y": 500,
"page": 1,
"signature_level": "aes",
"type": "signature",
"callback_url": "https://yourapp.com/webhook/signature-status"
}
Update Document Metadata
Update document properties after creation using these dedicated endpoints.
Update Signature Level
PUTPUT /api/document/{uuid}/signature-level
{ "signature_level": "qes" }
Update Document Type
PUTPUT /api/document/{uuid}/type
{ "type": "pod" }
Update Callback URL
PUTPUT /api/document/{uuid}/callback-url
{ "callback_url": "https://yourapp.com/webhook" }
Webhook Callbacks
Receive real-time notifications when document status changes. Set a callback URL and we'll send a POST request with the event details.
Webhook Events
Document has been signed by a recipient
Document signing was declined
Document was canceled by the owner
Webhook Payload
When a document status changes, we send a POST request to your callback URL with the following headers and payload:
Content-Type: application/json
User-Agent: BlockSign-Webhook/1.0
X-BlockSign-Event: document.status_changed
{
"event": "document.status_changed",
"document": {
"uuid": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "Contract.pdf",
"status": "signed",
"signature_level": "aes",
"type": "signature"
},
"timestamp": "2026-01-13T14:30:00+00:00",
"signer": {
"email": "signer@example.com",
"name": "John Doe"
},
"all_signed": true
}
For canceled events, the signer and all_signed fields are not included.
Error Handling
The API uses standard HTTP status codes to indicate success or failure.
| Status Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - You don't have access to this resource |
| 404 | Not Found - Resource doesn't exist |
| 500 | Server Error - Something went wrong on our end |
Error Response Format
{
"error": true,
"message": "Document not found",
"code": 404
}