Changelog · August 29, 2026
Cache, timing and quota on every response
Tell a free cache hit from paid work, and see where you stand before you run out.
By Roger Campos · Last updated: August 2026
TL;DR
Every response with a request behind it now carries X-Result-Token, X-Cache (hit, miss or partial), X-Cache-Age, X-Processing-Time-Ms and the quota headers — sync and async, hit and miss, success and failure. Webhook payloads carry the same facts in an additive meta object.
Free plan, no credit card. 1,000 credits a month.
Most endpoints answer in plain text — Markdown, HTML, a base64 image — that you pipe straight into a file, so headers are the only place for metadata. A caller couldn't tell a free cache hit from paid work, which is the whole point of tuning max_age, and the only way to learn your quota was to run out.
A fact we don't have is omitted, never zeroed: an async accept on a cache miss carries no processing time, because nothing has happened yet.
X-Result-Token: 0Zx3…9aQ
X-Cache: hit
X-Cache-Age: 5400
X-Processing-Time-Ms: 14
X-Quota-Cost: 0
X-Quota-Remaining: 18750Endpoints
The endpoints on this page
- Get the rendered HTML of any URL
Paste a link and get the page's HTML after JavaScript has run and redirects have been followed — the DOM a real browser sees, not the empty shell curl returns.
Try it free - Run a Lighthouse audit on any URL
Paste a link and get a real Google Lighthouse audit — performance, accessibility, best practices and SEO scores, plus Core Web Vitals — measured against the live page.
Try it free
FAQ
Frequently asked questions
How do I know a response was a free cache hit?
Do async callers get this metadata?
Is processing time reported for an async accept?
Try it on the free plan.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.