Developer API

Electronic signature API for US products

Add legally binding e-signatures to your own app under the ESIGN Act and UETA. Flat $39/mo, unlimited API calls, Bitcoin-anchored audit trail, and a typed TypeScript SDK.

Headless & agent-friendly

Upload, place fields, invite signers and send — entirely server-side. No browser, no magic link, no human in the loop.

Bitcoin-anchored proof

Every signature gets an OpenTimestamps attestation. Verifiable forever, even if we disappear.

Typed SDK

npm install @nexis-dev/justsignnow-sdk — full TypeScript autocompletion, ESM, works on Node, Bun and edge runtimes.

Quick start

Get your API key from the dashboard settings, then run a full signing round in one call — upload, field placement, signer invitations and dispatch:

import { JustSignNow } from '@nexis-dev/justsignnow-sdk'
import fs from 'fs'

const jsn = new JustSignNow(process.env.JSN_API_KEY!)

const fileBase64 = fs.readFileSync('./contract.pdf').toString('base64')

// Upload → place fields → invite signers → send
const run = await jsn.signatures.run({
  document: { fileBase64, name: 'contract.pdf' },
  fields: [
    // PDF points, from the TOP-LEFT of the page (1-based pages)
    { id: 'sig',  type: 'signature', page: 1, x: 72, y: 620, width: 180, height: 40 },
    { id: 'date', type: 'date',      page: 1, x: 72, y: 585, width: 120, height: 18 },
  ],
  signers: [{ email: 'signer@example.com', name: 'Jane Doe' }],
})

// Block until everyone has signed
await jsn.documents.waitForCompletion(run.documentId)

const { blob: signedPdf } = await jsn.documents.downloadSignedPdf(run.documentId)
const { blob: cert } = await jsn.documents.downloadCertificate(run.documentId)

Prefer a human in the browser? Use editorSessions.create() to mint a single-use editor link instead.

Key scopes

  • documents.write — upload documents and place fields
  • documents.read — read documents, signers and download artefacts
  • signatures.send — invite signers and dispatch signing requests

Placing fields is the part people get wrong most often — coordinates, block sizing and recipient assignment are covered in the field placement guide before you send anything for signature.

The interactive reference below is generated from our OpenAPI 3.1 spec and includes live request examples for every endpoint.