LegalOSS155.3ktracked
Agent Skills & Plugins · Document Automation · Retrieval & RAG · E-Signature & Workflow

SDKMaintained

TurboDocx/SDK

SDK for the TurboDocx APIs

TurboDocx

TurboDocx SDKs

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

CI GitHub Stars Discord X License: MIT Agent Skills Quickstart Skill

DocumentationAPI ReferenceDiscordBlog


⚡ Skip the boilerplate — let an agent scaffold it for you

Have an AI coding agent (Claude Code, Cursor, Copilot, Codex, Gemini CLI, OpenCode) install the right TurboDocx SDK for your language, configure your env, write working route handlers, and wire them into your app:

npx skills add TurboDocx/quickstart

Then run /turbodocx-sdk inside your agent — or one of the focused shortcuts:

Shortcut What it scaffolds
/turbodocx-sdk turbosign Send documents for e-signature, check status, download signed PDF
/turbodocx-sdk deliverable Generate documents from templates with variable substitution
/turbodocx-sdk turbopartner Provision and manage customer organizations (partner accounts)
/turbodocx-sdk turbowebhooks Subscribe to signature.document.completed events + verify HMAC

The skill auto-detects your framework (Express, NestJS, Next.js, FastAPI, Django, Spring Boot, Laravel, Gin, …) and follows your existing project conventions. Source: github.com/TurboDocx/quickstart.


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.


Install via AI Agent Skill

Install the TurboDocx SDKs in a single prompt using the TurboDocx Quickstart Agent Skill — works with Claude Code, GitHub Copilot, Cursor, OpenCode, and other AI coding agents.

npx skills add TurboDocx/quickstart

Two skills are included:

Skill What it does
turbodocx-sdk Scaffolds document generation in your project — picks the right SDK for your language, installs it, and writes a working code example
turbodocx-html-to-docx Installs and configures @turbodocx/html-to-docx (open-source HTML → DOCX converter)

Prefer manual install? Jump straight to Available SDKs below.


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
Ruby turbodocx-sdk gem install turbodocx-sdk Gem

Coming Soon

Language Status
C# / .NET 🚧 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.sendSignature({
  fileLink: 'https://example.com/contract.pdf',
  recipients: [
    { name: 'John Doe', email: 'john@example.com', order: 1 }
  ],
  fields: [
    { type: 'signature', page: 1, x: 100, y: 500, width: 200, height: 50, recipientOrder: 1 }
  ]
});

// The created recipients come back on the send result (id, name, email).
// Signing links are emailed to them — they are not returned here.
console.log(`✅ Document sent to ${recipients[0].name} <${recipients[0].email}>`);

Core Capabilities

TurboSign — Digital Signatures

Send documents for legally-binding eSignatures with full audit trails.

Method Description
createSignatureReviewLink() Upload document for preview without sending emails
sendSignature() Upload and immediately send signature requests
getStatus() Check the document-level status
getRecipients() Per-signer status, email history, and who sent the document
download() Download the completed signed document
void() Cancel/void a signature request
resend() Resend signature request emails
getAuditTrail() Get the complete audit trail

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.sendSignature({
  fileLink: 'https://example.com/contract.pdf',
  recipients: [
    { name: 'Alice Smith', email: 'alice@example.com', order: 1 },
    { name: 'Bob Johnson', email: 'bob@example.com', 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: 'contracts@acme.com'
});

Method 2: Template-Based Signature Fields

Use text anchors in your PDF to automatically position signature fields:

const result = await TurboSign.sendSignature({
  fileLink: 'https://example.com/contract-with-placeholders.pdf',
  recipients: [
    { name: 'Alice Smith', email: 'alice@example.com', order: 1 },
    { name: 'Bob Johnson', email: 'bob@example.com', 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.sendSignature({
  fileLink: 'https://example.com/contract.pdf',
  recipients: [
    { name: 'Alice', email: 'alice@example.com', order: 1 },
    { name: 'Bob', email: 'bob@example.com', 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}`);  // 'under_review', 'completed', 'voided', 'expired', ...
console.log(`Expires: ${status.expiresAt ?? 'never'}`);  // ISO deadline, or undefined when expiration is off

// getStatus returns the document-level status (and the expiration deadline). For per-signer detail:
const { recipients, summary } = await TurboSign.getRecipients(documentId);
console.log(`${summary.completed}/${summary.total} signed, waiting on ${summary.waitingOn}`);

for (const recipient of recipients) {
  // 'pending' | 'viewed' | 'completed' | 'voided' | 'expired'
  console.log(`  ${recipient.name}: ${recipient.effectiveStatus}`);
}

// 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
signature Signature field (draw or type)
initials Initials field
text Free-form text input
date Date stamp
checkbox Checkbox / agreement — also the controlling field for conditional (IF/THEN) logic
full_name Full name
first_name First name
last_name Last name
email Email address
title Job title
company Company name

Conditional (IF/THEN) fields

Any field accepts an optional metadata object for conditional logic. Set metadata.fieldKey on a controlling checkbox, then set metadata.conditional (controllingFieldKey, operator: is_checked | is_not_checked, action: show | unlock) on a dependent field that references that key. show hides the dependent field until the condition is met; unlock keeps it visible but read-only until met. See each SDK's README "Conditional (IF/THEN) Fields" section for the language-specific form.


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