SignWell CLI - eSignatures from your terminal

Sending documents for electronic signatures shouldn’t require clicking through a web UI every time. sw is a command-line interface for SignWell’s eSignature API that lets developers create, send, track, and download signed documents without leaving the terminal.

npm install -g @signwell/cli
sw auth login

What you can actually do with it

sw templates use tmpl_abc123 \
  --recipient "Signer:[email protected]:Signer Name" \
  --send

Send a document for signature in one command:

Templates have their fields baked in, so one command fills and sends them. Prefer to start from a raw file? sw documents create sends too — no template required — you just place the fields first: in the editor on the draft, via embedded --text-tags, or by passing field coordinates at creation. Add --signing-order for sequential signing.

sw bulk-send create --template tmpl_abc123 --csv recipients.csv

Bulk-send from a CSV - NDAs to 200 vendors, offer letters to a new cohort, anything - really:

sw documents list --status completed --person [email protected] --start-date 2026-01-01
sw documents list --query "name:NDA AND status:pending"
sw documents download doc_xyz789 --open

Check what’s pending, download what’s done:

Filter by --status, --person, --name, --start-date/--end-date, --document-ids, or a raw --query string — mix and match to find exactly the docs you need. The same flags work on sw templates list.

sw documents remind doc_xyz789

Fire off a reminder to signers who are sitting on it:

Every command supports --json for structured output and --quiet for silent execution, so it fits wherever you need it—scripts, pipelines, cron jobs.

Why the SignWell CLI exists

If you regularly send documents for electronic signatures, the friction adds up. Open the browser, upload a file, fill in recipients, and click send. Repeat. For one-off signatures, that’s fine. For teams sending contracts, offer letters, or compliance docs on a recurring basis, it’s a time sink.

The SignWell CLI collapses that workflow into composable commands you can run directly or wire into any system you already use.

Built for automation

Every command works non-interactively. Set SIGNWELL_API_KEY and SIGNWELL_AUTO_CONFIRM as environment variables, and the CLI runs headless - no prompts, no waiting for input.

This means you can plug it into:

CI/CD pipelines

Generate and send agreements as part of a deploy or onboarding flow

Cron jobs

Nightly reminder sends for unsigned documents

AI agents

Claude Code, Cursor, Windsurf, Codex, Copilot, Gemini CLI, and Roo Code all have installable skills (sw skills install)

Automation bots

OpenClaw or any orchestration layer that can shell out

The sw schema command prints JSON schemas for any operation, so LLMs and automation tools know exactly what arguments to pass without guessing.

sw schema documents.create  # Returns full JSON schema for document creation

Profiles for multiple accounts

Switch between production and staging, or manage multiple client accounts:

sw profile add staging --api-key sk_test_...
sw profile use staging
sw documents list  # Now hits staging

Or override per-command with --profile production or SIGNWELL_API_KEY.

Templates + bulk send = Less repetitive work

Create a template once with placeholder roles and fields, then reuse it:

sw templates use tmpl_abc123 \
  --recipient "Signer:[email protected]:Signer Name" \
  --field "company_name=Acme Corp" \
  --send

Need to send that document to 500 people? Export a CSV, validate it, and send:

sw bulk-send validate --template tmpl_abc123 --csv batch.csv
sw bulk-send create --template tmpl_abc123 --csv batch.csv --confirm

Dry-run and row-limiting flags let you stage rollouts instead of sending everything at once.

Webhooks without the pain

Test eSignature webhook integrations locally without deploying anything:

This starts a local HTTP server that accepts POST requests, verifies HMAC signatures if --secret is provided, and forwards events to your app. You’ll need to register the webhook URL with SignWell separately (via sw webhooks create or a tunnel like ngrok).

sw webhooks listen --port 3001 --forward http://localhost:4000/hooks

eSignature CLI: The practical stuff

  • Node.js 18+ required
  • Exit codes are meaningful (0 success, 3 auth error, 4 rate limited, etc.) - your scripts can branch on them
  • Automatic retries with exponential backoff on rate limits and transient errors
  • Test mode (--test-mode) creates real API objects without sending actual emails - safe for development
  • MIT licensed, open source at github.com/Bidsketch/signwell-cli
  • SOC 2 Type II, HIPAA, GDPR, eIDAS, ESIGN, and UETA compliant eSignatures - the CLI uses the same secure API as the rest of SignWell. Learn more about SignWell’s security here.

Get started with SignWell CLI

You can run these commands to get started:

npm install -g @signwell/cli
sw auth login --api-key YOUR_API_KEY
sw me  # Verify you're connected
sw documents list  # See what's already there

Or you can skip the global install entirely:

npx @signwell/cli documents list

If you’re using an AI coding agent, install the skill and let it handle the rest:

sw skills install

Frequently Asked Questions

Simple, Compliant eSignatures For Your Whole Team.

  • Start for free.
  • Upgrade when you’re ready.
  • No contracts.
SignWell for your whole team