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.
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 --versionAuthenticate in your own terminal using the interactive prompt. Keep the API key out of agent prompts and shared transcripts.
npx --no-install overloop loginThe 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 1The 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_IDBoth 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.pyThe 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.
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.
| Response field | Useful question | Interpretation boundary |
|---|---|---|
data.enrollments | Are enrollments waiting, in review or errored? | A count alone does not explain the cause. |
data.email | What email activity and reply metrics are recorded? | Use the returned metrics; do not invent missing denominators. |
data.linkedin | What actions and replies are recorded for LinkedIn? | Email and LinkedIn fields describe different channel activity. |
data.reply_sentiment | How are replies classified? | A classification is not a qualified opportunity or a sale. |
data.last_updated_at | How 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
- No credentials: complete interactive login locally, or check whether an existing environment key is overriding saved configuration.
- Access denied: confirm the account, key and API entitlement. Stop instead of repeatedly retrying or switching accounts automatically.
- Empty campaign list: there is no report to retrieve in that result. Do not create a campaign just to make the read succeed.
- Unknown command or option: check
npx --no-install overloop --versionand the command's--help. This guide is pinned to 1.4.0. - Missing metrics or malformed output: keep the values unknown and inspect the CLI error. A missing value is not zero.
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.