curl -X POST https://api.pocketutils.com/v1/xbel-to-html \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@bookmarks.xbel"
const form = new FormData();
form.append("file", fileInput.files[0]);
const res = await fetch("https://api.pocketutils.com/v1/xbel-to-html", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
const { downloadUrl } = await res.json();
import requests
with open("bookmarks.xbel", "rb") as f:
res = requests.post(
"https://api.pocketutils.com/v1/xbel-to-html",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": f},
)
download_url = res.json()["downloadUrl"]
{
"success": true,
"downloadUrl": "https://api.pocketutils.com/v1/xbel-to-html/download/converted-1784541632760.html",
"fileName": "bookmarks.html",
"message": "File converted successfully"
}
Bookmark Files
XBEL to HTML
Convert an XBEL bookmark archive into a Netscape-format HTML file every browser can import.
POST
/
v1
/
xbel-to-html
curl -X POST https://api.pocketutils.com/v1/xbel-to-html \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@bookmarks.xbel"
const form = new FormData();
form.append("file", fileInput.files[0]);
const res = await fetch("https://api.pocketutils.com/v1/xbel-to-html", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
const { downloadUrl } = await res.json();
import requests
with open("bookmarks.xbel", "rb") as f:
res = requests.post(
"https://api.pocketutils.com/v1/xbel-to-html",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": f},
)
download_url = res.json()["downloadUrl"]
{
"success": true,
"downloadUrl": "https://api.pocketutils.com/v1/xbel-to-html/download/converted-1784541632760.html",
"fileName": "bookmarks.html",
"message": "File converted successfully"
}
Converts an XBEL bookmark file into the Netscape Bookmark HTML format that Chrome, Firefox, Safari, and Edge all accept as an import. Folders, nested folders (up to 100 levels deep), separators, and
See the full error reference for the platform-level codes (
<alias> references are all walked and rendered in their original order; dates are converted from XBEL’s ISO 8601 to the Unix-seconds format the HTML format expects.
1 credit per call
Request
multipart/form-data, not JSON.
file
required
The
.xbel file to convert — must already be plain XBEL XML. Max 10 MB. Must have a .xbel extension (or be sent as application/octet-stream). If your file is encrypted, run it through XBEL Decryptor first.Response
boolean
required
string
required
Absolute URL to fetch the converted HTML file from —
GET it directly, no auth required. Valid for 30 minutes.string
required
Suggested filename for the download, derived from your upload (e.g.
bookmarks.xbel → bookmarks.html).string
required
Download the result
GET the downloadUrl from the response directly — it streams the file with a Content-Disposition: attachment header, ready to import in any browser’s bookmark manager. No credit cost, no auth required. After 30 minutes the file is deleted and the link 404s.
Errors
| Status | Cause |
|---|---|
400 | No file attached to the request |
500 | The file isn’t valid XML, or has no <xbel> root element |
404 | (on the download endpoint) the file’s 30-minute window has expired |
401, 402, 429) that apply to every endpoint.
curl -X POST https://api.pocketutils.com/v1/xbel-to-html \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@bookmarks.xbel"
const form = new FormData();
form.append("file", fileInput.files[0]);
const res = await fetch("https://api.pocketutils.com/v1/xbel-to-html", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
const { downloadUrl } = await res.json();
import requests
with open("bookmarks.xbel", "rb") as f:
res = requests.post(
"https://api.pocketutils.com/v1/xbel-to-html",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": f},
)
download_url = res.json()["downloadUrl"]
{
"success": true,
"downloadUrl": "https://api.pocketutils.com/v1/xbel-to-html/download/converted-1784541632760.html",
"fileName": "bookmarks.html",
"message": "File converted successfully"
}
Was this page helpful?