CLI

On Node 18 or later, use npx send.ad with no install. Settings live in ~/.sendad/config.json, and the environment variable SEND_API_KEY · SEND_BASE_URL takes priority. Add --json to any command for machine-readable output.

CommandDescription
sendad login [--key K] [--base URL]Save your API key (prompts if omitted)
sendad whoamiWorkspace, role, balance
sendad balanceBalance, price per email, emails remaining
sendad lists list | create <name>Lists
sendad contacts list [--list L] [--q search] · add <email> [--first-name] [--list L] [--tag T]Contact
sendad contacts import <file.csv> --list <name|id>Import CSV (recognizes Mailchimp format)
sendad templates listList templates
sendad campaigns list | status <id> | report <id>View campaigns
sendad campaigns create --name N --subject S --list L (--design file.json | --html file.html)Create draft
sendad campaigns send <id> [--at ISO]Send or schedule
sendad send --to a@b.com --subject S (--html H | --text T | --html-file f)Single send
sendad ai "<brief>" [--list L] [--tone T] [--send | --at ISO]Brief → campaign (+ send). --send prints status until it finishes
sendad approvals · approve <id> [--at ISO] · reject <id> [--note]List items awaiting approval · approve (send now or scheduled) · reject (back to draft)
sendad autopilot mode [manual|approve|auto]View/change autopilot mode
sendad autopilot list | create --name N --brief "template" [--cadence weekly --dow 2 --hour 10] [--list L] [--rss URL] | run <id> | pause <id> | resume <id>Recurring run plans (brief template {{date}} {{recent_posts}} {{products}} {{free_text}})
sendad learningLearning memo — what we learned from performance · best send times
sendad domains list | add <domain> | verify <id>Sending domain
sendad mcpRun the MCP server (stdio)
npx send.ad login --key sd_live_…\nnpx send.ad contacts import ./subscribers.csv --list customers\nnpx send.ad ai "20% off holiday gift sets, through 11/25" --list customers      # → awaiting approval + approval link\nnpx send.ad approvals && npx send.ad approve <id>                       # approve → send\nnpx send.ad autopilot create --name weekly-news --brief "{{date}} This week: {{recent_posts}}" --cadence weekly --dow 2 --hour 10 --list customers --rss https://blog.example/rss\nnpx send.ad learning                                                  # what we learned from performance\nnpx send.ad campaigns report <id> --json

sendad ai … --send If the workspace mode is approve , it stops at awaiting approval and gives you the approval link (exit 0). auto , it sends as soon as the guardrails pass; manual leaves a draft (sends with --send). --wait prints status until the send completes.