FREE
Branded tracked links for agents.
Drop a URL. Ship a short link. Pull click stats from the API — curl, npm CLI, or your agent.
Public short_url after create. Analytics use internal $LINK_ID.
lnkgo init— API key oncelnkgo analytics— JSON reportlnkgo analytics --csv— local CSV (aggregate analytics)
CREATE_RESULT="$(lnkgo create \
--url 'https://example.com/blog/long-article?utm_source=newsletter' \
--tag 'smm')"
LINK_ID="$(printf '%s' "$CREATE_RESULT" | jq -r '.id')"
SHORT_URL="$(printf '%s' "$CREATE_RESULT" | jq -r '.short_url')"
printf 'Public short URL: %s\n' "$SHORT_URL"
# JSON report
lnkgo analytics "$LINK_ID" \
--from '2026-06-01' \
--to '2026-06-11'
# CSV file
lnkgo analytics "$LINK_ID" \
--from '2026-06-01' \
--to '2026-06-11' \
--csv > report.csv5 minute quickstart
Install the CLI, verify your email, and create the first tracked link on the default `lnkgo.app` domain. You do not pass a domain unless you are using your own verified custom domain.
npm install -g lnkgo
export LNKGO_EMAIL="<your-email>"
lnkgo init --email "$LNKGO_EMAIL"
export LNKGO_VERIFICATION_CODE="<email-code>"
export LNKGO_API_KEY="$(
lnkgo init --email "$LNKGO_EMAIL" --code "$LNKGO_VERIFICATION_CODE" \
| jq -r '.api_key'
)"
CREATE_RESULT="$(lnkgo create \
--url https://example.com/launch \
--tag product-hunt)"
SHORT_URL="$(printf '%s' "$CREATE_RESULT" | jq -r '.short_url')"
LINK_ID="$(printf '%s' "$CREATE_RESULT" | jq -r '.id')"
printf 'Public short URL: %s\n' "$SHORT_URL"
lnkgo analytics "$LINK_ID"Prefer curl?
export LNKGO_BASE_URL="https://api.lnkgo.app"
export LNKGO_EMAIL="<your-email>"
curl -sS -X POST "$LNKGO_BASE_URL/v1/keys/request" \
-H "Content-Type: application/json" \
-d "{\"email\":\"$LNKGO_EMAIL\"}"
export LNKGO_VERIFICATION_CODE="<email-code>"
export LNKGO_API_KEY="$(
curl -sS -X POST "$LNKGO_BASE_URL/v1/keys/verify" \
-H "Content-Type: application/json" \
-d "{\"email\":\"$LNKGO_EMAIL\",\"code\":\"$LNKGO_VERIFICATION_CODE\"}" \
| jq -r '.api_key'
)"
CREATE_RESULT="$(curl -sS -X POST "$LNKGO_BASE_URL/v1/links" \
-H "Authorization: Bearer $LNKGO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen | tr '[:upper:]' '[:lower:]')" \
-d '{"url":"https://example.com/launch","tags":["product-hunt"]}')"
printf '%s\n' "$CREATE_RESULT" | jq '{id, short_url, slug}'Demos
Watch the same product surface from three entry points: REST API, npm CLI, and an installed agent skill.
Use cases
Pick a workflow to open CLI, cURL, and an agent prompt. Optional API key stays in your browser for cURL snippets only.
API playground
Preview CLI and cURL for the three core flows. v2.0 is copy-only — no live API calls from the browser yet.
# Default-domain links use lnkgo.app automatically.
CREATE_RESULT="$(lnkgo create \
--url https://example.com/pricing \
--tag newsletter \
--tag launch)"
# For short-lived campaigns, add: --expire 12h
LINK_ID="$(printf '%s' "$CREATE_RESULT" | jq -r '.id')"
SHORT_URL="$(printf '%s' "$CREATE_RESULT" | jq -r '.short_url')"
printf 'Public short URL: %s\n' "$SHORT_URL"
lnkgo analytics "$LINK_ID"What you can do
Omit domain to create on lnkgo.app. Pass domain only after a custom domain is active.
Request a domain, add CNAME and TXT proof, poll status until active, then create links on it.
PNG QR codes point to the owned short URL, so print, event, and support flows stay measurable.
Read total, non-bot, bot, top referrers, top countries, daily timeseries, and truncation status.
Install the Lnkgo skill into Codex, Claude, Cursor, or another IDE so agents can use the same API contract.
REST creates require Idempotency-Key. The npm CLI generates one automatically for create calls.
# Use the internal link id returned by create, not the public slug.
lnkgo qr "$LINK_ID" --output lnkgo-qr.png
lnkgo analytics "$LINK_ID" \
--from '2026-06-01' \
--to '2026-06-11'
lnkgo analytics "$LINK_ID" \
--from '2026-06-01' \
--to '2026-06-11' \
--csv > report.csvnpx --yes skills add citedy/lnkgo --skill lnkgo -a codex -g -y
npx --yes skills add citedy/lnkgo --skill lnkgo -a claude-code -g -y
npx --yes skills add citedy/lnkgo --skill lnkgo -a cursor -g -y
# Fallback bundled with the npm CLI:
npx --yes lnkgo skill install --target codex
npx --yes lnkgo skill install --target claude
npx --yes lnkgo skill install --target cursor
npx --yes lnkgo skill install --target projectCustom domain
Use `lnkgo.app` immediately, then add your own domain when you want branded links for emails, campaigns, support flows, or agent-created outbound URLs.
curl -sS -X POST "$LNKGO_BASE_URL/v1/domains" \
-H "Authorization: Bearer $LNKGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"links.example.com"}'
# Add the returned DNS records:
# CNAME links.example.com -> edge.lnkgo.app
# TXT _lnkgo.links.example.com -> lnkgo-verify=...
lnkgo domain status links.example.com
lnkgo create \
--url https://example.com/pricing \
--domain links.example.com \
--tag pricingCompare
Pricing
Email-verified starter limits are intentionally small. Prove DNS ownership to unlock the launch offer.
- - 100 links/month
- - 10 creates/hour
- - 1,000 API calls/month
- - 1-day analytics
DNS ownership proof unlocks the generous free launch limits.
- - 10 custom domains
- - 10,000 links/month
- - 1,000 links/domain/month
- - 50,000 API calls/month
- - 14-day analytics
Contact us if you need more history, exports, reports, or higher limits.
- - Longer analytics
- - Raw exports
- - Scheduled reports
- - Email reporting
- - Password link protection