New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

overloop-cli

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

overloop-cli

Overloop CLI - Command line interface for the Overloop sales automation API v2. Manage prospects, campaigns, sourcings, and more from the terminal or AI agents.

latest
Source
npmnpm
Version
1.3.0
Version published
Maintainers
1
Created
Source

Overloop CLI

npm version License: MIT

⚠️ 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.

Installation

npm install -g overloop-cli

For AI Agents

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.

Authentication

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

Commands

Prospects

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>

Organizations

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>

Lists

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>

Campaigns

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 Steps (require --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 with campaigns: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 Enrollments (require --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>

Step Types

overloop step-types:list     # List all available step types for building campaigns

Sourcings

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

Conversations

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>

Account & Users

overloop account:get          # Get account information
overloop me                   # Get current authenticated user
overloop users:list
overloop users:get <id>

Custom Fields

overloop custom-fields:list                 # List all custom fields
overloop custom-fields:list --type prospects # Filter by type

Sending Addresses

overloop sending-addresses:list

Exclusion 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>

All Output is JSON

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'

Common Workflows

Create a campaign with steps and enroll prospects

# 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

Source prospects and add to a campaign

# 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>

Manage the exclusion list

# 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>

Environment Variables

VariableRequiredDescription
OVERLOOP_API_KEYNoYour Overloop API key (overrides saved config from overloop login)
OVERLOOP_API_URLNoOverride API base URL (default: https://api.overloop.ai)

Error Handling

Exit CodeMeaning
0Success
1Error (message on stderr)
HTTP StatusMeaning
401Missing or invalid API key
403Insufficient permissions
404Resource not found
422Validation error
429Rate limited (600 req/min per key)

Development

git clone https://github.com/sortlist/overloop-cli.git
cd overloop-cli
npm install
npm run dev    # Watch mode
npm run build  # Production build

License

MIT

Keywords

overloop

FAQs

Package last updated on 02 Apr 2026

Did you know?

Socket

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.

Install

Related posts