Everything you need to integrate Scrib.li's e-signature functionality into your applications
Sign up for a Professional or Business plan to access your API key from the dashboard.
View Pricing →curl -X POST https://api.scriblli.com/v1/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Sample Document",
"signers": [
{
"email": "signer@example.com",
"name": "John Doe"
}
]
}'
Use the document ID returned to send it to your signers. They'll receive an email with a secure link to sign.
Create, upload, and manage documents
POST /documents - Create documentGET /documents - List documentsGET /documents/{id} - Get documentManage document signers
POST /signers - Add signerGET /signers/{id} - Get signerPUT /signers/{id} - Update signerCreate and manage templates
POST /templates - Create templateGET /templates - List templatesDELETE /templates/{id} - DeleteReceive real-time notifications
POST /webhooks - Create webhookGET /webhooks - List webhooksPUT /webhooks/{id} - Update webhookAccess document history
GET /documents/{id}/audit - Get audit trailGET /documents/{id}/events - Get eventsManage your account
GET /account - Get account infoGET /usage - View usage statsPOST /api-keys - Create API keyOfficial Node.js SDK for Scrib.li API
npm install scriblli
Python client library for Scrib.li
pip install scriblli
Browser and Node.js compatible
npm install scriblli-js
const Scriblli = require('scriblli');
const client = new Scriblli('YOUR_API_KEY');
// Create a new document
const document = await client.documents.create({
title: 'Employment Agreement',
file: 'path/to/document.pdf',
signers: [
{
email: 'employee@example.com',
name: 'Jane Doe',
role: 'employee'
},
{
email: 'hr@company.com',
name: 'John Smith',
role: 'hr_manager'
}
]
});
// Send for signature
await client.documents.send(document.id);
console.log(`Document ${document.id} sent for signature`);
app.post('/webhook', (req, res) => {
const event = req.body;
switch(event.type) {
case 'document.signed':
console.log(`Document ${event.data.documentId} was signed`);
// Update your database
break;
case 'document.completed':
console.log(`Document ${event.data.documentId} is fully signed`);
// Process completed document
break;
case 'signer.declined':
console.log(`Signer declined to sign`);
// Handle declined signature
break;
}
res.status(200).send('OK');
});