SDKs

How the SDK relates to the API

eSign Launchpad's REST API at api.esignlaunchpad.com is the canonical interface. Every capability the platform offers is available via HTTPS and an OAuth 2.0 Authorization: Bearer header. You can integrate directly using any HTTP client in any language. See the authentication guide for the credential types and token flow.

The SDKs below are convenience wrappers auto-generated from the OpenAPI specification that backs the API. They do not add capabilities. Each SDK is a one-to-one mapping of API operations to idiomatic method calls in a given language, with typed request and response models. You get editor autocomplete and compile-time checks instead of writing raw JSON. Pick an SDK when you want your integration to read cleanly in the language you already write. Use the REST API directly when you need the thinnest possible dependency footprint or when your language is not listed below.

Every SDK regenerates each time the API spec changes, so the SDK is always a faithful mirror of what the live API accepts and returns.

Download source

Source zips are available for each language. Each zip contains a complete, buildable generated client (models, API classes, a README, and the language's native build file, for example csproj, package.json, pyproject.toml, pom.xml, go.mod, Gemfile, or composer.json). Drop the zip into your project, build locally, and you have a working client.

Loading available SDKs…

MCP server (for AI agents)

Alongside the language SDKs, eSign Launchpad ships a Model Context Protocol (MCP) server that lets AI agents like Claude, Cursor, and other MCP-aware tools call the API directly. It is the same set of operations as the SDKs, exposed as MCP tools so an agent can create a package, add signers, send for signature, check status, and download the result without you writing any wrapper code. The MCP server is published to npm as @esignlaunchpad/mcp-server and is the one component today that installs from a public registry.

Step 1 - Generate a credential

In your eSign Launchpad portal, go to Settings › API and click Generate. You can choose either credential type - the MCP server (v2.0.0 and later) auto-detects which format you provide and authenticates correctly:

  • Personal Access Token (PAT) - a single long bearer string. Easiest for individual use; copy once and you're done. Used directly as Authorization: Bearer <token>.
  • OAuth client credentials - a composite clientId:clientSecret string. The MCP server exchanges this at /connect/token for a 1-hour access token, caches it in process, and refreshes automatically before expiry. Pick this if your security posture requires short-lived access tokens at rest or if you want standards-compliant OAuth for compliance reviews.

Scope the credential to the permissions your agent needs. Typical agent setups want sign.package.read + sign.package.create + sign.package.send, optionally sign.template.read. The credential is shown only once - treat it like a production secret. See the authentication guide for the full background on credential types, scopes, and the underlying OAuth 2.0 flows.

Step 2 - Pick a launch mode

All examples below show the credential as <your_credential> - paste in either a PAT or an clientId:clientSecret string. The server detects the format on its own.

Option A. On-demand via npx (recommended for MCP clients)

No install step. Your MCP client spawns the server fresh each time it starts a session, so you always get the latest version that's been published.

ESIGN_API_KEY=<your_credential> npx -y @esignlaunchpad/mcp-server

Option B. Global install

Install once, then invoke the bin shim. Useful if you want a pinned version, faster startup, or to run the server outside an MCP client (for example, behind your own bridge process).

npm install -g @esignlaunchpad/mcp-server

# The package exposes an `esign-mcp` bin
ESIGN_API_KEY=<your_credential> esign-mcp

Option C. Local dev install

npm install @esignlaunchpad/mcp-server
ESIGN_API_KEY=<your_credential> npx esign-mcp

Step 3 - Wire it into your AI client

Claude Desktop

Open claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows) and add an entry under mcpServers:

{
  "mcpServers": {
    "esign-launchpad": {
      "command": "npx",
      "args": ["-y", "@esignlaunchpad/mcp-server"],
      "env": {
        "ESIGN_API_KEY": "<your_credential>"
      }
    }
  }
}

Restart Claude Desktop. The eSign Launchpad tools appear in the tool picker.

Cursor

Open Cursor's MCP settings (Settings › Features › Model Context Protocol) and add an entry of type command:

{
  "mcpServers": {
    "esign-launchpad": {
      "command": "npx",
      "args": ["-y", "@esignlaunchpad/mcp-server"],
      "env": {
        "ESIGN_API_KEY": "<your_credential>"
      }
    }
  }
}

Other MCP-compatible clients

Any client that supports the standard command/args/env shape above will work. The server speaks MCP over stdio.

Environment variables

Variable Required Default Purpose
ESIGN_API_KEY Yes - Your eSign Launchpad credential. Either a Personal Access Token (single bearer string) or an OAuth clientId:clientSecret composite. The server detects which format you provided by presence of : and authenticates accordingly. Despite the historical API key name, the legacy eslp_live_… static-key format is no longer supported.
ESIGN_API_URL No https://api.esignlaunchpad.com Override the API base URL. Useful for staging or for self-hosted deployments.
ESIGN_SPEC_URL No {ESIGN_API_URL}/openapi/tenant-api.json Override the OpenAPI spec the server reads at startup. Tools are generated dynamically from this spec, so pointing it at a fork lets you preview tool changes without re-publishing.

Verify it's working

Run the server directly from a terminal - if it starts cleanly and prints the API base URL it's reaching, your config is good:

ESIGN_API_KEY=<your_credential> npx -y @esignlaunchpad/mcp-server

The server listens on stdio, so you'll see the startup banner and then it will sit quietly waiting for an MCP client to connect. Ctrl-C to exit. From your MCP client, asking the agent "list my recent eSign packages" or "create a draft package called Test" is the fastest smoke test that the connection is live and the credential has the right scopes.

Upgrading from MCP server v1.x

If you installed the MCP server before v2.0.0, the ESIGN_API_KEY environment variable used to take a legacy static eslp_live_… API key and the server sent it as an X-API-KEY header. That auth path no longer exists on the server. Generate a fresh PAT or OAuth credential from Settings › API and replace the value of ESIGN_API_KEY. No other change is required - the env var name and config shape are unchanged.

Compiled packages for the language SDKs

The build pipeline also produces compiled artifacts for the languages with a native package format: .nupkg for C#, .tgz for TypeScript and Node.js, .whl for Python, and .jar for Java. The plan is to publish these directly to the standard package registries so they install with a single command:

  • C#. NuGet. dotnet add package ESignLaunchpad.ApiClient
  • TypeScript or Node.js. npm. npm install @esignlaunchpad/api-client
  • Python. PyPI. pip install esignlaunchpad
  • Java. Maven Central.
Language-SDK registry publishing is on the roadmap but not yet live. The MCP server above is the only component currently published to a public registry. Until the language SDKs ship to their respective registries, grab the source zip for your language, build it once locally, and reference the produced .nupkg, .tgz, .whl, or .jar from your project. Instructions for each language are in the zip's README.

Using the SDKs

Each zip includes a language-specific README with a hello-world example. The browsable API reference in the left sidebar covers the method signatures and model shapes for every SDK, regardless of language, because all SDKs share the same underlying operations.


Documentation for eSign Launchpad API

Documentation for API Endpoints

All URIs are relative to https://api.esignlaunchpad.com

Class Method HTTP request Description
AnnotationFieldTypesApi getAnnotationFieldTypes GET /api/v1/annotation-field-types Get annotation field-type sizing rules
AnnotationsApi applyDetectedTags POST /api/v1/packages//apply-detected-tags Apply detected text tags as annotations
AnnotationsApi createAnnotation POST /api/v1/packages//annotations Create an annotation
AnnotationsApi createAnnotationsBulk POST /api/v1/packages//annotations/bulk Create annotations in bulk
AnnotationsApi deleteAnnotation DELETE /api/v1/packages//annotations/ Delete an annotation
AnnotationsApi getAnnotation GET /api/v1/packages//annotations/ Get an annotation by ID
AnnotationsApi listAnnotations GET /api/v1/packages//annotations List annotations in a package
AnnotationsApi updateAnnotation PUT /api/v1/packages//annotations/ Update an annotation
AnnotationsApi validateAnnotations POST /api/v1/packages//annotations/validate Validate annotations for sending
BulkSendApi bulkSendFromTemplate POST /api/v1/templates//bulk-send
BulkSendApi getBulkSendJob GET /api/v1/bulk-send-jobs/
BulkSendApi listBulkSendJobs GET /api/v1/bulk-send-jobs
BulkSendApi retryBulkSendFailed POST /api/v1/bulk-send-jobs//retry-failed
DocumentsApi abortDocumentUpload DELETE /api/v1/packages//uploads/ Abort upload session
DocumentsApi commitDocumentUpload POST /api/v1/packages//uploads//commit Commit chunked upload
DocumentsApi deleteDocument DELETE /api/v1/packages//documents/ Delete a document
DocumentsApi detectDocumentTags POST /api/v1/packages//documents//detect-tags Detect text tags
DocumentsApi getDetectedTags GET /api/v1/packages//documents//detected-tags Get cached detected tags
DocumentsApi getDocument GET /api/v1/packages//documents/ Get document metadata
DocumentsApi getDocumentRemovalImpact GET /api/v1/packages//documents//removal-impact Preview document removal impact
DocumentsApi getDocumentUploadStatus GET /api/v1/packages//uploads/ Get upload session status
DocumentsApi getOriginalDownloadUrl GET /api/v1/packages//documents//download Download original file
DocumentsApi getPdfDownloadUrl GET /api/v1/packages//documents//download-pdf Download PDF version
DocumentsApi getSignedDownloadUrl GET /api/v1/packages//documents//download-signed Download signed document
DocumentsApi importDocumentFromUrl POST /api/v1/packages//documents/import-url Import a document from a URL
DocumentsApi initiateDocumentUpload POST /api/v1/packages//uploads Initiate chunked upload
DocumentsApi listDocuments GET /api/v1/packages//documents List documents
DocumentsApi stageDocumentBlock PUT /api/v1/packages//uploads//blocks/ Stage upload block
DocumentsApi uploadDocumentDirect POST /api/v1/packages//documents Upload a document directly
MeApi apiV1MeGet GET /api/v1/me
OutlookAddinManifestApi apiV1OutlookAddinManifestFingerprintGet GET /api/v1/outlook-addin/manifest-fingerprint
OutlookTelemetryApi apiV1TelemetryOutlookPost POST /api/v1/telemetry/outlook
PackagesApi apiV1PackagesIdAnnotationsAnnotationIdAttachmentGet GET /api/v1/packages//annotations//attachment Get attachment download URL
PackagesApi archivePackage POST /api/v1/packages//archive Archive a package
PackagesApi bulkArchivePackages POST /api/v1/packages/bulk-archive Bulk archive packages
PackagesApi bulkDeletePackages POST /api/v1/packages/bulk-delete Bulk delete packages
PackagesApi cancelSchedule POST /api/v1/packages//cancel-schedule Cancel a scheduled send
PackagesApi clonePackage POST /api/v1/packages//clone Clone a package
PackagesApi confirmOverageAndSendPackage POST /api/v1/packages//overage/confirm-and-send Confirm Overage And Send Package
PackagesApi createAndSendPackageJson POST /api/v1/packages/create-and-send/json Create and send package (JSON)
PackagesApi createAndSendPackageMultipart POST /api/v1/packages/create-and-send Create and send package (multipart)
PackagesApi createPackage POST /api/v1/packages Create a new signing package
PackagesApi deletePackage DELETE /api/v1/packages/ Delete a draft package
PackagesApi exportAuditTrail GET /api/v1/packages//audit-trail/export Export audit trail
PackagesApi getAuditTrail GET /api/v1/packages//audit-trail Get the audit trail for a package
PackagesApi getCertificateDownloadUrl GET /api/v1/packages//certificate Get certificate download URL
PackagesApi getPackage GET /api/v1/packages/ Get a package by ID
PackagesApi getPackageDownloadUrl GET /api/v1/packages//download Get package download URL
PackagesApi getPackageSendImpact GET /api/v1/packages//send-impact Get Package Send Impact
PackagesApi listPackages GET /api/v1/packages List packages
PackagesApi resendPackage POST /api/v1/packages//resend Resend notifications
PackagesApi sendPackage POST /api/v1/packages//send Send a package for signing
PackagesApi unarchivePackage POST /api/v1/packages//unarchive Unarchive a package
PackagesApi updatePackage PUT /api/v1/packages/ Update a draft package
PackagesApi updatePackageReminders PATCH /api/v1/packages//reminders Update reminder settings
PackagesApi validatePackage POST /api/v1/packages//validate Validate a package before sending
PackagesApi verifyAuditIntegrity GET /api/v1/packages//audit-trail/verify Verify audit trail integrity
PackagesApi voidPackage POST /api/v1/packages//void Void a package
ShareLinksApi listShareLinks GET /api/v1/share-links List Share Links
ShareLinksApi mintShareLink POST /api/v1/packages//share-links Mint Share Link
ShareLinksApi revokeShareLink DELETE /api/v1/share-links/ Manually revoke a share link.
SignersApi addSigner POST /api/v1/packages//signers Add a signer to a package
SignersApi addSignersBulk POST /api/v1/packages//signers/bulk Add signers in bulk
SignersApi getSigner GET /api/v1/packages//signers/ Get a signer's details
SignersApi getSigningUrl POST /api/v1/packages//signers//signing-url Get embedded signing URL
SignersApi listSigners GET /api/v1/packages//signers List signers in a package
SignersApi reassignSigner POST /api/v1/packages//signers//reassign Reassign a signer
SignersApi removeSigner DELETE /api/v1/packages//signers/ Remove a signer from a package
SignersApi reorderSigners PUT /api/v1/packages//signers/reorder Reorder signers
SignersApi resendToSigner POST /api/v1/packages//signers//resend Resend signing notification
SignersApi resendToSignersBulk POST /api/v1/packages//signers/resend-bulk Bulk resend notifications
SignersApi updateSigner PUT /api/v1/packages//signers/ Update a signer
SigningGroupsApi addSigningGroupMember POST /api/v1/signing-groups//members Add a member to a signing group
SigningGroupsApi bulkDeleteSigningGroups POST /api/v1/signing-groups/bulk-delete Bulk delete signing groups
SigningGroupsApi createSigningGroup POST /api/v1/signing-groups Create a signing group
SigningGroupsApi deleteSigningGroup DELETE /api/v1/signing-groups/ Delete a signing group
SigningGroupsApi getSigningGroup GET /api/v1/signing-groups/ Get a signing group
SigningGroupsApi listSigningGroupMembers GET /api/v1/signing-groups//members List signing group members
SigningGroupsApi listSigningGroups GET /api/v1/signing-groups List signing groups
SigningGroupsApi removeSigningGroupMember DELETE /api/v1/signing-groups//members/ Remove a signing group member
SigningGroupsApi updateSigningGroup PUT /api/v1/signing-groups/ Update a signing group
TagsApi buildTag GET /api/v1/tags/build Build a tag in all formats
TagsApi convertTag POST /api/v1/tags/convert Convert a tag between formats
TagsApi detectTagFormat GET /api/v1/tags/detect-format Detect tag format
TagsApi listTagTypes GET /api/v1/tags/types List supported tag types
TagsApi parseTag POST /api/v1/tags/parse Parse a tag string
TagsApi validateTag POST /api/v1/tags/validate Validate a tag string
TemplatesApi abortTemplateUpload DELETE /api/v1/templates//uploads/ Abort a template upload session
TemplatesApi addTemplateRole POST /api/v1/templates//roles Add a role to a template
TemplatesApi bulkAddTemplateAnnotations POST /api/v1/templates//documents//annotations/bulk Bulk add annotations
TemplatesApi bulkDeleteTemplates POST /api/v1/templates/bulk-delete Bulk delete templates
TemplatesApi commitTemplateUpload POST /api/v1/templates//uploads//commit Commit upload
TemplatesApi createPackageFromTemplate POST /api/v1/templates//use Create a package from a template
TemplatesApi createTemplate POST /api/v1/templates Create a new template
TemplatesApi deleteTemplate DELETE /api/v1/templates/ Delete a template
TemplatesApi detectTemplateDocumentTags POST /api/v1/templates//documents//detect-tags Detect document tags
TemplatesApi getTemplate GET /api/v1/templates/ Get a template by ID
TemplatesApi getTemplateDetectedTags GET /api/v1/templates//documents//detected-tags Get stored detected tags
TemplatesApi getTemplateDocumentRemovalImpact GET /api/v1/templates//documents//removal-impact Preview document removal impact
TemplatesApi getTemplateUploadStatus GET /api/v1/templates//uploads/ Get upload status
TemplatesApi initiateTemplateUpload POST /api/v1/templates//uploads Initiate document upload
TemplatesApi listTemplateAnnotations GET /api/v1/templates//annotations List template annotations
TemplatesApi listTemplateDocuments GET /api/v1/templates//documents List documents in a template
TemplatesApi listTemplateRoles GET /api/v1/templates//roles List roles in a template
TemplatesApi listTemplates GET /api/v1/templates List templates
TemplatesApi removeTemplateAnnotation DELETE /api/v1/templates//annotations/ Remove an annotation from a template
TemplatesApi removeTemplateDocument DELETE /api/v1/templates//documents/ Remove a document from a template
TemplatesApi removeTemplateRole DELETE /api/v1/templates//roles/ Remove a role from a template
TemplatesApi reorderTemplateRoles PUT /api/v1/templates//roles/reorder Reorder template roles
TemplatesApi resetTemplateConfiguration POST /api/v1/templates//reset Reset template configuration
TemplatesApi retryTemplateDocumentProcessing POST /api/v1/templates//documents//retry Retry document processing
TemplatesApi stageTemplateBlock PUT /api/v1/templates//uploads//blocks/ Stage upload block
TemplatesApi updateTemplate PUT /api/v1/templates/ Update a template
TemplatesApi updateTemplateAnnotation PUT /api/v1/templates//annotations/ Update an annotation
TemplatesApi updateTemplateRole PUT /api/v1/templates//roles/ Update a template role

Documentation for Models

Documentation for Authorization

ApiKey

  • Type: API key
  • API key parameter name: X-API-KEY
  • Location: HTTP header