API Documentation
Complete reference for the AuthenlySign REST API. Integrate document signing into your applications.
Authentication
All API requests require authentication using an API key. Include your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.authenlysign.com/v1/documentsKeep your API key secure
Never expose your API key in client-side code. Use environment variables and server-side requests.
Generate API keys in your Dashboard Settings. API access requires Medium Team plan or higher.
Base URL
Production
https://api.authenlysign.com/v1Sandbox (Testing)
https://sandbox-api.authenlysign.com/v1Rate Limits
Standard
1,000
requests/hour
Large Team
5,000
requests/hour
Enterprise
Unlimited
custom limits available
Rate limit headers are included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
API Endpoints
Documents
/api/documents/uploadAuth Required/api/documentsAuth Required/api/documents/:idAuth Required/api/documents/:id/sendAuth Required/api/documents/:idAuth Required/api/documents/:id/downloadAuth Required/api/documents/:id/audit-trailAuth RequiredTemplates
/api/templatesAuth Required/api/templatesAuth Required/api/templates/:id/useAuth RequiredSigners
/api/documents/:id/signersAuth Required/api/documents/:id/remindAuth RequiredWebhooks
/api/webhooksAuth Required/api/webhooksAuth Required/api/webhooks/:idAuth RequiredUsers & Teams
/api/user/profileAuth Required/api/team/membersAuth Required/api/team/inviteAuth RequiredWebhooks
Webhooks allow you to receive real-time notifications when events occur in AuthenlySign. Configure webhook endpoints in your dashboard or via the API.
Webhook Payload Structure
{
"id": "evt_abc123",
"event": "document.completed",
"created_at": "2025-12-02T10:00:00Z",
"data": {
"document_id": "doc_xyz789",
"title": "Service Agreement",
"status": "completed",
"completed_at": "2025-12-02T10:00:00Z",
"signers": [
{ "email": "client@example.com", "signed_at": "2025-12-02T10:00:00Z" }
]
}
}Available Events
document.createdA new document was uploadeddocument.sentDocument was sent for signingdocument.viewedA signer viewed the documentdocument.signedA signer completed their signaturedocument.completedAll signers have signed, document is completedocument.voidedDocument was voided/cancelleddocument.expiredDocument expired before completiondocument.declinedA signer declined to signsigner.remindedA reminder was sent to a signertemplate.createdA new template was createdteam.member_addedA new team member joinedteam.member_removedA team member was removedVerify webhook signatures to ensure requests are from AuthenlySign:
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expectedSignature}`)
);
}SDKs & Libraries
Install: npm install @authenlysign/sdk
import AuthenlySign from '@authenlysign/sdk';
const client = new AuthenlySign({
apiKey: process.env.AUTHENLYSIGN_API_KEY
});
// Upload a document
const document = await client.documents.upload({
file: fs.readFileSync('contract.pdf'),
title: 'Service Agreement'
});
// Add signers and send
await client.documents.send(document.id, {
signers: [
{ email: 'client@company.com', name: 'Client Name' }
],
message: 'Please sign this agreement'
});
// Listen for completion
client.webhooks.on('document.completed', (event) => {
console.log('Document signed:', event.data.documentId);
});Error Codes
The API returns standard HTTP status codes and JSON error objects:
{
"error": {
"code": "validation_error",
"message": "Invalid email address format",
"field": "signers[0].email",
"status": 422
}
}