CLI
The Reply command line — contacts, sequences, inbox, and reports as shell commands with JSON output. Install with npm i -g reply-cli.
Install
npm install -g reply-cli # installs the `reply` command (Node 20+)
# or zero-install:
npx -y reply-cli auth whoami
Same API key as every other surface — create one in Reply → Settings → API Keys:
export REPLY_API_KEY=... # or a .env file, or --api-key
reply auth whoami # verify: prints your user and team
What it covers
reply contacts list|get|create|update|delete|search|statuses
reply contacts import prospects.csv --dry-run # CSV import, auto-mapped columns
reply lists list|get|create|add-contacts
reply sequences list|get|create|update|start|pause|archive
reply sequences stats [id] --preset lastMonth # performance, --top for best
reply sequences contacts list|add|remove <id> # enrollment
reply inbox threads list --unread # triage
reply inbox reply <threadId> --body-file reply.html # respond (gated)
reply inbox categories list|assign
reply reports emails --preset lastWeek # account-level overview
reply email-accounts list|check
reply schedules list|get
Every command maps to documented v3 endpoints — the CLI adds no private surface.
Built for agents
- JSON everywhere —
--jsonon every command; data on stdout, status on stderr, so output pipes cleanly intojqor agent logic. - Deterministic errors — problem+json mapped to one stderr line:
{"error":{status,code,title,detail,hint}}. Exit codes: 0 ok, 1 API error, 2 usage. - Safety by default — destructive and sending commands prompt for confirmation on a TTY and refuse without
--yesin scripts; bulk commands support--dry-run(zero API calls). - Rate limits handled — 429s honor
Retry-After, 5xx retries back off exponentially;--allpaginates through any list. - Scoped keys work as-is — a key with
sequences:readcan list but not start.
# agent-style composition
reply sequences stats --json \
| jq -r '.[] | select(.emailOverview.repliedPercentage < 1) | .sequenceId' \
| xargs -I{} reply sequences pause {}
Scope of version 0.2
Covers the core outreach loop: import → organize → enroll → launch → triage replies → measure. Not yet included: prospect search and enrichment (Coming soon — the underlying Live Data and Enrichment endpoints aren’t generally available yet), webhooks admin, tasks, templates, and the AI SDR module (use REST or MCP for those today).
Source and issues: github.com/replyio/reply-cli · Package: npmjs.com/package/reply-cli
Frequently asked questions
Does the CLI exist today?
Yes. Install it with `npm i -g reply-cli` (or run `npx -y reply-cli`). Version 0.2 covers contacts, lists, sequences, inbox, reports, email accounts, and schedules against the v3 API. Prospect search and enrichment commands ship when those API endpoints do.
Why a CLI when there's already REST and MCP?
Coding agents are exceptionally good at running shell commands. The CLI gives them composability (pipes, jq, cron) without writing HTTP client code, plus built-in retries, rate-limit handling, confirmation gates, and dry-runs — and gives humans a scriptable surface for one-off operations.
How does it relate to the Agent Skill?
The Skill (see /skills) is the reasoning layer — it teaches an agent which workflow to run. The CLI is its execution layer — deterministic commands the skill shells out to. You can use the CLI without the skill; the skill requires the CLI.