
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
overloop-cli
Advanced tools
Overloop CLI - Command line interface for the Overloop sales automation API v2. Manage prospects, campaigns, sourcings, and more from the terminal or AI agents.
⚠️ Beta Notice: This CLI is currently in beta. APIs and tool interfaces may change between versions. Please report any issues on GitHub.
Sales automation CLI for developers and AI agents — Manage prospects, campaigns, sourcings, and more from the terminal.
The Overloop CLI provides a command-line interface to the Overloop API v2, enabling developers and AI agents to automate sales outreach workflows programmatically.
npm install -g overloop-cli
Install the Overloop skill for your AI agent (Cursor, Claude Code, etc.):
npx skills add sortlist/overloop-cli
This installs the SKILL.md which gives your agent full knowledge of the CLI commands, patterns, and workflows.
The recommended way to authenticate is the interactive login command:
overloop login
This prompts for your API key (get it from Settings > API Keys in your Overloop dashboard), validates it, and saves it to ~/.overloop/config.json.
Alternatively, set the OVERLOOP_API_KEY environment variable (takes priority over saved config):
export OVERLOOP_API_KEY=your_api_key
To remove saved credentials:
overloop logout
overloop prospects:list [--page N] [--per-page N] [--sort field] [--search text] [--filter '{"key":"value"}'] [--expand relations]
overloop prospects:get <id> # ID or email address
overloop prospects:create --email john@example.com --first-name John --last-name Doe
overloop prospects:create --data '{"email":"john@example.com","first_name":"John"}'
overloop prospects:update <id> --first-name Jane
overloop prospects:delete <id>
overloop organizations:list [--search text] [--filter '{"country":"US"}']
overloop organizations:get <id>
overloop organizations:create --name "Acme Corp" --website https://acme.com
overloop organizations:update <id> --name "New Name"
overloop organizations:delete <id>
overloop lists:list [--search text]
overloop lists:get <id>
overloop lists:create --name "Hot Leads"
overloop lists:update <id> --name "Warm Leads"
overloop lists:delete <id>
overloop campaigns:list [--filter '{"status":"on"}']
overloop campaigns:get <id> [--expand steps,sourcing]
overloop campaigns:create --name "Q1 Outreach" --timezone "Etc/UTC"
overloop campaigns:create --name "Q1" --auto-enroll --sourcing-id <id> # auto-enroll sourced prospects
overloop campaigns:create --data '{"name":"Q1 Outreach","steps":[{"type":"delay","config":{"days_delay":5}}]}'
overloop campaigns:update <id> --status on
overloop campaigns:update <id> --auto-enroll # enable auto-enrollment
overloop campaigns:update <id> --no-auto-enroll # switch back to manual
overloop campaigns:delete <id>
--campaign)Important: When creating steps individually, you must chain each step to the previous one using
--previous-step-id. Without chaining, steps will not appear in the Overloop UI. The recommended approach is to use inline steps withcampaigns:create --data '{"steps":[...]}'.
overloop steps:list --campaign <id>
overloop steps:get <step_id> --campaign <id>
# Preferred: inline steps in campaigns:create (chaining is automatic)
overloop campaigns:create --data '{"name":"My Campaign","steps":[{"type":"delay","config":{"days_delay":1}},{"type":"email","config":{"generate_with_ai":true}}]}'
# Individual creation — must chain with --previous-step-id
STEP1=$(overloop steps:create --campaign <id> --type delay --config '{"days_delay":1}' | jq -r '.data.id')
overloop steps:create --campaign <id> --type email --config '{"generate_with_ai":true}' --previous-step-id $STEP1
overloop steps:update <step_id> --campaign <id> --config '{"subject":"Updated"}'
overloop steps:delete <step_id> --campaign <id>
--campaign)overloop enrollments:list --campaign <id>
overloop enrollments:get <enrollment_id> --campaign <id>
overloop enrollments:create --campaign <id> --prospect <prospect_id>
overloop enrollments:create --campaign <id> --prospect <prospect_id> --reenroll
overloop enrollments:bulk --campaign <id> --prospects "id1,id2,id3" # bulk enroll up to 100
overloop enrollments:delete <enrollment_id> --campaign <id>
overloop step-types:list # List all available step types for building campaigns
overloop sourcings:list
overloop sourcings:get <id>
overloop sourcings:create --name "Sales in Belgium" --search-criteria '{"keywords":"sales","locations":["Belgium"]}'
overloop sourcings:update <id> --name "Updated Name"
overloop sourcings:delete <id>
overloop sourcings:start <id>
overloop sourcings:pause <id>
overloop sourcings:clone <id>
overloop sourcings:estimate --search-criteria '{"job_titles":["CEO"]}' # Preview match count
overloop sourcings:search-options # Get all available search criteria
overloop sourcings:search-options --field locations --q "Bel" # Search specific field options
overloop conversations:list [--archived]
overloop conversations:get <id>
overloop conversations:update <id> --name "New Subject"
overloop conversations:archive <id>
overloop conversations:unarchive <id>
overloop conversations:assign <id> --owner <user_id>
overloop account:get # Get account information
overloop me # Get current authenticated user
overloop users:list
overloop users:get <id>
overloop custom-fields:list # List all custom fields
overloop custom-fields:list --type prospects # Filter by type
overloop sending-addresses:list
overloop exclusion-list:list [--search text]
overloop exclusion-list:create --value spam@example.com --item-type email
overloop exclusion-list:create --value baddomain.com --item-type domain
overloop exclusion-list:delete <id>
Every command outputs JSON for easy parsing with jq or consumption by AI agents:
# Get all prospect emails
overloop prospects:list --per-page 100 | jq '.data[] | .email'
# Get active campaign names
overloop campaigns:list --filter '{"status":"on"}' | jq '.data[] | .name'
# Count total prospects
overloop prospects:list | jq '.pagination.total'
# List all step types
overloop step-types:list | jq '.data[] | .type'
# 1. Create the campaign with inline steps (preferred — chaining is automatic)
overloop campaigns:create --data '{
"name": "Q1 Cold Outreach",
"timezone": "Europe/Brussels",
"steps": [
{"type": "delay", "config": {"days_delay": 1}},
{"type": "email", "config": {"subject": "Hello", "content": "Hi {{first_name}}"}}
]
}'
# 2. Enroll a prospect
overloop enrollments:create --campaign <id> --prospect <prospect_id>
# 3. Activate the campaign
overloop campaigns:update <id> --status on
# 1. Check available search options
overloop sourcings:search-options --field locations --q "Belgium"
# 2. Estimate match count before creating (no credits used)
overloop sourcings:estimate --search-criteria '{"job_titles":["Sales"],"locations":[{"id":22,"name":"Belgium","type":"Country"}]}'
# 3. Create a sourcing
overloop sourcings:create --name "Belgian Sales" --search-criteria '{"job_titles":["Sales"],"locations":[{"id":22,"name":"Belgium","type":"Country"}],"company_sizes":["1-10 employees"]}'
# 4. Start sourcing
overloop sourcings:start <id>
# Block a domain
overloop exclusion-list:create --value competitor.com --item-type domain
# Block a specific email
overloop exclusion-list:create --value ceo@partner.com --item-type email
# Review and clean up
overloop exclusion-list:list --search competitor
overloop exclusion-list:delete <id>
| Variable | Required | Description |
|---|---|---|
OVERLOOP_API_KEY | No | Your Overloop API key (overrides saved config from overloop login) |
OVERLOOP_API_URL | No | Override API base URL (default: https://api.overloop.ai) |
| Exit Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error (message on stderr) |
| HTTP Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Insufficient permissions |
| 404 | Resource not found |
| 422 | Validation error |
| 429 | Rate limited (600 req/min per key) |
git clone https://github.com/sortlist/overloop-cli.git
cd overloop-cli
npm install
npm run dev # Watch mode
npm run build # Production build
MIT
FAQs
Overloop CLI - Command line interface for the Overloop sales automation API v2. Manage prospects, campaigns, sourcings, and more from the terminal or AI agents.
We found that overloop-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.