Authorization header — see the Authentication guide to obtain one.
All endpoints are relative to the base URL
https://api.bkmark.it/api/v1. Pagination uses cursor-based navigation: pass the nextCursor value from one response as the cursor parameter in your next request. When nextCursor is null, you have reached the last page.GET /api/v1/bookmarks
List bookmarks for the authenticated user. Results are paginated and can be filtered by group, tag, type, source, and read/favorite/archive status.string
Pagination cursor. Pass the
nextCursor value from a previous response to fetch the next page.number
default:"20"
Number of items to return per page. Accepted range: 1–100.
string
Filter to bookmarks that belong to this group UUID.
string
Filter to bookmarks that have this tag UUID applied.
string
Full-text search query. Searches across title, description, and URL.
boolean
When
true, returns only favorited bookmarks.boolean
When
true, returns only archived bookmarks.boolean
When
true, returns only bookmarks that have never been marked as read (i.e., readAt is null).string
Filter by bookmark type. One of:
link, note, code, image.string
Filter by the source that created the bookmark. One of:
web, extension, api, import, slack.string
default:"createdAt"
Field to sort by. One of:
createdAt, title, url.string
default:"desc"
Sort direction. One of:
asc, desc.POST /api/v1/bookmarks
Create a new bookmark. If you omittitle or description, Bkmark automatically fetches and parses the URL to populate them. Tags named in tagNames are created on the fly if they don’t already exist.
string
required
The URL to bookmark. Required for
link and image types.string
Title override. If omitted, Bkmark fetches it from the URL’s
<title> tag.string
Short description or note. Auto-populated from the page’s meta description if omitted.
string
default:"link"
Bookmark type. One of:
link, note, code, image.string[]
Array of tag names to apply. Tags that don’t exist are created automatically.
string[]
Array of group UUIDs to add this bookmark to.
string
The originating surface. One of:
web, extension, api, import, slack. Defaults to api for programmatic requests.boolean
Set to
true to bypass duplicate URL detection and create a second bookmark for the same URL.201 Created with the newly created bookmark object.
GET /api/v1/bookmarks/:id
Retrieve a single bookmark by its UUID.string
required
The UUID of the bookmark to retrieve.
PATCH /api/v1/bookmarks/:id
Update a bookmark’s metadata. All body fields are optional — only send what you want to change.string
required
The UUID of the bookmark to update.
string
New title for the bookmark.
string
New description.
boolean
Set to
true to favorite the bookmark, false to unfavorite it.boolean
Set to
true to archive the bookmark, false to unarchive it.string
ISO 8601 timestamp to mark the bookmark as read (e.g.
"2025-04-01T15:00:00.000Z"). Send null to mark it as unread again.200 OK with the updated bookmark object.
DELETE /api/v1/bookmarks/:id
Delete a bookmark. By default this is a soft delete — the bookmark moves to trash and can be restored. Add?permanent=true to bypass trash and delete immediately.
string
required
The UUID of the bookmark to delete.
boolean
Set to
true to permanently delete the bookmark instead of moving it to trash. This action is irreversible.204 No Content on success.
POST /api/v1/bookmarks/:id/tags
Replace all tags on a bookmark in one call. Any tag names that don’t exist are created automatically. Sending an empty array removes all tags from the bookmark.string
required
The UUID of the bookmark.
string[]
required
Complete list of tag names the bookmark should have after this call. Replaces the existing tag set entirely.
This is a replace operation, not an append. If the bookmark currently has tags
["dev", "reading"] and you POST ["ai"], the result is only ["ai"]. To add a tag without removing others, first fetch the current tags and include them in your new list.200 OK with the updated bookmark object.
POST /api/v1/bookmarks/:id/groups
Replace all group assignments for a bookmark. Sending an empty array removes the bookmark from all groups.string
required
The UUID of the bookmark.
string[]
required
Complete list of group UUIDs the bookmark should belong to after this call. Replaces the existing group assignments entirely.
200 OK with the updated bookmark object.
POST /api/v1/bookmarks/bulk
Apply a single action to up to 500 bookmarks in one request. Use this to batch-tag, move, archive, favorite, or delete bookmarks without looping over individual endpoints.string[]
required
Array of bookmark UUIDs to act on. Maximum 500 items.
string
required
The operation to perform. See the table below for available actions and their extra fields.
string[]
Required when
action is tag. Tag names to add to all selected bookmarks.string[]
Required when
action is move. Group UUIDs to move all selected bookmarks into.GET /api/v1/bookmarks/export
Export your entire bookmark library as a JSON file. The response body is a JSON array of bookmark objects in the same shape as the list endpoint.200 OK with Content-Type: application/json.
POST /api/v1/bookmarks/import
Import bookmarks from a supported format. You can migrate from a browser export, Pocket, Raindrop.io, or a previous Bkmark export.string
required
Source format. One of:
json (Bkmark export), html (browser bookmark export), pocket, raindrop.string
required
The raw file contents as a string (JSON string or HTML string depending on
format).boolean
When
true, bookmarks whose URLs already exist in your library are silently skipped instead of triggering a conflict error.This endpoint is rate-limited to 5 imports per hour per user to protect system performance during large batch jobs.
GET /api/v1/bookmarks/trash
List soft-deleted bookmarks. Supports the same cursor-based pagination as the main list endpoint.GET /api/v1/bookmarks/trash-count
Return the number of bookmarks currently in trash. Useful for displaying a badge in your UI.POST /api/v1/bookmarks/:id/restore
Restore a soft-deleted bookmark from trash back to your active library. The bookmark’s original tags and group assignments are preserved.string
required
The UUID of the trashed bookmark to restore.
200 OK with the restored bookmark object.
DELETE /api/v1/bookmarks/:id/permanent
Permanently delete a specific bookmark. UnlikeDELETE /bookmarks/:id, this endpoint always performs a hard delete regardless of query parameters. The bookmark is unrecoverable after this call.
string
required
The UUID of the bookmark to permanently delete.
204 No Content on success.