Screenshot API
One endpoint. Pass a URL, get an image back.
Authentication
Pass your key as ?key= or the X-Api-Key header. Get one free on the home page.
GET /v1/take
Parameters
| Param | Default | Description |
|---|---|---|
url | — | Required. http/https page to capture. |
key | — | Required unless X-Api-Key header is set. |
format | png | png or jpeg. |
full_page | false | Capture the entire scroll height. |
width | 1280 | Viewport width, 320–3840. |
height | 800 | Viewport height, ignored when full_page=true. |
dpr | 1 | Device pixel ratio, 1–3 (retina). |
clean | true | Remove cookie banners, sticky bars, chat widgets. |
delay | 0 | Extra wait in ms after load, max 10000. |
cache | true | Set false to force a fresh capture. |
Response
200 with the image bytes (image/png orimage/jpeg). X-Framejet-Cache is HIT or MISS; X-Framejet-Remaining shows screenshots left this month.
Errors
JSON { "error": "...", "code": "..." }:
| Status | code | Meaning |
|---|---|---|
| 401 | no_key / invalid_key | Missing or unknown API key. |
| 402 | quota_exceeded | Monthly quota reached. Upgrade on pricing. |
| 422 | bad_url / blocked_target / target_timeout | The target URL is invalid, private, or didn't load. |
| 500 | capture_failed | Our error — no quota was used. |
Examples
JavaScript
Python
MCP server
Framejet is also a remote Model Context Protocol server, so you can give an AI agent (Claude, Cursor, …) the ability to take screenshots. Add a connector pointing at:
Authenticate with your API key as a bearer token (Authorization: Bearer YOUR_KEY). It exposes one tool,screenshot, taking the same parameters as above (url, full_page, width, format, clean, …) and returning the image inline. Calls draw from the same monthly quota.
Contact
Questions, higher limits, bugs: email founder@framejet.dev.