Onto API

Read the web as Markdown.

Any URL in, clean Markdown out, with an AIO score telling you how readable that page is to an agent. We honour robots.txt, and we tell you when a read came back thin instead of handing you an empty page.

Quick start
$ curl https://api.buildonto.dev/v1/read \
    -H "Authorization: Bearer onto_sk_live_..." \
    -H "Content-Type: application/json" \
    -d '{"url": "https://stripe.com/pricing"}'
No key required
The reader is open. Put any URL after the host and read it straight away — md.buildonto.dev/example.com. Plain text for agents, a readable page in a browser. Same URL either way.
Endpoints
MethodPathReturns
POST/v1/readAny URL to clean Markdown
POST/v1/scoreAIO score — how readable a page is to an agent
POST/v1/read-and-scoreBoth, in one round trip
POST/v1/batchMany URLs in one call
POST/v1/mapDiscover the URLs on a site
POST/v1/extractStructured data from a page
GET/v1/usageYour quota and consumption
GET/mcpHosted MCP endpoint for Claude and ChatGPT
Errors
CodeHTTPMeaning
UNAUTHORIZED401Missing or invalid API key
INVALID_URL400Unparseable, non-http, or a private address
URL_NOT_FOUND404Target 404ed, or the host does not resolve
ROBOTS_BLOCKED403The site disallows AI crawlers — we honour that
WAF_BLOCKED403The site refused our crawler
UNSUPPORTED_TYPE415Not a document — image, video, archive
TOO_LARGE413Body exceeds the read limit
IMAGE_PDF422Scanned PDF with no extractable text
TLS_ERROR502The site's certificate is invalid
TIMEOUT504The site took too long
RATE_LIMITED429Monthly quota exceeded
PAYMENT_REQUIRED402Quota exceeded and credits are empty