API reference
The extract endpoint
The same pipeline without the retrieval stage, for URLs you already have. Give it a list, get the readable part of each page back.
Wiring this up with a coding agent? Point it at agents.md or openapi.json rather than at these pages. Both are generated from the code that serves the requests, so neither can describe an endpoint that no longer exists.
POST /v1/extract
{ "urls": ["https://example.com/a", "https://example.com/b"] } Response
{
"results": [
{ "url": "...", "title": "...", "raw_content": "# ...", "source": "fetch" }
],
"failed": [
{ "url": "...", "error": "blocked by Cloudflare: the page served a bot challenge instead of its content" }
],
"response_time": 1.2,
"request_id": "req_1m11x2p3d_9wnq4z0f7hb"
}
A URL that could not be read appears in failed with the reason, rather than
going missing from results. The two lists together always account for every
URL you sent.
What it costs
URLs are canonicalised and deduplicated before anything is charged, so the same page with three different tracking parameters costs one extraction. Billing is per batch of five URLs, not per URL, so handing this endpoint the list you already have costs the same as handing it one URL and is never worth splitting into a loop. Batches that produce nothing are refunded. If nothing at all could be extracted you get a 502, because an empty array would read as "these pages are blank".