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.
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:clientSecretstring. The MCP server exchanges this at/connect/tokenfor 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.
.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
- AddAnnotationApiItem
- AddSigningGroupMemberApiRequest
- AddTemplateRoleApiRequest
- AnnotationApiResponse
- AnnotationFieldTypeRuleDto
- AnnotationFieldTypesApiResponse
- AnnotationValidationApiResponse
- AnnotationValidationErrorDto
- AuditEventApiResponse
- AuditIntegrityApiResponse
- BulkAddAnnotationsApiRequest
- BulkAnnotationApiResponse
- BulkCreateAnnotationApiRequest
- BulkCreateSignerApiRequest
- BulkDeleteApiRequest
- BulkDeleteApiResponse
- BulkDeleteItemApiResponse
- BulkResendApiResponse
- BulkResendSignersApiRequest
- BulkSendApiRequest
- BulkSendAttempt
- BulkSendCounters
- BulkSendCycleSummary
- BulkSendJobListItem
- BulkSendJobListResponse
- BulkSendJobStatusResponse
- BulkSendQueuedResponse
- BulkSendRecipientApiRequest
- BulkSendRecipientView
- BulkSendRetryFailedRequest
- BulkSendRetryFailedResponse
- BulkSendRetryFailedSkippedRow
- BulkSendRoleMappingApiRequest
- BulkSignerApiResponse
- ClonePackageApiRequest
- CommitUploadApiRequest
- ConvertTagApiRequest
- ConvertTagResponse
- CreateAndSendPackageApiRequest
- CreateAnnotationApiRequest
- CreatePackageApiRequest
- CreatePackageFromTemplateApiRequest
- CreateSignerApiRequest
- CreateSigningGroupApiRequest
- CreateTemplateApiRequest
- CurrentStepApiResponse
- CurrentStepSignerApiResponse
- DetectFormatResponse
- DetectTagsApiRequest
- DetectedTagApiDto
- DetectedTagsApiResponse
- DocumentApiResponse
- DocumentDetailApiResponse
- DocumentRemovalImpactApiResponse
- DownloadUrlApiResponse
- ExternalAuthMetadataApiModel
- GetSigningUrlApiRequest
- ImportDocumentFromUrlApiRequest
- InitiateUploadApiRequest
- InlineDocumentApiRequest
- ListShareLinksResult
- MeResponse
- MintShareLinkApiRequest
- MintShareLinkResult
- OrphanedRoleApiDto
- OrphanedSignerApiDto
- OverageConsentRequiredResponse
- PackageFromTemplateApiResponse
- PackageListResponse
- PackageResponse
- PackageSendImpactApiResponse
- PackageSendImpactTypeDto
- PackageValidationApiResponse
- PackageValidationErrorDto
- ParseTagApiRequest
- ParsedTagDto
- ReassignSignerApiRequest
- ReorderRoleApiItem
- ReorderRolesApiRequest
- ReorderRolesApiResponse
- ReorderSignerApiItem
- ReorderSignersApiRequest
- ReorderSignersApiResponse
- RevokeShareLinkApiRequest
- RevokeShareLinkResult
- RoleMappingApiRequest
- SendPackageApiRequest
- ShareLinkSummary
- SignErrorResponse
- SignerApiResponse
- SigningGroupApiResponse
- SigningGroupListApiResponse
- SigningGroupMemberApiResponse
- SigningGroupMemberInputDto
- SigningUrlApiResponse
- TagBuildResponse
- TagTypeInfo
- TagValidationResponse
- TemplateAnnotationApiResponse
- TemplateApiResponse
- TemplateDocumentApiResponse
- TemplateDocumentRemovalImpactApiResponse
- TemplateListApiResponse
- TemplateRoleApiResponse
- UpdateAnnotationApiItem
- UpdateAnnotationApiRequest
- UpdatePackageApiRequest
- UpdateRemindersApiRequest
- UpdateSignerApiRequest
- UpdateSigningGroupApiRequest
- UpdateTemplateApiRequest
- UpdateTemplateRoleApiRequest
- UploadBlockApiResponse
- UploadCommitApiResponse
- UploadSessionApiResponse
- UploadStatusApiResponse
- ValidateTagApiRequest
- VoidPackageApiRequest
Documentation for Authorization
ApiKey
- Type: API key
- API key parameter name: X-API-KEY
- Location: HTTP header