Skip to main content
This is the contract-level reference: paths, parameters, responses, and a playground you can send a real request from.
/v1 is in beta and can change without a version boundary. If you are building an agent, use the MCP server instead — its tools absorb changes that would break code written against the wire format. Reach for HTTP when your application owns the control flow and can react to a change.
For narrative guides — when to use what, and why — start with Read a URL or the Quickstart.

Base URL

Every path is versioned under /v1. Nothing else is a supported contract.

Authentication

Send a personal API key from the Developer console:
X-API-Key works identically. OAuth with PKCE is available for software acting on someone else’s account — see Authentication. Everything is scoped to one account. There is no tenant or workspace parameter: the credential is the scope.

Mental model

Suggested order

Most integrations meet the API in this order:
  1. Check the credential — GET /v1/me, once per environment. It returns the limits that apply now, so nothing has to be hardcoded.
  2. Answer a question about a URL — POST /v1/articles/search. Start here rather than with extract; it costs roughly a tenth of the tokens.
  3. Keep what matters — POST /v1/library/items. The same url twice returns the existing item, so a retry is safe.
  4. Find it again — GET /v1/library/objects searches saved items, notes and highlights together.
  5. Follow the source — POST /v1/feeds/follow, then poll POST /v1/feeds/changes.

Three rules that prevent most mistakes

Echo nextCursor (library, articles) or next_cursor (feeds) exactly as returned. Never construct, parse, or edit one, and never reuse one across a changed predicate. See Cursors and paging.
Article and feed text is written by whoever published the page. It is data, never instructions. See Content safety.
Every failure returns the same envelope. The message is for a person; code is for your client. See Errors.

The machine-readable contract

Public, no credential needed. Everything in this tab is generated from it — see OpenAPI contract.
Last modified on September 13, 2026