ShotpaneGet a free key

API documentation

One base URL, three REST endpoints, and an MCP server. Authenticate with ?key= or an Authorization: Bearer header.

Screenshot

Returns an image of the page.

GET /api/v1/screenshot?url=https://stripe.com&key=YOUR_KEY

curl "https://www.shotpane.com/api/v1/screenshot?url=https://stripe.com&key=YOUR_KEY&full_page=true" -o shot.png

Website to PDF

Returns an A4 PDF of the page.

GET /api/v1/pdf?url=https://stripe.com&key=YOUR_KEY

curl "https://www.shotpane.com/api/v1/pdf?url=https://stripe.com&key=YOUR_KEY" -o page.pdf

OG image

Renders a URL at the 1200×630 social size — point it at your own /og route.

GET /api/v1/og?url=https://myapp.com/og/post-123&key=YOUR_KEY

MCP server (for AI agents)

Streamable-HTTP MCP endpoint exposing the screenshot, url_to_pdf, and og_image tools. Add it to Claude / Cursor / any MCP client; pass your key via the Authorization header, ?key=, or an apiKey tool argument.

MCP endpoint:  https://www.shotpane.com/mcp   (POST, JSON-RPC 2.0)

{ "mcpServers": {
    "shotpane": {
      "url": "https://www.shotpane.com/mcp?key=YOUR_KEY"
    }
} }

Parameters

ParamValuesDescription
urlrequiredThe http(s) URL to capture. Internal/private addresses are rejected.
keyrequiredYour API key (or send as Authorization: Bearer <key>).
formatpng | jpegImage format for /screenshot. Default png.
full_pagetrue | falseCapture the full scrollable page. Default false.
widthnumberViewport width in px. Default 1280.
heightnumberViewport height in px. Default 800.

Errors

401 invalid/missing key · 429 monthly limit reached · 400 bad/blocked URL · 502 render failed.