Docs
Documentation
One Bearer key, three render endpoints. First request renders in real Chromium and caches the bytes; repeats come from cache.
Quickstart
1. Get a key. Sign in with Google at astraeatech.dev, then mint a key on your profile (up to 10, revocable anytime).
2. Make a request.
curl -H "Authorization: Bearer $SHOTPDF_KEY" \ "https://shotpdf.astraeatech.dev/v1/screenshot?url=https://example.com&width=1200&format=png" \ -o shot.png
3. Check usage. GET /v1/usage?days=30 reports your key's metered totals and is never metered itself.
Guides
GET /v1/screenshot — viewport, full page, PNG/JPEG, caching.GET + POST /v1/pdf — URL or inline HTML, paper size, margins.GET /v1/og — 1200×630 images from a title or a URL.API reference
The full machine-readable surface is published as OpenAPI 3.0 JSON — import it into RapidAPI, Postman, or any OpenAPI tooling to explore every parameter, default, and error code.
Authentication
Every /v1/* endpoint takes Authorization: Bearer sk_live_… (only /healthz is public). A missing or revoked key returns 401 invalid_api_key with a JSON error body.
Quotas and errors
Free allows 1,000 metered requests per month; Pro allows 50,000. Past the quota the API returns HTTP 429 until the monthly reset — see pricing. Error responses share one JSON envelope: {"error": {"code": "…", "message": "…"}}.
Comparisons
Evaluating render APIs? shotpdf vs ScreenshotOne · shotpdf vs urlbox