WebBites API

Your library, programmable.

Save a page from anything that can make an HTTP request, search everything you have ever saved, and get a signed webhook the moment a bookmark comes back with its screenshot, summary and tags.

Base URLhttps://api.webbites.io/v1/api

Two calls is most of it

One to save something, one to read it back. Authenticate with a key in a header, get JSON, done — there is no SDK to install and no OAuth dance to implement.

  • REST over HTTPS. JSON in, JSON out.
  • One header: Authorization: Bearer wb_live_…
  • Keys are free on every plan, and revoking one is instant.
# Save a page
curl -X POST https://api.webbites.io/v1/api/bookmarks \
  -H "Authorization: Bearer $WEBBITES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://nuxt.com","tags":["reading"]}'

# Read it back
curl -G https://api.webbites.io/v1/api/bookmarks \
  -H "Authorization: Bearer $WEBBITES_KEY" \
  --data-urlencode "q=nuxt"

What the API gives you

Four things, and everything below is built out of them.

Save anything

POST a URL and it lands in your library, enriched exactly like a save from the app: screenshot, summary, automatic tags.

POST /bookmarks

Search everything

Full-text search, filter by tag or type, and page through the whole library with a cursor.

GET /bookmarks?q=…

React to saves

Register an endpoint and we POST the finished bookmark to it, signed with HMAC-SHA256 so you can prove it came from us.

POST /webhooks

Know where you stand

Your plan, its limits and what you have spent this month, broken down by key.

GET /usage

Rather ask an AI?

Connect Claude, ChatGPT, Cursor or VS Code to your library through the MCP server at https://api.webbites.io/mcp and search, save and organise by asking. No code, same allowance.

Every save comes back enriched

You post a URL. We fetch the page, screenshot it, summarise it and tag it, then hand the whole thing back — through a webhook if you registered one, or the next time you read the bookmark.

  • Title, description, favicon and preview image pulled from the page.
  • A full-page screenshot, so a dead link is still readable.
  • A summary and automatic tags, on top of any tags you passed.
  • A signed delivery with a unique id, so retries are easy to de-duplicate.
bookmark.saved
{
  "id": "dlv_…",
  "event": "bookmark.saved",
  "createdAt": "2026-01-02T10:00:00.000Z",
  "data": {
    "id": "abc123", "url": "https://example.com", "title": "Example", "description": "…",
    "type": "website", "tags": ["docs"], "note": "", "summary": "…",
    "image": "https://…", "screenshot": "https://…", "favicon": "https://…",
    "createdAt": "2026-01-02T10:00:00.000Z"
  }
}

Things worth building

All of these are an afternoon's work against two endpoints. The recipes have every one of them written out in full, in JavaScript and Python.

A /save command in Slack

Drop a link in a channel and have it filed, tagged and summarised before anyone replies.

POST /bookmarks

A weekly digest

Everything you saved this week, grouped by tag, mailed to yourself on Friday.

GET /bookmarks

A public reading list

Build a page on your own site from a tag. New save, new entry, no CMS.

GET /bookmarks?tag=

Mirror your GitHub stars

Star a repository, get a bookmark tagged with its language and description.

POST /bookmarks

Sync into your notes

Write every new save into Obsidian or Notion as markdown, summary and all, from a webhook.

bookmark.saved

Nightly backups

Walk the cursor once a night and keep your whole library as JSON on a disk you own.

GET /bookmarks

Limits, in the open

A burst limit per minute and a total per month, both following your plan. Every response carries the headers that track them.

PlanPer minutePer month
free601,000
plus1,000100,000

Over the limit you get a 429 with a Retry-After. Your own usage is on the usage page.

The documentation

Guides, a playground, your keys and the full endpoint reference.

Make a key. Save a page.

Keys are free on every plan, and the first request takes about a minute from here.