Skip to Content
Technical ReferenceApi Reference

Last Updated: 3/13/2026


API Reference

LinkAce provides a comprehensive REST API for programmatic access to your bookmarks, lists, tags, and notes.

Authentication

All API endpoints require authentication using Laravel Sanctum tokens. You must include your API token in the Authorization header:

Authorization: Bearer YOUR_API_TOKEN

API tokens can be generated from the User Settings page in the LinkAce interface.

Rate Limiting

API requests are rate-limited based on your configuration. The default rate limit is defined in config('app.api_rate_limit').

API Version

Current API version: v2

Check the API version:

GET /api/version
GET /api/v2/links

Returns a paginated list of links.

Query Parameters:

  • page - Page number (default: 1)
  • per_page - Items per page
  • order_by - Sort field (id, url, title, description, visibility, status, check_disabled, created_at, updated_at, random)
  • order_dir - Sort direction (asc, desc)
GET /api/v2/links/{id}

Returns a single link by ID.

POST /api/v2/links

Request Body:

{ "url": "https://example.com", "title": "Example Site", "description": "Optional description", "visibility": 1, "check_disabled": false, "tags": [1, 2, 3], "lists": [1, 2] }

Visibility Values:

  • 1 - Public
  • 2 - Internal
  • 3 - Private
PATCH /api/v2/links/{id}

Same request body format as Create Link.

DELETE /api/v2/links/{id}

Soft deletes a link (moves to trash).

GET /api/v2/links/check?url={url}

Checks if a URL already exists in your bookmarks.

GET /api/v2/links/{id}/notes

Returns all notes attached to a specific link.

Lists API

List All Lists

GET /api/v2/lists

Returns a paginated list of bookmark lists.

Get List

GET /api/v2/lists/{id}

Returns a single list by ID.

Create List

POST /api/v2/lists

Request Body:

{ "name": "My List", "description": "Optional description", "visibility": 1 }

Update List

PATCH /api/v2/lists/{id}

Same request body format as Create List.

Delete List

DELETE /api/v2/lists/{id}
GET /api/v2/lists/{id}/links

Returns all links in a specific list.

Tags API

List All Tags

GET /api/v2/tags

Returns a paginated list of tags.

Get Tag

GET /api/v2/tags/{id}

Returns a single tag by ID.

Create Tag

POST /api/v2/tags

Request Body:

{ "name": "technology", "visibility": 1 }

Update Tag

PATCH /api/v2/tags/{id}

Same request body format as Create Tag.

Delete Tag

DELETE /api/v2/tags/{id}
GET /api/v2/tags/{id}/links

Returns all links tagged with a specific tag.

Notes API

Create Note

POST /api/v2/notes

Request Body:

{ "link_id": 1, "note": "My note text" }

Update Note

PATCH /api/v2/notes/{id}

Same request body format as Create Note.

Delete Note

DELETE /api/v2/notes/{id}

Bulk Operations API

POST /api/v2/bulk/links

Create multiple links in a single request.

Bulk Create Lists

POST /api/v2/bulk/lists

Create multiple lists in a single request.

Bulk Create Tags

POST /api/v2/bulk/tags

Create multiple tags in a single request.

PATCH /api/v2/bulk/links

Update multiple links at once.

Bulk Update Lists

PATCH /api/v2/bulk/lists

Update multiple lists at once.

Bulk Update Tags

PATCH /api/v2/bulk/tags

Update multiple tags at once.

Bulk Delete

DELETE /api/v2/bulk/delete

Delete multiple items (links, lists, tags, or notes) at once.

Search API

GET /api/v2/search/links?query={query}

Search for links by title, description, or URL.

Search by Tags

GET /api/v2/search/tags?tags[]={tag_id}

Find links with specific tags.

Search by Lists

GET /api/v2/search/lists?lists[]={list_id}

Find links in specific lists.

Trash API

GET /api/v2/trash/links

Returns all soft-deleted links.

Get Trashed Lists

GET /api/v2/trash/lists

Returns all soft-deleted lists.

Get Trashed Tags

GET /api/v2/trash/tags

Returns all soft-deleted tags.

Get Trashed Notes

GET /api/v2/trash/notes

Returns all soft-deleted notes.

Restore from Trash

PATCH /api/v2/trash/restore

Restore items from trash.

Request Body:

{ "type": "link", "ids": [1, 2, 3] }

Clear Trash

DELETE /api/v2/trash/clear

Permanently delete all items in trash.

Response Format

All API responses follow a consistent JSON format:

Success Response:

{ "data": { ... }, "meta": { "current_page": 1, "total": 100 } }

Error Response:

{ "message": "Error description", "errors": { "field": ["Validation error message"] } }

Status Codes

  • 200 OK - Successful request
  • 201 Created - Resource created successfully
  • 204 No Content - Successful deletion
  • 400 Bad Request - Invalid request
  • 401 Unauthorized - Missing or invalid authentication
  • 403 Forbidden - Insufficient permissions
  • 404 Not Found - Resource not found
  • 422 Unprocessable Entity - Validation errors
  • 429 Too Many Requests - Rate limit exceeded
  • 500 Internal Server Error - Server error