Skip to content
LinkdashLinkdash
Esc
navigateopen⌘Jpreview
On this page

CLI

Install linkdash-cli from npm, then run the `linkdash` command. Successful commands print JSON on stdout. Help and errors are plain text on stderr.

npm i -g linkdash-cli
# or: pnpm add -g linkdash-cli / bun add -g linkdash-cli / npx linkdash-cli@latest

The npm package is linkdash-cli. The command is linkdash.

HTTP equivalent: HTTP API. MCP: MCP. Agent skill: Agent skill. Pricing: Pricing. Plain markdown: cli.md.

There is no --json flag. Exit code 1 on errors.

Auth

linkdash auth create
linkdash auth login
linkdash auth whoami
linkdash auth logout

No account yet? auth create opens https://linkdash.dev/sign-up, then returns to https://linkdash.dev/device with the CLI code so you can approve. Already have an account? auth login opens /device. Headless: set LINKDASH_TOKEN to a session token from auth create or auth login. Do not invent tokens.

Session file: ~/.config/linkdash/config.json (mode 0600).

The CLI cannot change email, password, or billing. Send the user to the dashboard. API keys (HTTP and MCP): API keys.

Commands

linkdash <command> [options]
Command What it does
auth create Browser sign-up, then device approval
auth login Browser device login
auth logout Forget the stored session
auth whoami Signed-in account JSON
links list List links
links get <id> One link
links create --url <url> Short link from a URL
links create --file <path> Upload a file and get a link
links create --text <text> Store a snippet
links update <id> Change destination, file, password, expiry, domain, or status
links delete <id> Delete a link
links stats <id> Visit, download, and play totals
links export Print all links as CSV
links import <file> Import URL rows from CSV
webhooks list List webhook endpoints (secret masked)
webhooks get <id> Show one webhook URL (secret masked)
webhooks create --url <https> Add an HTTPS endpoint (secret shown once)
webhooks rotate <id> Issue a new signing secret
webhooks delete <id> Remove a webhook
domains list List custom hostnames
domains add <host> Add a hostname (1 on Free)
domains connect <host> Domain Connect apply URL, or null
domains verify <host> Check DNS with Unkey
domains remove <host> Remove a hostname
-h, --help Help (plain text)
-v, --version Version

If the same slug exists on two of the owner’s domains, pass --domain.

Create and update flags

Slug is the public path. Name is only visible to you. Create takes exactly one of --url, --file, or --text.

Flag Notes
--url <url> Destination URL
--file <path> File to upload (create, or replace bytes on update)
--text <text> Snippet
--slug <id> Public path: a-z0-9 and internal hyphens, 1–64
--name <label> Private label
--tag <tag> Repeatable. Lowercase, no commas. Max 20
--starts <when> Go live after 7d, 24h, 30m, or an ISO date
--password <secret> Require this password to open
--expires <when> Stop serving after 7d, 24h, 30m, or an ISO date
--max-openings <n> Pause after this many openings. Omit for unlimited
--domain <host> Serve on this host instead of lida.sh
--status <active|paused> Pause or resume (update only)
--preview-name <text> Public unfurl name
--preview-description <text> Public unfurl description
--preview-image <path> Public unfurl image
--utm-source --utm-medium --utm-campaign --utm-term --utm-content URL links only
--clear-password --clear-expires --clear-starts --clear-tags --clear-preview --clear-name --clear-max-openings Update only

--status only accepts active or paused. Expired comes from --expires. Scheduled comes from --starts. Public resolve is not-found until start. After --max-openings is reached the link pauses; raise the number, or --clear-max-openings, to serve it again. Openings already used stay counted until you change or remove the limit.

lida.sh slugs are shared. If a word is taken, add a custom domain and retry with --domain. A branded-domain link does not also publish on lida.sh.

List flags

Flag Notes
--q <text> Search name, slug, target, and tags
--tag <tag> Filter by tag
--kind <url|file|text> Filter by kind
--status <status> active, paused, expired, or scheduled

Stats

linkdash links stats <id> --last 24h

--last is a duration (24h, 7d). Default 24h. JSON includes visits, downloads, plays, visitsInLast, countries, referrers, and visitors.

CSV

Columns: slug,kind,name,url,text,fileName,status,domain,tags,starts,expires,maxOpenings,created. No passwords.

linkdash links export > links.csv
linkdash links import links.csv

Import creates or updates URL (and text) rows by slug. File rows without bytes are skipped with a per-row error.

Examples

linkdash links create --url https://example.com/q4/deck.pdf --slug deck --name "Q4 deck"
linkdash links create --file ./deck.pdf --expires 7d --starts 1d
linkdash links create --url https://example.com --max-openings 1
linkdash links update k3m9xq --max-openings 5
linkdash links update k3m9xq --clear-max-openings
linkdash links create --text "release checklist" --tag launch --tag q4
linkdash links list --q deck --tag launch --kind file --status paused
linkdash links get welcome --domain go.example.com
linkdash links update deck --file ./new.pdf
linkdash links update k3m9xq --status paused

See also webhooks and custom domains.

Was this page helpful?