Developer Documentation

Everything you need to integrate Scrib.li's e-signature functionality into your applications

Quick Start

1. Get Your API Key

Sign up for a Professional or Business plan to access your API key from the dashboard.

View Pricing →

2. Make Your First API Call

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"
      }
    ]
  }'

3. Send for Signature

Use the document ID returned to send it to your signers. They'll receive an email with a secure link to sign.

API Reference

Documents

Create, upload, and manage documents

  • POST /documents - Create document
  • GET /documents - List documents
  • GET /documents/{id} - Get document

Signers

Manage document signers

  • POST /signers - Add signer
  • GET /signers/{id} - Get signer
  • PUT /signers/{id} - Update signer

Templates

Create and manage templates

  • POST /templates - Create template
  • GET /templates - List templates
  • DELETE /templates/{id} - Delete

Webhooks

Receive real-time notifications

  • POST /webhooks - Create webhook
  • GET /webhooks - List webhooks
  • PUT /webhooks/{id} - Update webhook

Audit Trail

Access document history

  • GET /documents/{id}/audit - Get audit trail
  • GET /documents/{id}/events - Get events

Account

Manage your account

  • GET /account - Get account info
  • GET /usage - View usage stats
  • POST /api-keys - Create API key

SDKs & Libraries

Node.js

Official Node.js SDK for Scrib.li API

npm install scriblli

Python

Python client library for Scrib.li

pip install scriblli

JavaScript

Browser and Node.js compatible

npm install scriblli-js

Code Examples

Create and Send a Document

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`);

Webhook Handler

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');
});