### Run Quick Start Script Source: https://docs.karakeep.app/development/setup Executes the automated setup script to initialize Docker services and install dependencies. ```bash ./start-dev.sh ``` -------------------------------- ### Start Development Stack Source: https://docs.karakeep.app/development/setup Launch all services, including dependencies, package installation, and database migrations. ```bash docker compose -f docker/docker-compose.dev.yml up ``` -------------------------------- ### Pnpm Install Output Source: https://docs.karakeep.app/development/setup Example output of a successful pnpm installation. ```text Scope: all 20 workspace projects Lockfile is up to date, resolution step is skipped Packages: +3129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 0, reused 2699, downloaded 0, added 3129, done devDependencies: + @karakeep/prettier-config 0.1.0 <- tooling/prettier . prepare$ husky └─ Done in 45ms Done in 5.5s ``` -------------------------------- ### Download the Karakeep installation script Source: https://docs.karakeep.app/installation/debuntu Fetches the installation script from the official repository. ```bash wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/karakeep-linux.sh ``` -------------------------------- ### Install Karakeep Source: https://docs.karakeep.app/installation/archlinux Install the main Karakeep package using the paru AUR helper. ```bash paru -S karakeep ``` -------------------------------- ### Get asset using HttpClient Source: https://docs.karakeep.app/api/get-asset Example implementation using C# HttpClient to fetch an asset. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/assets/:assetId"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Install Optional Dependencies Source: https://docs.karakeep.app/installation/archlinux Install additional tools for CLI functionality, automatic tagging, and video downloading. ```bash # karakeep-cli: karakeep cli tool paru -S karakeep-cli # ollama: for automatic tagging sudo pacman -S ollama # yt-dlp: for download video sudo pacman -S yt-dlp ``` -------------------------------- ### HTTP Client Request Example Source: https://docs.karakeep.app/api/get-bookmark-highlights Example implementation using C# HttpClient to fetch highlights. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/bookmarks/:bookmarkId/highlights"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Install Dependencies Source: https://docs.karakeep.app/development/setup Installs project dependencies using pnpm. ```bash $ pnpm install ``` -------------------------------- ### Migrate baremetal installation Source: https://docs.karakeep.app/administration/hoarder-to-karakeep-migration Run the migration script to transition a Debian or Ubuntu installation to Karakeep. ```bash bash karakeep-linux.sh migrate ``` -------------------------------- ### Install Karakeep CLI Source: https://docs.karakeep.app/administration/server-migration Installation commands for the Karakeep CLI via NPM or Docker. ```shell npm install -g @karakeep/cli ``` ```shell docker run --rm ghcr.io/karakeep-app/karakeep-cli:release --help ``` -------------------------------- ### Install Node.js via NVM Source: https://docs.karakeep.app/development/setup Installs the required Node.js version 24. ```bash $ nvm install 24 ``` -------------------------------- ### Run the Karakeep installer or updater Source: https://docs.karakeep.app/installation/debuntu Executes the script with either the install or update argument. Requires root or sudo privileges. ```bash bash karakeep-linux.sh install ``` ```bash bash karakeep-linux.sh update ``` -------------------------------- ### Install SQLite3 on Linux Source: https://docs.karakeep.app/administration/FAQ Command to install the SQLite3 command-line interface on Linux systems. ```bash apt-get install sqlite3 ``` -------------------------------- ### CLI Configuration File Source: https://docs.karakeep.app/integrations/command-line Example JSON structure for the local configuration file. ```json { "serverAddr": "https://try.karakeep.app", "apiKey": "mysupersecretkey" } ``` -------------------------------- ### Setup Browser Extension Source: https://docs.karakeep.app/development/setup Commands to build the browser extension and prepare it for loading in developer mode. ```bash cd apps/browser-extension pnpm dev ``` -------------------------------- ### Install Karakeep CLI via NPM Source: https://docs.karakeep.app/command-line Installs the CLI globally using the Node Package Manager. ```bash npm install -g @karakeep/cli ``` -------------------------------- ### Start Drizzle Studio Source: https://docs.karakeep.app/development/database Launches the Drizzle Studio web interface for database inspection. ```bash pnpm run db:studio ``` -------------------------------- ### Backups response schema example Source: https://docs.karakeep.app/api/list-backups Example JSON structure returned upon a successful 200 OK response. ```json { "backups": [ { "id": "string", "userId": "string", "assetId": "string", "createdAt": "string", "size": 0, "bookmarkCount": 0, "status": "pending", "errorMessage": "string" } ] } ``` -------------------------------- ### Verify Corepack Installation Source: https://docs.karakeep.app/development/setup Checks if corepack is installed and available in the system path. ```bash $ command -v corepack /home//.nvm/versions/node/v22.14.0/bin/corepack ``` -------------------------------- ### Retrieve Bookmarks Response Example Source: https://docs.karakeep.app/api/get-list-bookmarks Example JSON response structure for a successful request to fetch a list of bookmarks. ```json { "bookmarks": [ { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string", "tags": [ { "id": "string", "name": "string", "attachedBy": "ai" } ], "content": { "type": "link", "url": "string", "title": "string", "description": "string", "imageUrl": "string", "imageAssetId": "string", "screenshotAssetId": "string", "pdfAssetId": "string", "fullPageArchiveAssetId": "string", "precrawledArchiveAssetId": "string", "videoAssetId": "string", "favicon": "string", "htmlContent": "string", "contentAssetId": "string", "crawledAt": "string", "crawlStatus": "success", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string" }, "assets": [ { "id": "string", "assetType": "linkHtmlContent", "fileName": "string" } ] } ], "nextCursor": "string" } ``` -------------------------------- ### Success Response Example Source: https://docs.karakeep.app/api/attach-tags-to-bookmark Example of a successful response returning the IDs of the attached tags. ```json { "attached": [ "ieidlxygmwj87oxz5hxttoc8" ] } ``` -------------------------------- ### Highlights response schema example Source: https://docs.karakeep.app/api/list-highlights Example JSON structure returned by the highlights endpoint. ```json { "highlights": [ { "bookmarkId": "string", "startOffset": 0, "endOffset": 0, "color": "yellow", "text": "string", "note": "string", "id": "string", "userId": "string", "createdAt": "string" } ], "nextCursor": "string" } ``` -------------------------------- ### Request body example Source: https://docs.karakeep.app/api/create-highlight The JSON payload required to create a highlight. ```json { "bookmarkId": "string", "startOffset": 0, "endOffset": 0, "color": "yellow", "text": "string", "note": "string" } ``` -------------------------------- ### Enable Karakeep Service Source: https://docs.karakeep.app/installation/archlinux Start and enable the Karakeep target service to run the application. ```bash sudo systemctl enable --now karakeep.target ``` -------------------------------- ### Start Docker services Source: https://docs.karakeep.app/installation/docker Launch the application containers in detached mode. ```bash docker compose up -d ``` -------------------------------- ### Trigger backup with HttpClient Source: https://docs.karakeep.app/api/create-backup Example implementation using C# HttpClient to trigger a backup. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/backups"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Not Found Error Response Source: https://docs.karakeep.app/api/attach-tags-to-bookmark Example response when the specified bookmark cannot be found. ```json { "code": "string", "message": "string" } ``` -------------------------------- ### Request Body Example Source: https://docs.karakeep.app/api/update-bookmark JSON payload structure for updating bookmark fields. ```json { "archived": true, "favourited": true, "summary": "string", "note": "string", "title": "string", "createdAt": "string", "url": "string", "description": "string", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string", "text": "string", "assetContent": "string" } ``` -------------------------------- ### Run Meilisearch via Docker Source: https://docs.karakeep.app/development/setup Starts the Meilisearch service using Docker. ```bash docker run -p 7700:7700 getmeili/meilisearch:v1.41.0 ``` -------------------------------- ### C# HttpClient request Source: https://docs.karakeep.app/api/get-list Example implementation using HttpClient in C#. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/lists/:listId"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Fetch highlight using HttpClient Source: https://docs.karakeep.app/api/get-highlight Example implementation using C# HttpClient to retrieve a highlight. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/highlights/:highlightId"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Summarize bookmark using HttpClient Source: https://docs.karakeep.app/api/summarize-bookmark Example implementation using C# HttpClient to trigger the summarization endpoint. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/bookmarks/:bookmarkId/summarize"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Check URL with HttpClient Source: https://docs.karakeep.app/api/check-bookmark-url Example implementation using C# HttpClient to verify a bookmark. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/bookmarks/check-url"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### C# HttpClient backup request Source: https://docs.karakeep.app/api/get-backup Example of how to fetch a backup using C# HttpClient. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/backups/:backupId"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Install Karakeep skill via CLI Source: https://docs.karakeep.app/integrations/agentic-skills Use the skills.sh CLI to add the Karakeep skill to your project. ```bash npx skills add karakeep-app/karakeep ``` -------------------------------- ### C# HttpClient request Source: https://docs.karakeep.app/api/get-tag Example implementation using HttpClient to fetch a tag. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/tags/:tagId"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Request Body Example Source: https://docs.karakeep.app/api/attach-asset-to-bookmark The required JSON body structure for the request. ```json { "id": "string", "assetType": "linkHtmlContent" } ``` -------------------------------- ### Bookmark response schema example Source: https://docs.karakeep.app/api/summarize-bookmark The JSON structure returned when a bookmark is successfully summarized. ```json { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string" } ``` -------------------------------- ### Request body example Source: https://docs.karakeep.app/api/update-list The JSON payload structure for updating list fields. ```json { "name": "string", "description": "string", "icon": "string", "parentId": "string", "query": "string", "public": true } ``` -------------------------------- ### Bookmark List Response Example Source: https://docs.karakeep.app/api/list-bookmarks Represents the JSON structure returned when successfully fetching a paginated list of bookmarks. ```json { "bookmarks": [ { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string", "tags": [ { "id": "string", "name": "string", "attachedBy": "ai" } ], "content": { "type": "link", "url": "string", "title": "string", "description": "string", "imageUrl": "string", "imageAssetId": "string", "screenshotAssetId": "string", "pdfAssetId": "string", "fullPageArchiveAssetId": "string", "precrawledArchiveAssetId": "string", "videoAssetId": "string", "favicon": "string", "htmlContent": "string", "contentAssetId": "string", "crawledAt": "string", "crawlStatus": "success", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string" }, "assets": [ { "id": "string", "assetType": "linkHtmlContent", "fileName": "string" } ] } ], "nextCursor": "string" } ``` -------------------------------- ### Search Query Examples Source: https://docs.karakeep.app/using-karakeep/search-query-language Common patterns for filtering bookmarks using qualifiers and boolean logic. ```text # Find favorited bookmarks from 2023 that are tagged "important" is:fav after:2023-01-01 before:2023-12-31 #important # Find archived bookmarks that are either in "reading" list or tagged "work" is:archived and (list:reading or #work) # Find bookmarks that are not tagged or not in any list -is:tagged or -is:inlist # Find bookmarks with "React" in the title title:React ``` -------------------------------- ### Update Highlight with HttpClient Source: https://docs.karakeep.app/api/update-highlight Example implementation using C# HttpClient to perform the PATCH request. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Patch, "https://try.karakeep.app/api/v1/highlights/:highlightId"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent("{\n \"color\": \"yellow\",\n \"note\": \"string\"\n}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Upload asset using C# HttpClient Source: https://docs.karakeep.app/api/upload-asset Example implementation for uploading a file using the C# HttpClient library. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/assets"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent(string.Empty); content.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Get all bookmarks endpoint Source: https://docs.karakeep.app/api/list-bookmarks The base endpoint for retrieving the user's bookmark collection. ```http GET https://try.karakeep.app/api/v1/bookmarks ``` -------------------------------- ### Initialize Authentication Source: https://docs.karakeep.app/integrations/command-line Run the interactive command to set up the configuration file. ```bash karakeep auth init ``` -------------------------------- ### Delete bookmark using HttpClient Source: https://docs.karakeep.app/api/delete-bookmark Example of how to perform the delete request using C# HttpClient. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Delete, "https://try.karakeep.app/api/v1/bookmarks/:bookmarkId"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Initialize Environment Variables Source: https://docs.karakeep.app/development/setup Copy the sample environment file to create a local configuration. ```bash cp .env.sample .env ``` -------------------------------- ### Attach Asset via HttpClient Source: https://docs.karakeep.app/api/attach-asset-to-bookmark Example implementation using C# HttpClient to perform the POST request. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/bookmarks/:bookmarkId/assets"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent("{\n \"id\": \"string\",\n \"assetType\": \"linkHtmlContent\"\n}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Deploy the service Source: https://docs.karakeep.app/installation/kubernetes Execute the deployment process using the provided Makefile. ```bash make deploy ``` -------------------------------- ### C# HttpClient Request Source: https://docs.karakeep.app/api/get-current-user Example implementation using HttpClient to fetch user data with a Bearer token. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/users/me"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### GET https://try.karakeep.app/api/v1/lists Source: https://docs.karakeep.app/api/list-lists Retrieve all bookmark lists for the authenticated user, including both manual and smart lists. ```APIDOC ## GET https://try.karakeep.app/api/v1/lists ### Description Retrieve all bookmark lists for the authenticated user, including both manual and smart lists. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/lists ### Response #### Success Response (200) - **lists** (array) - Array of list objects containing id, name, description, icon, parentId, type, query, public, hasCollaborators, and userRole. #### Response Example { "lists": [ { "id": "string", "name": "string", "description": "string", "icon": "string", "parentId": "string", "type": "manual", "query": "string", "public": true, "hasCollaborators": true, "userRole": "owner" } ] } #### Error Response (401) - **Unauthorized** (string) - The Bearer token is missing, invalid, or expired. ``` -------------------------------- ### Tags response schema example Source: https://docs.karakeep.app/api/list-tags Example JSON structure returned by the tags endpoint. ```json { "tags": [ { "id": "string", "name": "string", "numBookmarks": 0, "numBookmarksByAttachedType": { "ai": 0, "human": 0 } } ], "nextCursor": "string" } ``` -------------------------------- ### Karakeep CLI Usage and Help Source: https://docs.karakeep.app/command-line Displays the base command and the full help menu for the CLI. ```bash karakeep ``` ```bash Usage: karakeep [options] [command] A CLI interface to interact with the karakeep api Options: --api-key the API key to interact with the API (env: KARAKEEP_API_KEY) --server-addr the address of the server to connect to (env: KARAKEEP_SERVER_ADDR) --json to output the result as JSON -V, --version output the version number -h, --help display help for command Commands: auth authentication commands bookmarks manipulating bookmarks lists manipulating lists tags manipulating tags whoami returns info about the owner of this API key help [command] display help for command ``` -------------------------------- ### Quick Start Mobile App Source: https://docs.karakeep.app/development/setup Standard commands to launch the mobile application in development mode for iOS or Android. ```bash # ios pnpm ios # android pnpm android ``` -------------------------------- ### Import bookmarks via CLI Source: https://docs.karakeep.app/using-karakeep/import Iterate through a text file containing one URL per line and add each link to Karakeep using the CLI. ```bash while IFS= read -r url; do karakeep --api-key "" --server-addr "" bookmarks add --link "$url" done < all_links.txt ``` -------------------------------- ### Create list using C# HttpClient Source: https://docs.karakeep.app/api/create-list Example implementation for creating a list using the C# HttpClient library. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/lists"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent("{\n \"name\": \"string\",\n \"description\": \"string\",\n \"icon\": \"string\",\n \"type\": \"manual\",\n \"query\": \"string\",\n \"parentId\": \"string\"\n}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Detach tags response example Source: https://docs.karakeep.app/api/detach-tags-from-bookmark Example JSON response body returned upon successfully detaching tags. ```json { "detached": [ "ieidlxygmwj87oxz5hxttoc8" ] } ``` -------------------------------- ### Create highlight using C# HttpClient Source: https://docs.karakeep.app/api/create-highlight Example implementation for creating a highlight using the C# HttpClient library. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/highlights"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent("{\n \"bookmarkId\": \"string\",\n \"startOffset\": 0,\n \"endOffset\": 0,\n \"color\": \"yellow\",\n \"text\": \"string\",\n \"note\": \"string\"\n}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### GET /bookmarks Source: https://docs.karakeep.app/api/list-bookmarks Retrieves a paginated list of bookmarks. ```APIDOC ## GET /bookmarks ### Description A paginated list of bookmarks. ### Method GET ### Endpoint /bookmarks ### Response #### Success Response (200) - **bookmarks** (array) - List of bookmark objects - **nextCursor** (string) - Cursor for the next page, or null if no more results. #### Response Example { "bookmarks": [ { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string", "tags": [ { "id": "string", "name": "string", "attachedBy": "ai" } ], "content": { "type": "link", "url": "string", "title": "string", "description": "string", "imageUrl": "string", "imageAssetId": "string", "screenshotAssetId": "string", "pdfAssetId": "string", "fullPageArchiveAssetId": "string", "precrawledArchiveAssetId": "string", "videoAssetId": "string", "favicon": "string", "htmlContent": "string", "contentAssetId": "string", "crawledAt": "string", "crawlStatus": "success", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string" }, "assets": [ { "id": "string", "assetType": "linkHtmlContent", "fileName": "string" } ] } ], "nextCursor": "string" } #### Error Response (401) - **Unauthorized** (string) - The Bearer token is missing, invalid, or expired. ``` -------------------------------- ### Retrieve bookmark lists using HttpClient Source: https://docs.karakeep.app/api/get-bookmark-lists Example implementation using C# HttpClient to fetch bookmark lists. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://try.karakeep.app/api/v1/bookmarks/:bookmarkId/lists"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### GET /bookmarks Source: https://docs.karakeep.app/api/get-list-bookmarks Retrieves a paginated list of bookmarks. ```APIDOC ## GET /bookmarks ### Description Retrieves a paginated list of bookmarks in the specified list. ### Method GET ### Endpoint /bookmarks ### Response #### Success Response (200) - **bookmarks** (array) - List of bookmark objects - **nextCursor** (string) - Cursor for the next page, or null if no more results. #### Response Example { "bookmarks": [ { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string", "tags": [ { "id": "string", "name": "string", "attachedBy": "ai" } ], "content": { "type": "link", "url": "string", "title": "string", "description": "string", "imageUrl": "string", "imageAssetId": "string", "screenshotAssetId": "string", "pdfAssetId": "string", "fullPageArchiveAssetId": "string", "precrawledArchiveAssetId": "string", "videoAssetId": "string", "favicon": "string", "htmlContent": "string", "contentAssetId": "string", "crawledAt": "string", "crawlStatus": "success", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string" }, "assets": [ { "id": "string", "assetType": "linkHtmlContent", "fileName": "string" } ] } ], "nextCursor": "string" } ``` -------------------------------- ### Unauthorized response example Source: https://docs.karakeep.app/api/create-backup The response body returned when authentication fails. ```json "Unauthorized" ``` -------------------------------- ### Get highlights endpoint definition Source: https://docs.karakeep.app/api/list-highlights The base endpoint for retrieving highlights. ```http GET ## https://try.karakeep.app/api/v1/highlights ``` -------------------------------- ### Create project directory Source: https://docs.karakeep.app/installation/docker Create a new directory to host the Docker Compose configuration and environment files. ```bash mkdir karakeep-app ``` -------------------------------- ### GET https://try.karakeep.app/api/v1/highlights/:highlightId Source: https://docs.karakeep.app/api/get-highlight Retrieve a single highlight by its ID. ```APIDOC ## GET https://try.karakeep.app/api/v1/highlights/:highlightId ### Description Retrieve a single highlight by its ID. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/highlights/:highlightId ### Parameters #### Path Parameters - **highlightId** (string) - Required - The unique identifier of the highlight. ### Response #### Success Response (200) - **bookmarkId** (string) - Required - The ID of the associated bookmark. - **startOffset** (number) - Required - The starting offset of the highlight. - **endOffset** (number) - Required - The ending offset of the highlight. - **color** (string) - Optional - The color of the highlight (yellow, red, green, blue). - **text** (string) - Required - The highlighted text content. - **note** (string) - Required - The note associated with the highlight. - **id** (string) - Required - The unique ID of the highlight. - **userId** (string) - Required - The ID of the user who created the highlight. - **createdAt** (string) - Required - The timestamp of creation. #### Response Example { "bookmarkId": "string", "startOffset": 0, "endOffset": 0, "color": "yellow", "text": "string", "note": "string", "id": "string", "userId": "string", "createdAt": "string" } #### Error Response (401) - Unauthorized — the Bearer token is missing, invalid, or expired. #### Error Response (404) - **code** (string) - Required - A machine-readable error code. - **message** (string) - Required - A human-readable error message. ``` -------------------------------- ### GET https://try.karakeep.app/api/v1/lists/:listId Source: https://docs.karakeep.app/api/get-list Retrieve a single list by its ID. ```APIDOC ## GET https://try.karakeep.app/api/v1/lists/:listId ### Description Retrieve a single list by its ID. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/lists/:listId ### Parameters #### Path Parameters - **listId** (ListId) - Required - The unique identifier of the list. ### Response #### Success Response (200) - **id** (string) - The list ID. - **name** (string) - The name of the list. - **description** (string) - The description of the list. - **icon** (string) - The icon associated with the list. - **parentId** (string) - The parent list ID if applicable. - **type** (string) - The type of list (manual or smart). - **query** (string) - The query string for smart lists. - **public** (boolean) - Whether the list is public. - **hasCollaborators** (boolean) - Whether the list has collaborators. - **userRole** (string) - The user's role in the list (owner, editor, viewer, public). #### Response Example { "id": "string", "name": "string", "description": "string", "icon": "string", "parentId": "string", "type": "manual", "query": "string", "public": true, "hasCollaborators": true, "userRole": "owner" } ``` -------------------------------- ### Run Migration Command Source: https://docs.karakeep.app/administration/server-migration Executes the migration process between a source and destination server. ```shell karakeep --server-addr https://src.example.com --api-key migrate \ --dest-server https://dest.example.com \ --dest-api-key ``` -------------------------------- ### GET /api/v1/bookmarks/:bookmarkId/lists Source: https://docs.karakeep.app/api/get-bookmark-lists Retrieve all lists that contain the specified bookmark. ```APIDOC ## GET /api/v1/bookmarks/:bookmarkId/lists ### Description Retrieve all lists that contain the specified bookmark. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/bookmarks/:bookmarkId/lists ### Parameters #### Path Parameters - **bookmarkId** (BookmarkId) - Required - The ID of the bookmark. ### Response #### Success Response (200) - **lists** (object[]) - The lists that contain this bookmark. #### Response Example { "lists": [ { "id": "string", "name": "string", "description": "string", "icon": "string", "parentId": "string", "type": "manual", "query": "string", "public": true, "hasCollaborators": true, "userRole": "owner" } ] } ``` -------------------------------- ### GET /api/v1/backups/:backupId/download Source: https://docs.karakeep.app/api/download-backup Downloads a completed backup as a zip archive. ```APIDOC ## GET /api/v1/backups/:backupId/download ### Description Download a completed backup as a zip archive. The backup must have a 'success' status. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/backups/:backupId/download ### Parameters #### Path Parameters - **backupId** (BackupId) - Required - The unique identifier of the backup. ### Response #### Success Response (200) - **application/zip** - The backup file as a zip archive. #### Error Response (401) - **text/plain** - Unauthorized — the Bearer token is missing, invalid, or expired. #### Error Response (404) - **code** (string) - A machine-readable error code. - **message** (string) - A human-readable error message. ``` -------------------------------- ### Access Demo Credentials Source: https://docs.karakeep.app/ Use these credentials to log in to the read-only demo instance of the application. ```text email: demo@karakeep.app password: demodemo ``` -------------------------------- ### GET /api/v1/tags/:tagId/bookmarks Source: https://docs.karakeep.app/api/get-tag-bookmarks Retrieves a list of bookmarks for a given tag ID. ```APIDOC ## GET /api/v1/tags/:tagId/bookmarks ### Description Retrieves a list of bookmarks associated with the specified tag ID. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/tags/:tagId/bookmarks ### Parameters #### Path Parameters - **tagId** (string) - Required - The unique identifier of the tag. #### Query Parameters - **sortOrder** (string) - Optional - Sort order (asc or desc). - **limit** (integer) - Optional - Maximum number of results to return. - **cursor** (string) - Optional - Pagination cursor. - **includeContent** (boolean) - Optional - Whether to include bookmark content (true or false). ``` -------------------------------- ### GET /api/v1/bookmarks Source: https://docs.karakeep.app/api/list-bookmarks Retrieves a list of bookmarks based on the provided query parameters. ```APIDOC ## GET /api/v1/bookmarks ### Description Retrieves a list of bookmarks. Supports filtering by archive status, favorite status, and sorting options. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/bookmarks ### Parameters #### Query Parameters - **archived** (boolean) - Optional - Filter by archived status (true/false) - **favourited** (boolean) - Optional - Filter by favourited status (true/false) - **sortOrder** (string) - Optional - Sort order (asc/desc) - **limit** (integer) - Optional - Number of results to return - **cursor** (string) - Optional - Cursor for pagination - **includeContent** (boolean) - Optional - Include bookmark content (true/false) ### Request Example GET https://try.karakeep.app/api/v1/bookmarks?limit=10 ### Response #### Success Response (200) - **bookmarks** (array) - List of bookmark objects ``` -------------------------------- ### GET /api/v1/lists/:listId/bookmarks Source: https://docs.karakeep.app/api/get-list-bookmarks Retrieves a collection of bookmarks for a given list ID. ```APIDOC ## GET /api/v1/lists/:listId/bookmarks ### Description Retrieves a list of bookmarks associated with the specified list ID. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/lists/:listId/bookmarks ### Parameters #### Path Parameters - **listId** (string) - Required - The unique identifier of the list. #### Query Parameters - **sortOrder** (string) - Optional - Sort order, either 'asc' or 'desc'. - **limit** (integer) - Optional - Maximum number of items to return. - **cursor** (string) - Optional - Cursor for pagination. - **includeContent** (boolean) - Optional - Whether to include content, 'true' or 'false'. ``` -------------------------------- ### Get all tags endpoint URL Source: https://docs.karakeep.app/api/list-tags The base endpoint for retrieving the list of tags. ```http GET ## https://try.karakeep.app/api/v1/tags ``` -------------------------------- ### Configure Gemini Provider Source: https://docs.karakeep.app/configuration/different-ai-providers Connect to Gemini using the OpenAI-compatible API. Requires an API key from Google AI Studio and a billing account. ```bash OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta OPENAI_API_KEY=YOUR_API_KEY # Example models: INFERENCE_TEXT_MODEL=gemini-2.5-flash-lite INFERENCE_IMAGE_MODEL=gemini-2.5-flash-lite ``` -------------------------------- ### GET /api/v1/assets/:assetId Source: https://docs.karakeep.app/api/get-asset Retrieves the binary content of an asset identified by its assetId. ```APIDOC ## GET /api/v1/assets/:assetId ### Description Download an asset's binary content. The response Content-Type header is set based on the asset's MIME type. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/assets/:assetId ### Parameters #### Path Parameters - **assetId** (AssetId) - Required - The unique identifier of the asset. ### Response #### Success Response (200) - **Binary Content** (blob) - The asset's binary content. #### Error Response (401) - **Unauthorized** (string) - The Bearer token is missing, invalid, or expired. ``` -------------------------------- ### Create tag using C# HttpClient Source: https://docs.karakeep.app/api/create-tag Example implementation for creating a tag using the C# HttpClient library. ```csharp var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://try.karakeep.app/api/v1/tags"); request.Headers.Add("Accept", "application/json"); request.Headers.Add("Authorization", "Bearer "); var content = new StringContent("{\n \"name\": \"string\"\n}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); ``` -------------------------------- ### Enable Corepack Source: https://docs.karakeep.app/development/setup Enables corepack for package management. ```bash $ corepack enable ``` -------------------------------- ### Configure Native Ollama API Source: https://docs.karakeep.app/configuration/different-ai-providers Use the native Ollama API. Ensure OPENAI_API_KEY is not set to avoid precedence issues. ```bash # MAKE SURE YOU DON'T HAVE OPENAI_API_KEY set, otherwise it takes precedence. OLLAMA_BASE_URL=http://ollama.mylab.com:11434 # Make sure to pull the models in ollama first. Example models: INFERENCE_TEXT_MODEL=gemma3 INFERENCE_IMAGE_MODEL=llava # If the model you're using doesn't support structured output, you also need: # INFERENCE_OUTPUT_SCHEMA=plain ``` -------------------------------- ### GET /tags/{tagId}/bookmarks Source: https://docs.karakeep.app/api/get-tag-bookmarks Retrieves a paginated list of bookmarks that have the specified tag. ```APIDOC ## GET /tags/{tagId}/bookmarks ### Description Retrieves a paginated list of bookmarks that have the specified tag. ### Method GET ### Endpoint /tags/{tagId}/bookmarks ### Parameters #### Path Parameters - **tagId** (string) - Required - The unique identifier of the tag. ### Response #### Success Response (200) - **bookmarks** (array) - A list of bookmark objects. - **nextCursor** (string) - Cursor for the next page, or null if no more results. #### Response Example { "bookmarks": [ { "id": "string", "createdAt": "string", "modifiedAt": "string", "title": "string", "archived": true, "favourited": true, "taggingStatus": "success", "summarizationStatus": "success", "note": "string", "summary": "string", "source": "api", "userId": "string", "tags": [ { "id": "string", "name": "string", "attachedBy": "ai" } ], "content": { "type": "link", "url": "string", "title": "string", "description": "string", "imageUrl": "string", "imageAssetId": "string", "screenshotAssetId": "string", "pdfAssetId": "string", "fullPageArchiveAssetId": "string", "precrawledArchiveAssetId": "string", "videoAssetId": "string", "favicon": "string", "htmlContent": "string", "contentAssetId": "string", "crawledAt": "string", "crawlStatus": "success", "author": "string", "publisher": "string", "datePublished": "string", "dateModified": "string" }, "assets": [ { "id": "string", "assetType": "linkHtmlContent", "fileName": "string" } ] } ], "nextCursor": "string" } ``` -------------------------------- ### Validate API Key and Configuration Source: https://docs.karakeep.app/command-line Commands to verify API connectivity and define local configuration files. ```bash karakeep --api-key --server-addr whoami ``` ```bash karakeep --api-key mysupersecretkey --server-addr https://try.karakeep.app whoami { id: 'j29gnbzxxd01q74j2lu88tnb', name: 'Test User', email: 'test@gmail.com' } ``` ```json { "serverAddr": "https://try.karakeep.app", "apiKey": "mysupersecretkey" } ``` ```bash karakeep auth init ``` -------------------------------- ### Connect to database via CLI Source: https://docs.karakeep.app/administration/FAQ Command to open the Karakeep database file using the SQLite3 command-line tool. ```bash sqlite3 db.db ``` -------------------------------- ### GET /bookmarks/search Source: https://docs.karakeep.app/api/search-bookmarks Searches for bookmarks based on a query string and optional filtering parameters. ```APIDOC ## GET /bookmarks/search ### Description Searches for bookmarks matching the provided query string. ### Method GET ### Endpoint https://try.karakeep.app/api/v1/bookmarks/search ### Parameters #### Query Parameters - **q** (string) - Required - The search query string. - **sortOrder** (string) - Optional - Sorting order: asc, desc, or relevance. - **limit** (integer) - Optional - Maximum number of results to return. - **cursor** (string) - Optional - Cursor for pagination. - **includeContent** (boolean) - Optional - Whether to include content in the response (true/false). ### Request Example GET https://try.karakeep.app/api/v1/bookmarks/search?q=example&sortOrder=relevance ``` -------------------------------- ### Download Docker Compose file Source: https://docs.karakeep.app/installation/docker Download the official docker-compose.yml file into the project directory. ```bash wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml ```