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 Docs
JavaScript/TypeScript @turbodocx/sdk npm install @turbodocx/sdk View →
Python turbodocx-sdk pip install turbodocx-sdk View →
Go turbodocx-sdk go get github.com/turbodocx/sdk View →
Java com.turbodocx:sdk Maven Central View →

Coming Soon

Language Status
C# / .NET 🚧 In Progress
Ruby 🚧 In Progress
PowerShell 🚧 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!


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
Java
<dependency>
    <groupId>com.turbodocx</groupId>
    <artifactId>sdk</artifactId>
    <version>1.0.0</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+
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

Email

License

MIT License — see LICENSE for details.


WebsiteDocumentationDiscordTwitter/X

Built with ❤️ by the TurboDocx team

TurboDocx

About

SDK for the TurboDocx APIs

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •