Skip to main content
scrnshot uses standard HTTP status codes. Error bodies are JSON with at least an error field:

400 — Bad request

The request body is malformed, url is missing, or an option isn’t permitted on your plan (e.g. full_page: true on Free). The message names the specific problem:
Fix the request — retrying unchanged will fail the same way. See Screenshot options for per-plan availability.

401 — Unauthorized

Missing, malformed, or revoked API key. Check that X-API-Key is set and that the key hasn’t been deleted from the dashboard.

402 — Quota exceeded

Your plan’s monthly quota is exhausted.
Wait until resets_at, or upgrade to Pro for a higher ceiling (POST /v1/billing/checkout). This is distinct from rate limiting below — you can be well under your per-minute rate limit and still get 402 if you’ve used up the month.

429 — Rate limited

You’ve exceeded the per-minute request rate for your plan (Free 5/min, Pro 60/min), or the demo endpoint’s 5/day per-IP limit.
reset_time is a Unix timestamp for when the window resets. Back off until then — a tight retry loop will keep hitting 429. If you’re consistently rate-limited on Pro, batch or queue requests client-side rather than firing them concurrently.

5xx — Server error

Something failed on scrnshot’s end (render failure, storage error, timeout). These are safe to retry with backoff. If a 5xx persists across retries, check status or reach out — it isn’t something you can fix by changing the request.