Quick Start Guide
Get up and running with Chaindoc in under 10 minutes. This guide covers both web interface and API integration for developers.
For End Users
Step-by-Step: Your First Signature
1Sign UpCreate your free account at app.chaindoc.io. Verify your email address.
2Upload DocumentClick 'New Document' and upload your file. Supports PDF, Office documents, images (up to 50MB).
3Add Document DetailsEnter document name, description, and tags for organization. Choose access level (private, team, or public).
4Create Signature RequestClick 'Request Signatures', add recipient emails, set deadline, and customize message.
5Configure Signature FlowChoose signing order (parallel or sequential), enable KYC if needed, select notification preferences.
6Send RequestReview and send. Recipients receive email with secure signing link.
7Track ProgressMonitor signing status in real-time. Receive notifications when signatures are collected.
8Download Signed DocumentOnce complete, download the signed document with blockchain certificate.
For Developers
Integrate Chaindoc into your application using our REST API and SDKs.
1. Get API Keys
2. Install SDK
Choose the SDK based on your use case:
# Node.js 18+ required
npm install @chaindoc_io/server-sdk3. Create Your First Document via API
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';
// Initialize SDK
const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
});
// 1. Upload document
const buffer = await readFile('./contract.pdf');
const file = new Blob([buffer], { type: 'application/pdf' });
const { media } = await chaindoc.media.upload([file]);
// 2. Create document record
const doc = await chaindoc.documents.create({
name: 'Service Agreement',
description: 'Q4 2024 Contract',
media: media[0],
status: 'published', // Triggers blockchain verification
hashtags: ['#contract', '#2024'],
meta: [{ key: 'client', value: 'Acme Corp' }],
});
console.log('Document created:', doc.documentId);4. Create Signature Request
// Create signature request for multiple signers
const sigRequest = await chaindoc.signatures.createRequest({
versionId: doc.document.versions[0].uuid,
recipients: [
{ email: 'signer1@example.com' },
{ email: 'signer2@example.com' },
],
deadline: new Date('2024-12-31'),
message: 'Please review and sign this agreement',
embeddedFlow: true, // Enable for frontend integration
});
console.log('Signature request created:', sigRequest.signatureRequest.uuid);5. Integrate Signing Interface (Frontend)
For embedded signing in your web application:
// Create embedded session for signer
const session = await chaindoc.embedded.createSession({
email: 'signer1@example.com',
metadata: {
documentId: doc.documentId,
signatureRequestId: sigRequest.signatureRequest.uuid,
},
});
// Return sessionId to frontend
res.json({ sessionId: session.sessionId });6. Track Status and Handle Events
// Check signature request status
const status = await chaindoc.signatures.getRequestStatus(
sigRequest.signatureRequest.uuid
);
if (status.signatureRequest.status === 'completed') {
console.log('All signatures collected!');
// Download signed document
// Send notifications
// Update your database
}7. Set Up Webhooks (Optional)
Receive real-time notifications for events:
// Configure webhook endpoint
app.post('/webhooks/chaindoc', (req, res) => {
const event = req.headers['x-webhook-event'];
const payload = req.body;
switch (event) {
case 'document.verified':
console.log('Document verified on blockchain:', payload.txHash);
break;
case 'signature.request.completed':
console.log('All signatures collected!');
// Send notifications, update status, etc.
break;
}
res.status(200).send('OK');
});Complete Workflow Example
Here's a complete end-to-end example combining all steps:
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';
async function createSigningWorkflow() {
const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
});
// Step 1: Upload document
const buffer = await readFile('./contract.pdf');
const file = new Blob([buffer], { type: 'application/pdf' });
const { media } = await chaindoc.media.upload([file]);
// Step 2: Create document
const doc = await chaindoc.documents.create({
name: 'Service Agreement',
description: 'Contract for consulting services',
media: media[0],
status: 'published',
hashtags: ['#contract'],
meta: [],
});
// Step 3: Create signature request
const sigRequest = await chaindoc.signatures.createRequest({
versionId: doc.document.versions[0].uuid,
recipients: [{ email: 'signer@example.com' }],
deadline: new Date('2024-12-31'),
embeddedFlow: true,
});
// Step 4: Create session for frontend
const session = await chaindoc.embedded.createSession({
email: 'signer@example.com',
metadata: {
documentId: doc.documentId,
signatureRequestId: sigRequest.signatureRequest.uuid,
},
});
return {
documentId: doc.documentId,
sessionId: session.sessionId,
};
}
// Usage
const { documentId, sessionId } = await createSigningWorkflow();
console.log('Ready for signing:', { documentId, sessionId });Next Steps
- Read the Installation guide for detailed SDK setup
- Explore API Documentation for complete endpoint reference
- Check SDKs documentation for framework-specific examples (React, Vue, Angular)
- Set up Webhooks for real-time event notifications
- Review Security Best Practices for production deployment
Common Questions
How long does blockchain verification take?
Blockchain verification typically completes in 1-5 minutes depending on the network. Documents are available immediately, verification happens asynchronously.
Can I test without a paid plan?
Yes! Free plan includes web interface access. API access requires Business plan, but you can use sandbox environment for testing.
Are signatures legally binding?
Yes, Chaindoc signatures comply with eIDAS, ESIGN Act, and UETA regulations. Blockchain verification provides additional legal evidence.
What file formats are supported?
PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, JPG, PNG, GIF, WEBP, SVG, MP4, AVI, MOV, WMV. Maximum file size: 50MB.