Developers
Build with quiklink
Create links and build collections in your account from anywhere — connect an AI assistant like Claude through the Model Context Protocol (MCP), or call the REST API directly. Both use one personal access token, and everything they create is private to you by default.
1. What you can build
The quiklink API lets other apps write to your library on your behalf — saving links and assembling them into collections. The original motivation: ask an AI assistant to research a topic and have it build a private collection of the best sources for you.
There are two ways in, both authenticated by the same token:
- MCP server— connect Claude or any Model Context Protocol client and let it call quiklink's tools in a conversation. Best for AI assistants.
- REST API — plain HTTPS endpoints under
/api/v1. Best for scripts, backends, and integrations.
2. Get a token
Every request is authenticated with a personal access token — a secret that identifies your account. Create one in Settings → API tokens.
- 1Open Settings, find API tokens, give the token a name (e.g. “Claude”), and click Create.
- 2Copy the token immediately — it starts with
qlk_live_and is shown only once. quiklink stores only a hash, so it can never show it to you again. - 3Send it on every request as a bearer token in the
Authorizationheader. Revoke it anytime from the same screen.
Authorization: Bearer qlk_live_xxxxxxxxxxxxxxxxxxxx
3. Connect Claude (MCP)
quiklink runs a remote Model Context Protocol server with a one-click sign-in (OAuth) — no token to copy. Add it as a custom connector and Claude gains a set of tools for saving links and building collections.
- 1In Claude, go to Settings → Connectors → Add custom connector and paste this server URL:
https://quiklink.ai/api/mcp
Leave “Advanced settings” blank.quiklink registers Claude automatically — don't enter an OAuth Client ID or Client Secret. Putting your email or a token in those fields overrides auto-registration and causes an “app isn't recognized” error.
- 2Claude opens a quiklink page — sign in and click Authorize. That connects Claude to your account; you can revoke it anytime under Settings → API tokens.
- 3Start a chat and ask, for example: “Research the best introductions to post-quantum cryptography and save them to a new private collection.” Claude calls the tools below to get it done.
Prefer a bearer token (for scripts or non-OAuth MCP clients)? Use the Authorization: Bearer qlk_live_… token from above instead.
Tools Claude gets
list_collections— see your collections, link counts, and public URLs.create_collection— start a new (private) collection.get_collection— read a collection's links (to dedupe, resume, or verify a bulk add).create_link— save one URL with an optional note, tags, and target collection.add_links_to_collection— save many links at once, each with its own note and tags — build a whole collection in one call.update_link— change a saved link's note, tags, or collection.search_my_links— search your library, filterable by tags and collection.list_tags— see your existing tags and usage counts.merge_tags— merge duplicate/variant tags into one (e.g. “benchmarks” into “benchmarking”) to clean up your vocabulary.delete_tags— remove junk tags from every link (without deleting the links).update_collection— change a collection's title, description, or visibility.remove_from_collection— take a link out of a collection (keeps it in your library).delete_link— permanently delete a link.
4. REST API
Prefer to call it yourself? Every endpoint lives under https://quiklink.ai/api/v1, takes and returns JSON, and needs the Authorization: Bearerheader. Here's the “research → collection” flow end to end:
# 1. Create a private collection
curl -X POST https://quiklink.ai/api/v1/collections \
-H "Authorization: Bearer qlk_live_…" \
-H "Content-Type: application/json" \
-d '{"title":"Post-Quantum Cryptography"}'
# → 201 { "collection": { "id": "…", "slug": "…", "visibility": "private" } }
# 2. Add several links to it in one call
curl -X POST https://quiklink.ai/api/v1/links/batch \
-H "Authorization: Bearer qlk_live_…" \
-H "Content-Type: application/json" \
-d '{
"collectionId": "…",
"urls": [
"https://example.com/nist-pqc",
"https://example.com/pqxdh"
]
}'
# → 201 { "created": 2, "failed": 0, "results": [ … ] }Endpoints
Save one link. Body: { url, note?, collectionId? }. Returns 201 { link }. If collectionId is given it must be one of yours (else 404).
Save up to 50 links at once. Body: { urls[], collectionId? , newCollection? }. Pass newCollection (e.g. { title }) to create a collection and fill it in one call. Invalid URLs are skipped and reported per item; returns { collection, created, failed, results }.
Search your links by URL, title, or description. Omit q for your most recent links. Returns { links }.
Edit a saved link. Body: { status?, note?, tags?, collectionId? }. status is one of inbox, kept, or archived (triage); tags replaces the existing set. Returns { link }.
Permanently delete a link and remove it from every collection. Returns 204.
Create a collection. Body: { title, description?, visibility? }. Defaults to private. Returns 201 { collection }.
List your collections with link counts. Returns { collections }.
Add an existing link to a collection. Body: { linkId }. Both must belong to you.
Rename or edit a collection. Body: { title?, description?, visibility? }. Returns { collection } with the updated row and link count. (Publishing stays a separate step in the app.)
Delete a collection and its editions. The links themselves stay in your library. Returns 204.
5. Limits & privacy
- Private by default. Links and collections created via the API are owner-only. A collection goes public only when you publish it from the app. Row-level security means a token can only ever touch its owner's data.
- Rate limit. Each token is limited to 100 requests per minute. Over the limit, requests get a
429with aRetry-Afterheader — wait that many seconds and retry. Limits are per token, so one token's traffic never throttles another. - Batch cap.
/api/v1/links/batchaccepts up to 50 URLs per request — split larger sets into multiple calls. - Background enrichment. Endpoints return as soon as the link row is created; metadata and AI summaries fill in afterward, and count toward your monthly enrichment quota (add your own AI key in Settings to bypass the cap).
- Revoke anytime. Deleting a token in Settings takes effect immediately — the next request with it gets a
401.