Guarded public-page rendering
A public URL in.
A clean artifact out.
Turn a public webpage into a screenshot or PDF without carrying Chromium, an unbounded queue, or a private-network exposure into your product.
Reference run: 197 of 200 preflighted public HTML pages rendered successfully. Method and limits.
Shown once. Save the key, then paste the request into a terminal. Open the API reference.
Evidence before adjectives
Measured on pages we did not choose by hand.
A deterministic Tranco sample was preflighted for resolvable public HTML, then rendered through the same production endpoint at concurrency two. This is private-beta evidence, not an SLA.
- Median end to end
- 2.42 seconds
- 95th percentile
- 7.68 seconds
- Queue after run
- 0 active · 0 pending
- Current smoke suite
- 10 / 10 passed
Narrow by design
Public pages only.
On purpose.
Latchshot is a render service, not a browser-for-hire. The smaller contract is easier to integrate, meter, defend, and support.
Built in
- Private and special-use network blocking
- Per-job Chromium process isolation
- Bounded dimensions, delays, and deadlines
- Finite concurrency and queue depth
- Successful-render quota accounting
- Navigation, font, and script diagnostics
Intentionally absent
- CAPTCHA or anti-bot bypass
- Proxy rotation
- Arbitrary browser scripts
- Private-network access
- Cookies or login sessions
- Automatic overage billing
One bounded request
The integration ends in a file.
-
1
Send a public URL
Choose PNG, JPEG, or PDF plus bounded viewport and wait options.
-
2
Latchshot guards and renders
Targets are validated, work is queued, and one isolated Chromium job runs.
-
3
Receive the artifact
The response is the image or PDF, with timing and fallback diagnostics in headers.
curl --fail-with-body https://latchshot.fly.dev/v1/render \
-H "Authorization: Bearer $LATCHSHOT_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"url": "https://example.com",
"format": "png",
"width": 1440,
"height": 900
}' \
--output capture.png
Free tier + direct plans
Start free. Pay when the workflow fits.
The Free plan renews every UTC calendar month. Failed direct renders do not consume quota, and automatic overages stay off.
| Plan | Successful renders | Per 1,000 | Monthly | Action |
|---|---|---|---|---|
| FreeEvaluate and prototype | 100 | — | $0 | Get free key |
| LaunchShip the first workflow | 2,500 | $7.60 | $19 | Request Launch |
| Build Best fitRun a production integration | 12,000 | $4.08 | $49 | Request Build |
| ScalePower recurring capture jobs | 50,000 | $2.98 | $149 | Request Scale |
Swipe for monthly price and access
Want the first call site wired for you?
Move one eligible public-repository JavaScript, TypeScript, or Python backend call with a focused patch, tests, an approved public sample, and rollback notes. API usage is separate.
The Free plan replenishes to 100 successful renders at the start of each UTC calendar month. Existing key holders can request a paid tier below; the owner handles payment and activates the same key. Review data handling and retention before sending a target.
Free plan · no card
Take the key. Keep the free allowance.
Enter an email and get a key with 100 successful renders every UTC calendar month. Workflow context and contact permission stay optional.
- No credit card
- Key issued immediately
- 100 renders each month
- One free key per email
- No meeting required
From test to production
Keep the key. Raise the limit.
Choose a higher tier with the API key you already tested. This request does not take payment; the owner replies to the email attached to the key, confirms payment separately, then activates the new quota on that same key.
- 1 · Request
- Authenticate the current key and choose a higher plan.
- 2 · Confirm
- The owner sends payment and activation instructions by email.
- 3 · Continue
- After confirmed payment, the same key receives the paid quota.