Shotbolt
screenshot · pdf · og image

A URL goes in.
An image comes out.

Shotbolt is one HTTP endpoint for the thing every product needs and nobody wants to host: a headless browser. Screenshots, PDFs and 1200×630 Open Graph images, metered by the render, cached so the same request never costs twice.

100 renders a month, free, no card.

live · real API · demo key

Press Render. No key, no signup.

cache · duration · size appear here
the same call, from your terminal
curl -G https://shotbolt.app/v1/screenshot \
  -H "Authorization: Bearer $SHOTBOLT_KEY" \
  --data-urlencode "url=https://news.ycombinator.com" \
  -d "width=1280" -d "format=png" -d "block_ads=true" \
  -o shot.png

Three endpoints, one engine

Everything a browser can print

Every endpoint takes url or raw html, speaks GET and POST, and returns the file itself — not a job id you have to poll.

GET · POST/v1/screenshot

Screenshots

Viewport or full page, PNG, JPEG or WebP, clipped to a CSS selector, dark mode, ads blocked, wait for the element you actually care about.

  • url
  • html
  • viewport
  • full_page
  • format
  • quality
  • selector
  • block_ads
  • dark
  • delay
  • wait_for
reference →
GET · POST/v1/pdf

HTML to PDF

Invoices, reports and contracts. Page size, margins, landscape, print backgrounds, and running header and footer templates with page numbers.

  • url
  • html
  • page_size
  • margin
  • landscape
  • print_background
  • header_html
  • footer_html
  • page_ranges
reference →
GET · POST/v1/og

Open Graph images

1200×630 social cards from three built-in templates — title, subtitle, logo, theme, accent — or from your own HTML when the templates are not enough.

  • title
  • subtitle
  • template
  • theme
  • accent
  • logo
  • html
  • format
reference →

Quickstart

Thirty seconds to the first render

No SDK required — it is a GET with a bearer token. There is a dependency-free TypeScript client if you prefer types.

  • Response headers carry the meter — cache state, credits charged, render duration, free balance.
  • Identical requests are free — the second call is served from the content cache and charges nothing.
  • Failures are refunded — a 5xx or a timeout never spends a credit.
  • 429 instead of a hung socket — over capacity you get a Retry-After, immediately.
# One call. The bytes come back on stdout.
curl -G https://shotbolt.app/v1/screenshot \
  -H "Authorization: Bearer $SHOTBOLT_KEY" \
  --data-urlencode "url=https://stripe.com" \
  -d "width=1280" -d "full_page=true" -d "format=webp" \
  -o stripe.webp

OG templates

Three that already look finished

Pass a title and pick a template. Pass your own HTML when you have a designer. Both come back as a 1200×630 PNG, JPEG or WebP.

shotbolt

Gradient

Accent glow, faint grid, big headline.

Gradient

Accent glow, faint grid, big headline. The default.

template=gradient

shotbolt

$ render

Terminal

Terminal

A window chrome and a mono headline. Reads as a dev tool.

template=terminal

Sshotbolt

Split

Text left, accent panel right.

S

Split

Text left, accent panel right with the initial or your logo.

template=split

Render any of them for real in the playground above.

How it stays cheap

One browser, launched when you ask, closed when you stop

Lazy Chromium

Launched on the first request and closed after 60s idle. An idle API costs nothing to run, so the free tier is real.

Bounded queue

1 renders at a time and a waiting room. Past that, 429 with Retry-After — never a request left hanging.

Content cache

sha256 of the normalised request, 0h TTL, LRU byte cap. ETag and If-None-Match, so repeats are a 304.

SSRF guard

Every hostname is resolved and checked: loopback, link-local and RFC1918 are rejected, redirects re-checked hop by hop.

Pricing

One credit per render

Full pricing →

Free

$0

100 renders a month, per key, reset on the 1st. No card.

starter-5k

$9

One-off pack of 5,000 renders. Credits never expire.

pro-monthly

$19/mo

25,000 renders a month, higher rate limit, priority queue slot.

Cache hits are free. Failed renders are refunded. Credits from one-off packs never expire.

Shotbolt — screenshot, PDF and OG image API