Official multi-language SDKs for document generation, digital signatures, and AI-powered workflows
|
Battle-tested infrastructure processing thousands of documents daily. Enterprise-grade reliability with 99.9% uptime SLA. Average API response time under 200ms. Optimized for high-throughput document workflows. End-to-end encryption. Your documents never stored longer than necessary. |
Built from the ground up for AI agents and automation. Perfect for n8n, Zapier, Make, and custom integrations. Legally binding digital signatures with full audit trails. DocuSign alternative at a fraction of the cost. Comprehensive SDKs, detailed documentation, and responsive support. Ship faster with less friction. |
| Language | Package | Install | Docs |
|---|---|---|---|
| @turbodocx/sdk | npm install @turbodocx/sdk |
View → | |
| turbodocx-sdk | pip install turbodocx-sdk |
View → | |
| turbodocx-sdk | go get github.com/turbodocx/sdk |
View → | |
| com.turbodocx:sdk | Maven Central | View → |
| Language | Status |
|---|---|
| 🚧 In Progress | |
| 🚧 In Progress | |
| 🚧 In Progress |
🔌 Low-code? Check out our n8n community node for no-code/low-code workflows!
📝 Microsoft Word? Get TurboDocx Writer from the Microsoft AppSource marketplace!
Get up and running in under 2 minutes:
Sign up at turbodocx.com and grab your API key from the dashboard.
JavaScript / TypeScript
npm install @turbodocx/sdk
# or
yarn add @turbodocx/sdk
# or
pnpm add @turbodocx/sdkPython
pip install turbodocx-sdk
# or
poetry add turbodocx-sdkGo
go get github.com/turbodocx/sdkJava
<dependency>
<groupId>com.turbodocx</groupId>
<artifactId>sdk</artifactId>
<version>1.0.0</version>
</dependency>import { TurboSign } from '@turbodocx/sdk';
// Configure once
TurboSign.configure({ apiKey: process.env.TURBODOCX_API_KEY });
// Send for signature
const { documentId, recipients } = await TurboSign.prepareForSigningSingle({
fileLink: 'https://example.com/contract.pdf',
recipients: [
{ name: 'John Doe', email: '[email protected]', order: 1 }
],
fields: [
{ type: 'signature', page: 1, x: 100, y: 500, width: 200, height: 50, recipientOrder: 1 }
]
});
console.log(`✅ Document sent! Sign URL: ${recipients[0].signUrl}`);Send documents for legally-binding eSignatures with full audit trails.
| Method | Description |
|---|---|
prepareForReview() |
Upload document for preview without sending emails |
prepareForSigningSingle() |
Upload and immediately send signature requests |
getStatus() |
Check document and recipient signing status |
download() |
Download the completed signed document |
void() |
Cancel/void a signature request |
resend() |
Resend signature request emails |
Generate documents from templates with dynamic data.
Specify exact positions for signature fields using page coordinates:
const result = await TurboSign.prepareForSigningSingle({
fileLink: 'https://example.com/contract.pdf',
recipients: [
{ name: 'Alice Smith', email: '[email protected]', order: 1 },
{ name: 'Bob Johnson', email: '[email protected]', order: 2 }
],
fields: [
// Alice's signature and date on page 1
{ type: 'signature', page: 1, x: 100, y: 650, width: 200, height: 50, recipientOrder: 1 },
{ type: 'date', page: 1, x: 320, y: 650, width: 100, height: 30, recipientOrder: 1 },
// Bob's signature and date on page 1
{ type: 'signature', page: 1, x: 100, y: 720, width: 200, height: 50, recipientOrder: 2 },
{ type: 'date', page: 1, x: 320, y: 720, width: 100, height: 30, recipientOrder: 2 },
// Initials on page 2
{ type: 'initials', page: 2, x: 500, y: 750, width: 60, height: 30, recipientOrder: 1 },
{ type: 'initials', page: 2, x: 500, y: 780, width: 60, height: 30, recipientOrder: 2 }
],
documentName: 'Service Agreement',
senderName: 'Acme Corp',
senderEmail: '[email protected]'
});Use text anchors in your PDF to automatically position signature fields:
const result = await TurboSign.prepareForSigningSingle({
fileLink: 'https://example.com/contract-with-placeholders.pdf',
recipients: [
{ name: 'Alice Smith', email: '[email protected]', order: 1 },
{ name: 'Bob Johnson', email: '[email protected]', order: 2 }
],
fields: [
// Fields anchored to text markers in the PDF
{ type: 'signature', anchor: '{SIGNATURE_ALICE}', width: 200, height: 50, recipientOrder: 1 },
{ type: 'date', anchor: '{DATE_ALICE}', width: 100, height: 30, recipientOrder: 1 },
{ type: 'signature', anchor: '{SIGNATURE_BOB}', width: 200, height: 50, recipientOrder: 2 },
{ type: 'date', anchor: '{DATE_BOB}', width: 100, height: 30, recipientOrder: 2 },
// Text fields for additional info
{ type: 'text', anchor: '{TITLE_ALICE}', width: 150, height: 25, recipientOrder: 1 },
{ type: 'text', anchor: '{TITLE_BOB}', width: 150, height: 25, recipientOrder: 2 }
]
});Tip: Template-based fields are ideal when your PDF layout may change. Add text markers like
{SIGNATURE_1}to your document, and the signature fields will automatically align to them.
import { TurboSign } from '@turbodocx/sdk';
TurboSign.configure({ apiKey: process.env.TURBODOCX_API_KEY });
// 1. Send document for signature
const { documentId } = await TurboSign.prepareForSigningSingle({
fileLink: 'https://example.com/contract.pdf',
recipients: [
{ name: 'Alice', email: '[email protected]', order: 1 },
{ name: 'Bob', email: '[email protected]', order: 2 }
],
fields: [
{ type: 'signature', page: 1, x: 100, y: 500, width: 200, height: 50, recipientOrder: 1 },
{ type: 'signature', page: 1, x: 100, y: 600, width: 200, height: 50, recipientOrder: 2 }
]
});
console.log(`Document ID: ${documentId}`);
// 2. Check status
const status = await TurboSign.getStatus(documentId);
console.log(`Status: ${status.status}`); // 'pending', 'completed', 'voided'
for (const recipient of status.recipients) {
console.log(` ${recipient.name}: ${recipient.status}`);
}
// 3. Download when complete
if (status.status === 'completed') {
const signedPdf = await TurboSign.download(documentId);
// Save to file, upload to S3, etc.
}
// 4. Void if needed
await TurboSign.void(documentId, 'Contract terms changed');
// 5. Resend to specific recipients
await TurboSign.resend(documentId, ['recipient-uuid']);| Type | Description | Auto-filled |
|---|---|---|
signature |
Draw or type signature | No |
initials |
Initials field | No |
text |
Free-form text input | No |
date |
Date stamp | Yes (signing date) |
checkbox |
Checkbox / agreement | No |
| SDK | Minimum Version |
|---|---|
| JavaScript/TypeScript | Node.js 16+ |
| Python | Python 3.9+ |
| Go | Go 1.21+ |
| Java | Java 11+ |
We love contributions! Whether it's bug fixes, new features, or documentation improvements.
# Clone the repo
git clone https://github.com/TurboDocx/SDK.git
# Navigate to your SDK
cd SDK/packages/<sdk-name>
# Follow SDK-specific setup in its READMESee CONTRIBUTING.md for detailed guidelines.
We're looking for community maintainers for each SDK. Interested? Open an issue or reach out on Discord.
|
Documentation |
Discord |
GitHub Issues |
|
MIT License — see LICENSE for details.

