scope query parameter. The user sees a plain-language description of each permission on the consent screen and can approve or deny the request.
Bkmark enforces scopes on every API request. If your token doesn’t carry the right scope for an endpoint, the API returns 403 Forbidden — even if the token is otherwise valid. This means you must request all the scopes you need upfront; you cannot silently expand them later without sending the user through the authorization flow again.
Request only the scopes your integration genuinely needs. Requesting excessive permissions makes the consent screen more alarming to users, reduces the likelihood they’ll approve, and increases your blast radius if a token is ever compromised. Follow the principle of least privilege.
Available Scopes
| Scope | What it allows | Endpoints unlocked |
|---|---|---|
bookmarks:read | View, search, and export bookmarks | GET /bookmarks, GET /bookmarks/:id, GET /bookmarks/export, GET /bookmarks/trash, GET /search |
bookmarks:write | Create, edit, delete, and import bookmarks | POST /bookmarks, PATCH /bookmarks/:id, DELETE /bookmarks/:id, POST /bookmarks/:id/tags, POST /bookmarks/:id/groups, POST /bookmarks/bulk, POST /bookmarks/import, POST /bookmarks/:id/restore |
tags:read | View tags | GET /tags |
tags:write | Create, rename, and delete tags | POST /tags, PATCH /tags/:id, DELETE /tags/:id |
groups:read | View groups | GET /groups, GET /groups/:id |
groups:write | Create, rename, and delete groups | POST /groups, PATCH /groups/:id, DELETE /groups/:id |
search:read | Full-text search across bookmarks | GET /search |
search:read is a subset of what bookmarks:read already covers — GET /search is accessible with either scope. Request search:read alone when your integration only needs search and should not be able to enumerate a user’s full bookmark list.Scope Details
bookmarks:read
Grants read access to a user’s bookmarks, including the ability to export them and query trash.
Endpoints:
List all bookmarks. Supports filtering by
since, updatedSince, tags, and groups.Fetch a single bookmark by ID.
Export all bookmarks as JSON.
List soft-deleted bookmarks pending permanent deletion.
Full-text search across bookmark titles, descriptions, and URLs.
bookmarks:write
Grants write access to create, modify, and delete bookmarks, plus bulk operations and import.
bookmarks:write does not imply bookmarks:read. If your app needs to read bookmarks it just created, request both scopes.Save a new bookmark.
Update a bookmark’s title, description, tags, groups, favorite status, or archived status.
Soft-delete a bookmark (moves to trash).
Replace all tags on a bookmark.
Replace all group assignments for a bookmark.
Apply a single action (tag, move, archive, favorite, delete, or export) to up to 500 bookmarks at once.
Import bookmarks from a browser HTML export, Pocket, Raindrop, or a Bkmark JSON export.
Restore a soft-deleted bookmark from trash.
tags:read
Grants read access to the user’s tag list.
List all tags, including name, color, and bookmark count.
tags:write
Grants write access to create, rename, and delete tags.
tags:write does not imply tags:read. Request both if you need to read existing tags before creating new ones.Create a new tag.
Rename a tag or change its color.
Delete a tag (removes it from all bookmarks).
groups:read
Grants read access to the user’s groups (collections of bookmarks).
List all groups.
Fetch a single group and its metadata.
groups:write
Grants write access to create, rename, and delete groups.
Create a new group.
Rename a group or change its color.
Delete a group (bookmarks inside are not deleted).
search:read
Grants access to full-text search without exposing the full bookmark list. Use this when your integration only needs to let the user find bookmarks by keyword.
Full-text search across bookmark titles, descriptions, and URLs.
Recommended Scope Sets
Choose the combination that matches your integration type. Copy the scope string directly into your authorization URL.Read-only
Bookmark manager
Full access
Scope Enforcement
When your application makes an API request:- Bkmark validates the
Authorization: Bearertoken. - Bkmark checks whether the token’s granted scopes include the scope required by the endpoint being called.
- If the required scope is missing, Bkmark returns
403 Forbiddenwith an error body indicating which scope is needed.
bookmarks:read but your app later needs bookmarks:write, you must send the user through the authorization flow again with the full set of scopes you need. You cannot silently add scopes to an existing token.