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
sw templates use tmpl_abc123 \ --recipient "Signer:[email protected]:Signer Name" \ --send
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
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
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
Every command supports --json for structured output and --quiet for silent execution, so it fits wherever you need it—scripts, pipelines, cron jobs.
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.
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:
Generate and send agreements as part of a deploy or onboarding flow
Nightly reminder sends for unsigned documents
Claude Code, Cursor, Windsurf, Codex, Copilot, Gemini CLI, and Roo Code all have installable skills (sw skills install)
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 creationSwitch 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 stagingOr override per-command with --profile production or SIGNWELL_API_KEY.
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.
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
--test-mode) creates real API objects without sending actual emails - safe for developmentYou 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
The SignWell CLI (sw) is an open-source command-line tool for sending eSignatures programmatically. It wraps the SignWell eSignature API so developers can create, send, track, and download signed documents without using the web app.
Run npm install -g @signwell/cli, then authenticate with sw auth login. Node.js 18 or later is required. You can also run it without installing via npx @signwell/cli.
Send documents for eSignature, run bulk sends from CSV, manage templates, list and download completed documents, send reminders, listen for webhooks locally, and switch between multiple SignWell accounts. Every command supports --json output for scripting.
Yes. Run sw skills install and the CLI registers installable skills for Claude Code, Cursor, Windsurf, Codex, Copilot, Gemini CLI, and Roo Code. AI agents can also use sw schema <command> to retrieve JSON schemas for any operation.
Yes. Set SIGNWELL_API_KEY and SIGNWELL_AUTO_CONFIRM as environment variables, and the CLI runs headless with no prompts. Exit codes are meaningful (0 success, 3 auth error, 4 rate limited), so your pipelines can branch on them.
You can use profiles. sw profile add staging --api-key sk_test_... and sw profile use staging to switch. You can also override per-command with --profile or SIGNWELL_API_KEY.
Yes. The --test-mode flag creates real API objects without sending actual emails to recipients, so you can build and test integrations safely.
SignWell is SOC 2 Type II, HIPAA, GDPR, eIDAS, ESIGN, and UETA compliant. The CLI uses the same authenticated API and webhook signature verification as the rest of the SignWell platform to collect electronic signatures.
sw webhooks listen --port 3001 --forward http://localhost:4000/hooks runs a local server that verifies HMAC signatures and forwards events to your app. Pair it with a tunnel like ngrok if you need a public URL for SignWell to hit.
The CLI is open source at github.com/Bidsketch/signwell-cli. You can also file issues or open PRs there.