COMMAND LINE

LinkedIn CLI
for AI agents.

120+ LinkedIn actions. One command line. The curviate CLI is a scriptable terminal client for Curviate. JSON output when piped, stable exit codes, cursor pagination, and a preview flag on every write. Built for shell scripts, cron jobs, and agent loops in Claude Code or Codex.

Curviate/curviate-cli· open source on GitHub
120+ LinkedIn actionsSales Nav + Recruiter support20+ webhook event typesEU data residency
terminal
$ curviate account list ACCOUNT ID NAME STATUS PREMIUM acc_8f3ka92m Alice Berg connected sales_navigator acc_2mq0x7dd Jonas Weber connected recruiter acc_x01pt4ve Studio Nord connected core # pipe it and the same command emits JSON $ curviate account list | jq '.[0].account_id' "acc_8f3ka92m" $
01QUICK START

How do I install the Curviate CLI?

Install the CLI from npm, authenticate with your API key, and run your first command. Node.js 18 or later is required; the binary is curviate.

install
# Install globally from npm
npm install -g @curviate/cli

# Verify
curviate --version

Authenticate with the API key from your Curviate dashboard. The interactive prompt masks the key; nothing is echoed or logged.

login
curviate login

Connect a LinkedIn account in the dashboard, then point the CLI at it once:

first commands
# List your connected accounts
curviate account list

# Set a default account so you never type --account again
curviate config set-account acc_YOUR_ACCOUNT_ID

# Your LinkedIn profile, from the terminal
curviate profile me

That is the whole setup. Every command from here on works against the account you set. For the full authentication walkthrough, including cookie-based connect, read the docs: quickstart.

No account yet? It takes about a minute and your 3-day trial starts the moment you sign up.

02THE SURFACE

What can you do with it?

Everything Curviate ships is reachable from the terminal: the platform exposes 120+ LinkedIn actions, and the CLI organizes them into 16 command groups. Search people, companies, posts and jobs. Send and answer connection requests. Read and send messages. Publish and comment. Manage jobs, company pages, invitations and webhooks. Work Sales Navigator lead lists and Recruiter projects, with 30+ actions dedicated to those two premium surfaces alone.

searchsearch people · search companies · search jobs · search postsgroup
profileprofile me · profile view · profile visitors · profile ssigroup
connectconnect · connect list --sent · connect accept · connect withdrawgroup
messagemessage send · message inmail · message reactgroup
inboxinbox list · inbox chats · inbox searchgroup
postpost create · post react · post save · post commentsgroup
commentcomment add · comment reply · comment reactgroup
companycompany view · company followers · company inbox · company invitegroup
jobjob list · job publish · job applicants · job closegroup
sales-navsales-nav search people · sales-nav leads save · sales-nav listspremium
recruiterrecruiter projects list · recruiter pipeline save · recruiter searchpremium
webhookwebhook create · webhook list · webhook deliveriesgroup
accountaccount list · account status · account connectgroup
configconfig set-account · config get · config pathgroup

Browse the full, honest inventory of every action on one page: the LinkedIn actions catalogue.

03SCRIPTS + AGENTS

Why does a CLI matter for AI agents?

Because agents already live in the terminal. An agent running in Claude Code or Codex can call curviate the way it calls git or gh: read JSON from stdout, branch on exit codes, and page through results without a browser, a session cookie, or a scraping script. Humans get the same benefits in shell scripts and cron jobs.

The flags that make it scriptable, on every command:

FlagWhat it does
--jsonFull machine-readable output. Automatic whenever stdout is not a TTY, so pipes just work.
--fields id,nameProject the response down to exactly the fields you name.
--allStream every page as NDJSON; --max-pages bounds it.
--previewPrint the exact request a write would send, without sending it.
--accountAct as any of your connected accounts; set a default once with config set-account.
stream a search
# Find people, stream all pages as NDJSON, keep two fields per row
curviate search people --keywords "platform engineer" --all --fields id,name
preview a write
# See exactly what a connection request would send, without sending it
curviate connect https://www.linkedin.com/in/example-profile \
  --note "Enjoyed your write-up on typed infrastructure." --preview

When a write is rejected or a LinkedIn-side quota bites, the error comes back structured: a stable code, whether the problem is user-fixable, whether a retry is likely to succeed, and how long to wait. Your script branches on it; no HTML parsing, no guessing.

04WHERE IT FITS

Where the CLI fits

If you occasionally need one profile looked up, a browser extension is fine. The CLI exists for the work between and beyond: repeatable, scripted, agent-driven LinkedIn operations that run in CI, cron, and Claude Code loops.

Curviate CLIBrowser automation tools
Getting accessnpm install, per-seat pricing, no approval processInstall an extension
Sales Navigator and RecruiterAvailable: 30+ dedicated actionsFragile: breaks when the page changes
ScriptabilityJSON output, stable exit codes, NDJSON pagingLimited; UI-bound
Fit for AI agentsRuns in Claude Code and Codex loops todayAgents cannot reliably drive a browser UI
Pipes & automationComposes with jq, cron, CI and shell pipelinesManual, click by click

Underneath sits the REST API; the CLI is built on the typed SDK, and chat agents get the same surface through the MCP server.

05FAQ

Questions, answered

How do I install the Curviate CLI?

Run npm install -g @curviate/cli (Node.js 18 or later), then curviate login with the API key from your Curviate dashboard. The binary is curviate, and the source is on GitHub at github.com/curviate/curviate-cli. First useful command: curviate account list.

Can an AI agent use the Curviate CLI?

Yes, that is the design center. Output is JSON whenever stdout is piped, exit codes are stable enough to branch on, --fields trims responses to what the agent needs, and --preview lets an agent show you a write before it happens. Agents in Claude Code or Codex call it like any other CLI tool.

Does the CLI cover Sales Navigator and Recruiter?

Yes. The sales-nav and recruiter command groups cover lead lists, saved searches, hiring projects, candidate pipelines and InMail, with 30+ actions dedicated to the two premium surfaces across the platform. Every seat includes both command groups; the LinkedIn account you connect needs the matching LinkedIn subscription.

Is it safe to script against my LinkedIn account?

Curviate uses native LinkedIn flows, not scraping or browser puppetry. Operations are paced to human rhythms and new accounts warm up gradually. Credentials are encrypted at rest with AES-256, never logged, and hard-deleted the moment you disconnect a seat. Read the full safety page for the specifics.