LinkCrypt REST API

A first-class REST API so your AI agents can search, save, and tag your personal link library — no scraping.

Authentication

Create a personal API key in Preferences (sign in required). Keys start with lc_ . Include on every request:

Authorization: Bearer YOUR_API_KEY

Base URL: https://getlinkcrypt.com/api/v1

Access and limits

  • Subscription or trial required — API calls return 403 with api_forbidden if your trial has ended and you do not have an active plan.
  • Monthly quota — Default 50,000 request units per billing period (calendar month if not on a Stripe period). Over limit: 429, monthly_quota_exceeded.
  • Per-minute cap — Default 60 units/minute; POST /analyze/digest costs 5 units. Over limit: 429, rate_limited, with Retry-After.
  • Usage for the current period is included in GET /analyze/stats under api_usage.

Search & lookup

GET/api/v1/search

Full-text search across title, description, domain, and saved page content (most powerful search).

ParamRequiredNotes
qYesSearch query
limitNoMax results (default 20)
offsetNoPagination

Example

curl -s "https://getlinkcrypt.com/api/v1/search?q=python&limit=10" -H "Authorization: Bearer YOUR_API_KEY"
GET/api/v1/links

List links with filters and pagination.

ParamRequiredNotes
qNoFilter title, description, domain
tagsNoComma-separated; AND match (e.g. ai,python)
domainNoPartial domain match
favoriteNotrue | false
sortNocreated_at | title | click_count | updated_at
limitNoMax 100 (default 20)
offsetNoPagination

Example

curl -s "https://getlinkcrypt.com/api/v1/links?tags=ai&limit=20" -H "Authorization: Bearer YOUR_API_KEY"
GET/api/v1/links/:id

Single link with full tag list.

ParamRequiredNotes
idYesLink UUID

Example

curl -s "https://getlinkcrypt.com/api/v1/links/LINK_ID" -H "Authorization: Bearer YOUR_API_KEY"

Save & update links

POST/api/v1/links

Create a link. Tags can be provided; new tags are created automatically. AI tagging may run async.

Body: {"url":"https://…","title"?:string,"description"?:string,"tags"?:string[]}

Example

curl -s -X POST "https://getlinkcrypt.com/api/v1/links" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"url":"https://example.com","tags":["research"]}'
PATCH/api/v1/links/:id

Update metadata (partial body).

Body: {"title"?,"url"?,"description"?,"is_favorite"?:boolean}

Example

curl -s -X PATCH "https://getlinkcrypt.com/api/v1/links/LINK_ID" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"is_favorite":true}'

Tags

GET/api/v1/tags

All tags with link counts.

Example

curl -s "https://getlinkcrypt.com/api/v1/tags" -H "Authorization: Bearer YOUR_API_KEY"
POST/api/v1/tags

Create a tag.

Body: {"name":string,"color"?: "#hex"}

Example

curl -s -X POST "https://getlinkcrypt.com/api/v1/tags" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"name":"research","color":"#10B981"}'
GET/api/v1/links/:id/tags

Tags on a link.

ParamRequiredNotes
idYesLink UUID

Example

curl -s "https://getlinkcrypt.com/api/v1/links/LINK_ID/tags" -H "Authorization: Bearer YOUR_API_KEY"
POST/api/v1/links/:id/tags

Add tag to link (creates tag if missing).

Body: {"name":string}

Example

curl -s -X POST "https://getlinkcrypt.com/api/v1/links/LINK_ID/tags" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"name":"ai"}'
DELETE/api/v1/links/:id/tags/:tagId

Remove a tag from a link (does not delete the link).

Example

curl -s -X DELETE "https://getlinkcrypt.com/api/v1/links/LINK_ID/tags/TAG_ID" -H "Authorization: Bearer YOUR_API_KEY"
PATCH/api/v1/tags/:id

Update tag (name, description, color).

Body: {"name"?,"description"?,"color"?}

Example

curl -s -X PATCH "https://getlinkcrypt.com/api/v1/tags/TAG_ID" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"color":"#EF4444"}'
DELETE/api/v1/tags/:id

Delete tag globally and remove associations.

Example

curl -s -X DELETE "https://getlinkcrypt.com/api/v1/tags/TAG_ID" -H "Authorization: Bearer YOUR_API_KEY"

Stats & analysis

GET/api/v1/analyze/stats

Library overview: totals, links added (day/week/month), top domains & tags, tag growth.

Example

curl -s "https://getlinkcrypt.com/api/v1/analyze/stats" -H "Authorization: Bearer YOUR_API_KEY"
POST/api/v1/analyze/digest

AI digest across your library (themes, habits, suggestions).

Body: {"period":"week"|"month"|"all","focus"?:string}

Example

curl -s -X POST "https://getlinkcrypt.com/api/v1/analyze/digest" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"period":"week"}'

Maintenance

GET/api/v1/maintenance/links/duplicates

Preview duplicate links grouped by normalized URL (tracking params stripped). Non-mutating.

Example

curl -s "https://getlinkcrypt.com/api/v1/maintenance/links/duplicates" -H "Authorization: Bearer YOUR_API_KEY"
POST/api/v1/maintenance/links/merge

Merge duplicate links — keeps oldest as canonical, enriches metadata, unions tags, deletes duplicates.

Body: {"dry_run"?:boolean}

Example

# Dry run first
curl -s -X POST "https://getlinkcrypt.com/api/v1/maintenance/links/merge" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"dry_run":true}'

# Then execute
curl -s -X POST "https://getlinkcrypt.com/api/v1/maintenance/links/merge" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"dry_run":false}'
GET/api/v1/maintenance/tags/duplicates

Preview duplicate tags grouped by case-insensitive name. Non-mutating.

Example

curl -s "https://getlinkcrypt.com/api/v1/maintenance/tags/duplicates" -H "Authorization: Bearer YOUR_API_KEY"
POST/api/v1/maintenance/tags/merge

Merge duplicate tags — moves all link associations to canonical, deletes duplicates.

Body: {"dry_run"?:boolean}

Example

# Dry run first
curl -s -X POST "https://getlinkcrypt.com/api/v1/maintenance/tags/merge" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"dry_run":true}'

# Then execute
curl -s -X POST "https://getlinkcrypt.com/api/v1/maintenance/tags/merge" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"dry_run":false}'

Use with your AI agent

Step-by-step guides for connecting Claude, ChatGPT, and Obsidian-style workflows:

All responses are JSON. Errors: { "error": "message" } with appropriate HTTP status.