@sendkit-ai/cli
v1.1.1
Published
SendKit CLI — interact with the SendKit platform from your terminal
Readme
@sendkit-ai/cli
The official command-line interface for SendKit — a complete email outreach platform. Manage campaigns, leads, mailboxes, inbox, analytics, and more — all from your terminal.
Installation
npm install -g @sendkit-ai/cliOr run without installing:
npx @sendkit-ai/cli --helpQuick Start
# 1. Authenticate with your API key
sendkit auth login
# 2. Select a workspace
sendkit workspaces list
sendkit workspaces use <workspace-id>
# 3. Start working
sendkit campaigns list
sendkit leads list
sendkit analytics overviewAuthentication
SendKit supports two types of API keys:
- Platform keys (
sk_user_...) — access all workspaces, required for workspace management - Workspace keys (
sk_...) — scoped to a single workspace, no header needed
Get your API key from app.sendkit.ai under Settings > API Keys.
# Interactive login (prompts for key)
sendkit auth login
# Direct login
sendkit auth login --key sk_user_your_key_here
# Check current session
sendkit auth whoami
# Logout
sendkit auth logoutGlobal Options
These flags work with any command:
| Flag | Description |
|------|-------------|
| --json | Output raw JSON instead of formatted tables |
| --api-key <key> | Override stored API key for this command |
| --workspace <id> | Override the active workspace |
| -V, --version | Show CLI version |
| -h, --help | Show help for any command |
sendkit --json campaigns list # JSON output for scripting
sendkit --api-key sk_user_xxx leads list # Use a different API key
sendkit --workspace <id> inbox list # Target a specific workspaceCommands Overview
| Command Group | Description | Subcommands |
|---------------|-------------|-------------|
| auth | Authentication | login, logout, whoami |
| workspaces | Workspace management | list, use, get, create, update, delete, members, add-member, remove-member |
| campaigns | Campaign lifecycle | list, get, create, update, start, pause, resume, delete, duplicate, analytics, preview-email, send-test-email |
| campaign-leads | Leads within campaigns | list, get, add, add-filter, import, action, update |
| leads | Global lead database | list, get, create, update, delete, bulk-create, import, export, search |
| mailboxes | Email mailboxes | list, get, create, update, delete, health, import, import-outlook, bulk, connect-google, connect-outlook |
| inbox | Conversations & replies | list, get, update, reply, scheduled, cancel-scheduled, tag, mark-read, dnc, delete, unread-count |
| analytics | Performance metrics | overview, campaign, mailboxes, daily |
| templates | Email templates | list, get, create, update, delete |
| webhooks | Webhook subscriptions | list, get, create, update, delete, test |
| dnc | Do Not Contact list | list, add, remove, import |
| enrichment | Lead enrichment | enrich, jobs, job, cancel, settings, settings-get, settings-configure, settings-remove, settings-update |
| tags | AI tagging labels | list, create, update, delete |
| warmup | Email warmup metrics | stats, mailbox |
| agents | AI reply agents | list, get, create, update, delete, generate-reply |
| integrations | CRM integrations | list, crm-status, crm-get, crm-connect, crm-disconnect, crm-pull, crm-push, crm-jobs |
| testing | Deliverability tests | inbox-placement-list, inbox-placement-create, inbox-placement-get, blacklist-list, blacklist-create, blacklist-get |
Run sendkit <command> --help for detailed usage of any command.
Campaigns
Create and manage email outreach campaigns with multi-step sequences, scheduling, and tracking.
# List and filter campaigns
sendkit campaigns list
sendkit campaigns list --status active --search "Q2"
# Get full campaign details with sequence breakdown
sendkit campaigns get <id>
# Create a campaign (minimal)
sendkit campaigns create --name "Q2 Outreach"
# Create with full configuration
sendkit campaigns create --name "Q2 Outreach" \
--mailbox-ids id1,id2 \
--timezone "Asia/Kolkata" \
--start-time "10:00" \
--end-time "18:00" \
--working-days "1,2,3,4,5" \
--track-opens --track-clicks --stop-on-reply \
--daily-send-limit 50
# Create with a sequence from a JSON file
sendkit campaigns create --name "Q2 Outreach" --sequence-file sequence.json
# Assign mailboxes by tag or provider
sendkit campaigns create --name "Outreach" --mailbox-tags "outreach" --mailbox-provider gmail
# Campaign lifecycle
sendkit campaigns start <id>
sendkit campaigns pause <id>
sendkit campaigns resume <id>
sendkit campaigns delete <id>
sendkit campaigns duplicate <id>
# Analytics with step-by-step breakdown
sendkit campaigns analytics <id>
# Preview personalized email before sending
sendkit campaigns preview-email <id> --step 0 --lead <leadId> --mailbox <mailboxId>
# Send a test email
sendkit campaigns send-test-email <id> --step 0 --mailbox <mailboxId> --email [email protected]Sequence Format
Sequences are defined as JSON arrays with email and wait steps. Names are auto-assigned ("Initial Email" → "Follow-up 1" → "Follow-up 2", etc.).
[
{
"type": "email",
"order": 0,
"subject": "Hi {{firstName}}, quick question",
"body": "<p>Hi {{firstName}},</p><p>Your email body here...</p>"
},
{
"type": "wait",
"order": 1,
"waitDays": 3
},
{
"type": "email",
"order": 2,
"subject": "Re: quick question",
"body": "<p>Just following up...</p>"
}
]Rules:
- Sequence must start with an
emailstep - Sequence must end with an
emailstep (not await) - A
waitstep (withwaitDays>= 1) is required between consecutive email steps - Step names are auto-assigned — do not set them manually
- Supports
{{firstName}},{{lastName}},{{companyName}},{{senderName}}, and custom variables
Save to a file and use --sequence-file:
sendkit campaigns create --name "Outreach" --sequence-file sequence.json
sendkit campaigns update <id> --sequence-file updated-sequence.jsonCampaign Leads
Manage leads within a specific campaign.
# List leads in a campaign
sendkit campaign-leads list <campaignId>
sendkit campaign-leads list <campaignId> --status active
# Get lead detail with email history
sendkit campaign-leads get <campaignId> <leadId>
# Add leads by ID
sendkit campaign-leads add <campaignId> --lead-ids id1,id2,id3
# Add leads by filter
sendkit campaign-leads add-filter <campaignId> --tags outreach --search "acme"
sendkit campaign-leads add-filter <campaignId> --select-all
# Import from CSV
sendkit campaign-leads import <campaignId> leads.csv
# Bulk actions (pause, resume, remove)
sendkit campaign-leads action <campaignId> --action pause --lead-ids id1,id2
sendkit campaign-leads action <campaignId> --action remove --select-all
# Update a specific lead's status or tags
sendkit campaign-leads update <campaignId> <leadId> --status paused --tags "follow-up"Leads
Manage your global lead database.
# List with filters
sendkit leads list
sendkit leads list --search "john" --tags outreach --limit 50
sendkit leads list --email-status valid --email-type business
sendkit leads list --email-verified true --has-company --has-phone
sendkit leads list --seg-protected false
# Get lead details
sendkit leads get <id>
# Create a lead
sendkit leads create --email [email protected] --first-name John --last-name Doe \
--company Acme --title CEO --phone +1234567890 --tags "outreach,q2"
# Update a lead
sendkit leads update <id> --first-name Jane --company "New Corp" --tags "updated"
# Bulk create from JSON file (max 5,000)
sendkit leads bulk-create leads.json --tag "batch-q2"
# Import from CSV
sendkit leads import leads.csv --tag "import-q2" --skip-duplicates
# Export to CSV
sendkit leads export --output leads.csv --search "acme" --tags "outreach"
sendkit leads export --email-verified true --country "US"
# Advanced search
sendkit leads search --email "@acme.com" --company "Acme" --country "US"
# Delete
sendkit leads delete --ids id1,id2,id3
sendkit leads delete --all --forceMailboxes
Manage email sending accounts with health monitoring and warmup tracking.
# List with advanced filters
sendkit mailboxes list
sendkit mailboxes list --status active --provider gmail --tags "outreach"
sendkit mailboxes list --warmup-enabled true --warmup-health good
sendkit mailboxes list --high-bounce-rate --min-health-score 80
sendkit mailboxes list --not-in-campaign --connection-type oauth
sendkit mailboxes list --untagged --in-active-campaign
# Get details and health check
sendkit mailboxes get <id>
sendkit mailboxes health <id>
# Create SMTP mailbox
sendkit mailboxes create --email [email protected] --smtp-host smtp.co.com \
--smtp-port 587 --smtp-user [email protected] --smtp-pass xxx \
--display-name "My Mailbox" --daily-limit 30
# Import mailboxes from CSV
sendkit mailboxes import mailboxes.csv --tag "batch-1"
sendkit mailboxes import-outlook outlook.csv
# Bulk operations
sendkit mailboxes bulk --operation enableSending --mailbox-ids id1,id2
sendkit mailboxes bulk --operation checkDNS --select-all
sendkit mailboxes bulk --operation startWarmup --mailbox-ids id1,id2
sendkit mailboxes bulk --operation addTags --select-all --tags "new-tag"
sendkit mailboxes bulk --operation updateDailyLimit --select-all --daily-limit 30
# OAuth connect
sendkit mailboxes connect-google
sendkit mailboxes connect-outlookInbox
Manage conversation threads with leads — reply, tag, schedule, and track.
# List conversations
sendkit inbox list
sendkit inbox list --status unread --tag interested --campaign <id>
# Get full conversation thread with messages and scheduled replies
sendkit inbox get <id>
# Update conversation
sendkit inbox update <id> --mark-read
sendkit inbox update <id> --ai-tag interested
sendkit inbox update <id> --tags "vip,priority"
# Reply (immediate or scheduled)
sendkit inbox reply <id> --body "Thanks for reaching out!" --mailbox <mailboxId>
sendkit inbox reply <id> --body "Follow up" --schedule "2025-01-15T10:00:00Z"
sendkit inbox reply <id> --body "See attached" --cc "[email protected]" --bcc "[email protected]"
# Manage scheduled replies
sendkit inbox scheduled <id>
sendkit inbox cancel-scheduled <id> <replyId>
# Bulk operations
sendkit inbox tag --ids id1,id2 --tag "interested"
sendkit inbox mark-read --ids id1,id2,id3
sendkit inbox dnc --ids id1,id2
sendkit inbox dnc --select-all --campaigns id1 --tags interested
sendkit inbox delete --ids id1,id2
sendkit inbox delete --select-all --campaigns id1
# Unread count
sendkit inbox unread-count
sendkit inbox unread-count --campaign <id>Analytics
View performance metrics across your workspace, campaigns, mailboxes, and daily trends.
# Workspace-wide overview
sendkit analytics overview
# Per-campaign breakdown with step analytics
sendkit analytics campaign <id>
# Mailbox performance
sendkit analytics mailboxes
# Daily trends
sendkit analytics daily
sendkit analytics daily --from 2025-01-01 --to 2025-01-31Stats display as number (percentage%) — e.g. 72 (48.0%) for opened emails.
Templates
Manage reusable email templates with single-letter shortcuts.
sendkit templates list
sendkit templates get <id>
sendkit templates create --name "Follow Up" --content "Hi {{firstName}}..." --shortcut "A"
sendkit templates update <id> --name "New Name" --content "Updated content"
sendkit templates delete <id>Shortcuts must be a single uppercase letter (A-Z).
Webhooks
Subscribe to events and receive real-time notifications.
sendkit webhooks list
sendkit webhooks get <id>
sendkit webhooks create --name "Reply Hook" --url "https://myapp.com/hook" --events "email.replied,email.bounced"
sendkit webhooks update <id> --events "email.replied,email.opened" --status active
sendkit webhooks delete <id>
sendkit webhooks test <id>DNC — Do Not Contact
Manage your suppression list to prevent sending to specific emails or domains.
sendkit dnc list
sendkit dnc list --type email --limit 50
sendkit dnc add --emails "[email protected],[email protected]" --type email --reason "complaint"
sendkit dnc remove --emails "[email protected]"
sendkit dnc import --emails "[email protected],[email protected]" --type email --reason "complaint"Enrichment
Enrich leads with email verification, phone numbers, and SEG detection.
# Enrich leads
sendkit enrichment enrich --lead-ids id1,id2 --types email --provider enrich
sendkit enrichment enrich --lead-ids id1,id2 --types email,phoneEnrichment --provider leadmagic
# Manage enrichment jobs
sendkit enrichment jobs
sendkit enrichment job <jobId>
sendkit enrichment cancel <jobId>
# Provider settings
sendkit enrichment settings
sendkit enrichment settings-get leadmagic
sendkit enrichment settings-configure leadmagic --provider-key "lm_xxx"
sendkit enrichment settings-remove leadmagicTags
Manage AI tagging labels used for automatic conversation classification.
sendkit tags list
sendkit tags create --name "Interested" --description "Lead showed interest" --color "#22c55e"
sendkit tags update "Interested" --description "Updated desc" --color "#ef4444"
sendkit tags delete "Interested"Warmup
Monitor email warmup progress and deliverability metrics.
sendkit warmup stats
sendkit warmup stats --days 14 --search "gmail"
sendkit warmup mailbox <mailboxId>
sendkit warmup mailbox <mailboxId> --days 60Agents — AI Reply
Create AI agents that generate contextual replies to lead conversations.
sendkit agents list
sendkit agents get <id>
sendkit agents create --name "Sales Bot" --company-name "Acme Inc" --tone "professional" --role "SDR"
sendkit agents update <id> --name "Updated Bot" --tone "friendly"
sendkit agents delete <id>
sendkit agents generate-reply <agentId> --conversation <conversationId> --context "They asked about pricing"Integrations — CRM
Connect and sync with CRM platforms like HubSpot, Pipedrive, and more.
# Overview
sendkit integrations list
sendkit integrations crm-status
# Connect / disconnect
sendkit integrations crm-connect hubspot --crm-key "hk_xxx"
sendkit integrations crm-disconnect hubspot
# Sync leads
sendkit integrations crm-pull hubspot
sendkit integrations crm-pull hubspot --entity-type people --campaign <id>
sendkit integrations crm-push hubspot --lead-ids id1,id2 --fields "email,firstName,lastName"
sendkit integrations crm-push hubspot --select-all --include-engagement
# Monitor sync jobs
sendkit integrations crm-jobs
sendkit integrations crm-jobs --status pending --crm-type hubspotTesting — Inbox Placement & Blacklist
Test email deliverability and monitor blacklist status.
# Inbox placement tests
sendkit testing inbox-placement-list
sendkit testing inbox-placement-create --name "Q2 Test" --mailbox-ids id1,id2
sendkit testing inbox-placement-create --name "All Test" --select-all --subject "Test" --body "Hello"
sendkit testing inbox-placement-get <id>
# Blacklist tests
sendkit testing blacklist-list
sendkit testing blacklist-create --name "IP Check" --mailbox-ids id1,id2
sendkit testing blacklist-create --name "All Check" --select-all
sendkit testing blacklist-get <id>JSON Output & Scripting
All commands support --json for machine-readable output, making it easy to integrate with scripts and pipelines.
# Get campaign IDs
sendkit --json campaigns list | jq '.[].id'
# Export unread conversation count
sendkit --json inbox unread-count | jq '.unread'
# Pipe lead emails to a file
sendkit --json leads list --limit 100 | jq -r '.[].email' > emails.txtRequirements
- Node.js >= 18.0.0
License
MIT
