The Linkjar CLI
Send PDFs, Office files, HTML pages and folders as tracked links from your terminal, CI or any AI agent that can run commands, then see who opened them. Node 18+, no dependencies.
Install & log in
npx linkjar login # opens your browser once
npx linkjar send deck.pdf --for "Sam Lee <[email protected]>"
npx linkjar activity deck
Or install it: npm i -g linkjar. Over SSH use linkjar login --no-browser. For Claude Code, add the agent skills with npx linkjar skills install.
Environment
- LINKJAR_API_KEY
- An API key from Settings → Claude, CLI & API. Takes precedence over a saved login; use it in CI and agents.
- LINKJAR_URL
- The server to talk to (default https://linkjar.com).
- XDG_CONFIG_HOME
- Where the login is saved (
linkjar/config.json, readable only by you). Default~/.config.
Output & exit codes
The first line of normal output is the link, so scripts and agents can take it straight away; notes and warnings go to stderr. Add --json to any command for the raw API response. Exit code 0 on success, 1 when the server says no, 2 for a usage mistake.
Commands
linkjar login
Usage: linkjar login [--key <api key>] [--no-browser]
Logs in through your browser (OAuth). The token is saved to the config file
with owner-only permissions and is never printed.
--key <key> Save an API key (starts with lj_) instead of logging in
--no-browser Don't try to open a browser; just print the login link
Examples:
linkjar login
linkjar login --no-browser # over SSH: open the printed link anywhere
LINKJAR_API_KEY=lj_... linkjar whoami # no login needed with the env var
linkjar logout
Usage: linkjar logout
Deletes the saved login (config file).
linkjar whoami
Usage: linkjar whoami
Shows the account and workspace the CLI is using.
linkjar send
Usage: linkjar send <path|-> [options]
Publishes a file and prints its link (first line of output).
path: .pdf, .doc(x), .ppt(x), .xls(x), .html/.htm, .zip, or a folder with an
index.html at its top (sent as a website). "-" reads HTML from stdin.
Options:
--title <text> Title shown to viewers (default: file name or <title>)
--for "Name <email>" Also make a personal link for this person (repeatable)
--password <pw> Visitors need this password to open it
--email-gate Ask visitors for their email first (Pro)
--domains <a.com,b.com> Only allow emails at these company domains
--expires <YYYY-MM-DD> Link stops working after this date (paid plans)
--cta-label <text> Call-to-action button text, e.g. "Book a call"
--cta-url <url> Where the button goes
Examples:
linkjar send deck.pdf
linkjar send proposal.html --for "Sam Lee <[email protected]>" --for "[email protected]"
linkjar send ./site --title "Q4 plan" --email-gate --domains acme.com
cat page.html | linkjar send - --title "One-pager"
linkjar update
Usage: linkjar update <ref> <path|-> [--title <text>]
Replaces what an existing link shows. Everyone who has the link sees the new
version. Accepts the same kinds of path as send.
Examples:
linkjar update acme-proposal proposal-v2.html
linkjar update https://linkjar.com/acme-proposal ./site
linkjar list
Usage: linkjar list [--query <text>] [--limit <n>]
Recent documents with their links and view counts.
Examples:
linkjar list
linkjar list --query acme --json
linkjar activity
Usage: linkjar activity <ref> [--days <n>] [--limit <n>]
Who opened it, when, from where; on Pro also time spent, how far they read
and what they clicked. Alias: linkjar views.
Examples:
linkjar activity acme-proposal
linkjar activity acme-proposal --days 7 --json
linkjar responses
Usage: linkjar responses <ref> [--limit <n>] [--csv] [--save-signed <dir>]
What people filled in, signed and submitted on a fillable PDF: who, when and
their answers. Signed responses show who signed, when and where.
--csv One row per response (columns: Submitted at, Respondent,
Respondent email, the signature columns when anything was
signed, then every field), ready for a spreadsheet
--save-signed <dir> Download each signed PDF (with its signature certificate)
into <dir>
Examples:
linkjar responses order-form
linkjar responses order-form --csv > responses.csv
linkjar responses agreement --save-signed ./signed
linkjar responses order-form --json
linkjar link
Usage: linkjar link <ref> --name <name> [--email <email>]
A personal link for one person, so their views show under their name.
Examples:
linkjar link acme-proposal --name "Sam Lee" --email [email protected]
linkjar settings
Usage: linkjar settings <ref> [options]
Changes how a link behaves. Only the options you pass change.
Options:
--title <text>
--password <pw> Visitors need this password to open it
--email-gate Ask visitors for their email first (Pro)
--domains <a.com,b.com> Only allow emails at these company domains
--expires <YYYY-MM-DD> Link stops working after this date (paid plans)
--cta-label <text> Call-to-action button text, e.g. "Book a call"
--cta-url <url> Where the button goes
--no-email-gate Turn the email gate off
--remove-password Turn password protection off
--remove-expiry Remove the expiry date
--remove-cta Remove the button
Examples:
linkjar settings acme-proposal --password hunter22 --expires 2026-12-31
linkjar settings acme-proposal --remove-password --no-email-gate
linkjar room
Usage: linkjar room <title> <ref...> [--description <text>] [--email-gate]
Puts several documents behind one link (a deal room). Pro.
Examples:
linkjar room "Acme deal room" acme-proposal case-study security-faq --email-gate
linkjar open
Usage: linkjar open <ref>
Opens the document's settings page in your browser.
linkjar skills
Usage: linkjar skills [list]
linkjar skills install [name...] [--dir <folder>]
Agent skills teach Claude Code (and other agents) to write proposals, pitch
decks, one-pagers and case studies, send them with this CLI and follow up.
install downloads them into ~/.claude/skills/ (or --dir); with no names it
installs all of them. No login needed.
Examples:
linkjar skills
linkjar skills install
linkjar skills install proposal follow-up
linkjar skills install --dir ./.claude/skills # just this project