Skip to content

TurboDocx/SDK

Repository files navigation

TurboDocx

TurboDocx SDKs

Official multi-language SDKs for document generation, digital signatures, and AI-powered workflows

CI GitHub Stars Discord X License: MIT

DocumentationAPI ReferenceDiscordBlog


Why TurboDocx?

🚀 Production-Ready

Battle-tested infrastructure processing thousands of documents daily. Enterprise-grade reliability with 99.9% uptime SLA.

⚡ Lightning Fast

Average API response time under 200ms. Optimized for high-throughput document workflows.

🔒 Enterprise Security

End-to-end encryption. Your documents never stored longer than necessary.

🤖 AI-Native

Built from the ground up for AI agents and automation. Perfect for n8n, Zapier, Make, and custom integrations.

📝 eSignature Ready

Legally binding digital signatures with full audit trails. DocuSign alternative at a fraction of the cost.

🛠️ Developer First

Comprehensive SDKs, detailed documentation, and responsive support. Ship faster with less friction.


Available SDKs

Language Package Install Registry
JavaScript/TypeScript @turbodocx/sdk npm install @turbodocx/sdk npm
Python turbodocx-sdk pip install turbodocx-sdk PyPI
PHP turbodocx/sdk composer require turbodocx/sdk Packagist
Go turbodocx-sdk go get github.com/TurboDocx/SDK/packages/go-sdk Go
Java com.turbodocx:turbodocx-sdk implementation 'com.turbodocx:turbodocx-sdk:0.1.4' Maven Central

Coming Soon

Language Status
C# / .NET 🚧 In Progress
Ruby 🚧 In Progress
PowerShell 🚧 In Progress

🌐 Explore the TurboDocx Ecosystem

Package Links Description
@turbodocx/html-to-docx npm GitHub Convert HTML to DOCX with the fastest JavaScript library
n8n-nodes-turbodocx npm GitHub n8n community node for TurboDocx API & TurboSign
TurboDocx Writer AppSource Official Microsoft Word add-in for document automation

Quick Start

Get up and running in under 2 minutes:

1. Get your API key

Sign up at turbodocx.com and grab your API key from the dashboard.

2. Install your SDK

JavaScript / TypeScript
npm install @turbodocx/sdk
# or
yarn add @turbodocx/sdk
# or
pnpm add @turbodocx/sdk
Python
pip install turbodocx-sdk
# or
poetry add turbodocx-sdk
Go
go get github.com/turbodocx/sdk
PHP
composer require turbodocx/sdk
Java
<dependency>
    <groupId>com.turbodocx</groupId>
    <artifactId>turbodocx-sdk</artifactId>
    <version>0.1.4</version>
</dependency>

3. Send your first document for signature

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

Core Capabilities

TurboSign — Digital Signatures

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

TurboDocx — Document Generation (Coming Soon)

Generate documents from templates with dynamic data.


Examples

Method 1: Coordinate-Based Signature Fields

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

Method 2: Template-Based Signature Fields

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.

Complete Workflow Example

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

Field Types

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

Requirements

SDK Minimum Version
JavaScript/TypeScript Node.js 16+
Python Python 3.9+
PHP PHP 8.1+
Go Go 1.21+
Java Java 11+

Contributing

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 README

See CONTRIBUTING.md for detailed guidelines.

SDK Maintainers Wanted!

We're looking for community maintainers for each SDK. Interested? Open an issue or reach out on Discord.


Support


Documentation

Discord

GitHub Issues

License

MIT License — see LICENSE for details.


WebsiteDocumentationDiscordTwitter/X

Built with ❤️ by the TurboDocx team

TurboDocx