Developers / First useful operation

Read your campaign.
Find what needs attention.

Use the Overloop CLI to retrieve one existing campaign and its performance statistics. Run the same task from a terminal, Codex or Claude Code.

overloop-cli 1.4.0 · Beta · Verified September 23, 2026

You need an Overloop account with API access, an API key and an existing campaign. Check current API access by plan. A working CLI installation alone does not establish account access.

1. Install a pinned CLI

The package declares Node 18 or later. This verification used Node 25.6.1; other versions were not tested. Install into a project folder so the command and version are explicit.

mkdir overloop-report
cd overloop-report
npm init -y
npm install --save-exact overloop-cli@1.4.0
npx --no-install overloop --version

Authenticate in your own terminal using the interactive prompt. Keep the API key out of agent prompts and shared transcripts.

npx --no-install overloop login

The CLI stores the key in ~/.overloop/config.json. An existing OVERLOOP_API_KEY environment variable takes precedence over that file. This guide does not change an agent's permission settings.

2. Retrieve one existing campaign

npx --no-install overloop campaigns:list --page 1 --per-page 1

The JSON response contains a data array and pagination information. Choose the returned campaign ID, then replace CAMPAIGN_ID below with that value.

npx --no-install overloop campaigns:stats CAMPAIGN_ID

Both commands read existing data. This quickstart does not create a campaign, enroll prospects or start sending. If your account has no campaign, stop here and select a workspace with an existing campaign to complete this reporting task.

3. Give Codex or Claude Code a bounded task

Open the project folder in your local agent environment after authentication. Give the agent the task below and review any requested command permissions.

Use the locally installed overloop-cli 1.4.0.
Run only these read operations:
1. campaigns:list --page 1 --per-page 1
2. campaigns:stats for the returned campaign ID.

If there is no campaign, report that and stop.
If access fails, report the failure and stop. Do not retry in a loop.
Do not read or display credential files.
Do not create, edit, enroll, activate or send anything.

Summarize the campaign's email, LinkedIn and enrollment metrics.
Include last_updated_at if returned.
Keep missing values unknown. Do not infer a cause from a count.
Suggest one question for the operator to investigate.

Codex: the scenario was run through the Codex desktop local shell. Claude Code: version 2.1.280 independently executed a script wrapping the same two CLI reads. These are local command workflows; no MCP server configuration is needed.

The repository also provides a CLI skill reference. Inspect its commands and permission needs before adding broader workflows.

Optional: get a compact local report

Download the reporting example (ZIP) for a Python wrapper and locked CLI dependency. It returns your own campaign's numerical metrics and update date while excluding campaign identifiers, names and contact records.

After extracting the ZIP, open its folder and run:

npm ci --prefix runtime --ignore-scripts --no-audit --no-fund
python3 overloop_campaign_report.py

The wrapper uses the same saved credentials and makes at most two GET requests. It requires Python 3. To select a particular campaign, pass --campaign-id CAMPAIGN_ID. The optional --schema-only mode still performs live reads but replaces metric values with types for a shareable connection receipt.

Example SHA-256: b3792cae34ce1304565649aafab08ffeeb6090a87208239a7e9119dbee3c936b

4. Inspect what came back

The verified response included the groups below. Availability can differ by account, campaign and API version. Campaign data belongs to your workspace; keep the report in an appropriate environment.

Scroll the table horizontally on small screens. Keyboard users can focus it and use the arrow keys.

Response fieldUseful questionInterpretation boundary
data.enrollmentsAre enrollments waiting, in review or errored?A count alone does not explain the cause.
data.emailWhat email activity and reply metrics are recorded?Use the returned metrics; do not invent missing denominators.
data.linkedinWhat actions and replies are recorded for LinkedIn?Email and LinkedIn fields describe different channel activity.
data.reply_sentimentHow are replies classified?A classification is not a qualified opportunity or a sale.
data.last_updated_atHow recent is this report?A missing timestamp stays unknown.

For example, an errored-enrollment count gives the operator a reason to investigate those enrollments. It does not establish a deliverability problem, a targeting error or a failed message without further evidence.

When the first read does not work

What we verified

On September 23, 2026, two GET requests returned valid JSON through overloop-cli 1.4.0 in the Codex desktop local shell. Claude Code 2.1.280 then independently ran the two-read script successfully. Four product reads were made across those runs, with no mutations.

Results were checked for structure and expected metric groups. Customer records, campaign identifiers, names, credentials and account-specific performance values are not reproduced here. This verifies the reporting path on one authenticated account, not universal plan access or an end-to-end prospecting workflow.

Sources: Overloop CLI repository, published package 1.4.0, and the documented commands bundled with that release.