Skip to main content
GET
/
x
/
bookmarks
/
folders
Get bookmark folders
curl --request GET \
  --url https://xquik.com/api/v1/x/bookmarks/folders \
  --header 'x-api-key: <api-key>'
import requests

url = "https://xquik.com/api/v1/x/bookmarks/folders"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://xquik.com/api/v1/x/bookmarks/folders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://xquik.com/api/v1/x/bookmarks/folders"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
1 credit per call · All plans from $0.00012/credit
Requires a connected X account. Use folder IDs from this response with GET /x/bookmarks?folderId=... to read tweets saved inside a folder.
curl https://xquik.com/api/v1/x/bookmarks/folders \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
const response = await fetch("https://xquik.com/api/v1/x/bookmarks/folders", {
  headers: { "x-api-key": "xq_YOUR_KEY_HERE" },
});
const data = await response.json();
const folderRows = data.folders.map((folder) => ({
  folder_id: folder.id,
  folder_name: folder.name,
  bookmarks_endpoint: `/x/bookmarks?folderId=${encodeURIComponent(folder.id)}`,
  has_more_folders: data.has_next_page,
}));

for (const row of folderRows) {
  process.stdout.write(`${JSON.stringify(row)}\n`);
}
import json
import requests

response = requests.get(
    "https://xquik.com/api/v1/x/bookmarks/folders",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
)
data = response.json()
folder_rows = [
    {
        "folder_id": folder["id"],
        "folder_name": folder["name"],
        "bookmarks_endpoint": f"/x/bookmarks?folderId={folder['id']}",
        "has_more_folders": data["has_next_page"],
    }
    for folder in data["folders"]
]

for row in folder_rows:
    print(json.dumps(row))
The Node.js and Python snippets shape durable bookmark folder rows instead of printing the full response page. Persist folderRows or folder_rows so a worker can pass folder_id into GET /x/bookmarks?folderId=....

Direct bookmark folder handoff

Use GET /x/bookmarks/folders when a saved-tweet workflow, CRM enrichment job, research queue, or agent needs the current bookmark folder IDs for the authenticated X account. Store folder_id and folder_name. The current route returns one folder page with has_next_page: false and next_cursor: ""; use each folder_id with Bookmarks to fetch the saved tweets inside that folder.

Headers

x-api-key
string
required
Your API key. Session cookie authentication is also supported.

Response

folders
object[]
Array of bookmark folders.
has_next_page
boolean
Always false for the current bookmark folder route.
next_cursor
string
Always an empty string for the current bookmark folder route.
{
  "folders": [
    { "id": "1234567890", "name": "Tech" },
    { "id": "1234567891", "name": "Design" }
  ],
  "has_next_page": false,
  "next_cursor": ""
}
Related: Bookmarks · Timeline
Last modified on May 18, 2026