API Documentation

Access your bookmarks programmatically with the LinkaGoGo REST API.

Authentication

All API requests require an API key sent as a Bearer token in the Authorization header:

Authorization: Bearer lgg_your_api_key_here

Generate API keys in your Account Settings under API Keys. Keys are available on Plus and Premium plans.

Base URL

https://www.linkagogo.com/api/v1

Rate Limits

PlanRequests / day / keyMax keys
Plus5,0003
Premium10,0005

When the limit is exceeded, the API returns 429 Too Many Requests with a Retry-After: 86400 header.

Response Format

All responses are JSON. Errors return:

{"detail": "Error message here"}

Endpoints

User

GET /auth/me

Returns the authenticated user's profile.

Bookmarks

GET /urls

List bookmarks with optional filtering and pagination.

ParameterTypeDescription
folder_idintFilter by folder
qstringFull-text search (title, URL, keywords, comments)
favoriteboolFilter favorites only
sortstringtitle_asc, date_desc, visit_date_desc, visit_count_desc, rating_desc
pageintPage number (default 1)
page_sizeintItems per page (default 50, max 200)
GET /urls/{id}

Get a single bookmark by ID.

POST /urls

Create a new bookmark. If title is omitted or empty, LinkaGoGo auto-fetches the page title.

{
  "url": "https://example.com",
  "title": "Example Site",
  "folder_id": 0,
  "keywords": "example test",
  "comments": "",
  "rating": 0,
  "is_favorite": false
}
PUT /urls/{id}

Update a bookmark. All fields are required (full replacement).

PATCH /urls/{id}

Partially update a bookmark. Only include the fields you want to change.

{"title": "New Title", "keywords": "updated tags"}
DELETE /urls/{id}

Delete a bookmark.

POST /urls/move

Move multiple bookmarks to a folder.

{"ids": [123, 456], "folder_id": 789}
POST /urls/tag

Add or remove keyword tags on multiple bookmarks.

{"ids": [123, 456], "add": ["python", "tutorial"], "remove": ["misc"]}

Account

GET /account/stats

Get account statistics (bookmark count, folder count, favorites, tags, date range).

GET /urls?sort=reminders

List bookmarks with active reminders that are due.

Folders

GET /folders

List all folders (flat array with folder_id for parent).

POST /folders

Create a new folder.

{"name": "My Folder", "folder_id": 0}
POST /folders/create-path

Create a folder path, auto-creating intermediate folders. Returns the leaf folder.

{"path": "Dev/Python/Libraries"}
PUT /folders/{id}

Update a folder (rename, move, toggle public).

DELETE /folders/{id}

Delete a folder and its contents.

Import & Export

GET /export/xbel

Export all bookmarks as XBEL XML. (Plus+)

GET /export/netscape

Export all bookmarks as Netscape HTML.

POST /import/xbel

Import bookmarks from an XBEL XML file (multipart upload or raw XML body). (Plus+)

POST /import/netscape

Import bookmarks from a Netscape HTML file (multipart upload or raw HTML body). Supports Chrome, Firefox, and Safari export formats. (Plus+)

Example: curl

# List bookmarks
curl -H "Authorization: Bearer lgg_your_key" \
  https://www.linkagogo.com/api/v1/urls

# Create a bookmark
curl -X POST -H "Authorization: Bearer lgg_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","title":"Example"}' \
  https://www.linkagogo.com/api/v1/urls

# Search bookmarks
curl -H "Authorization: Bearer lgg_your_key" \
  "https://www.linkagogo.com/api/v1/urls?q=python&sort=date_desc"

Example: JavaScript

const API_KEY = 'lgg_your_key';
const BASE = 'https://www.linkagogo.com/api/v1';

const resp = await fetch(`${BASE}/urls?q=javascript`, {
  headers: { 'Authorization': `Bearer ${API_KEY}` },
});
const data = await resp.json();
console.log(data.bookmarks);