URL to PDF API, with a bounded browser behind it.

Send a public webpage URL and receive a PDF in the response. Choose A4, Letter, or Legal paper and portrait or landscape output without maintaining a matching Chromium runtime in every application.

Public pages only · A4, Letter, or Legal · Updated July 18, 2026

One POST returns the document.

PDF rendering uses the JSON endpoint. The response body is the PDF itself, so the same request works from a job runner, backend route, workflow platform, or scheduled report.

curlPOST /v1/render
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",
    "kind": "pdf",
    "paper": "A4",
    "landscape": false,
    "delay": 250
  }' \
  --output example.pdf

On success, the response uses application/pdf. Timing, navigation, font fallback, script fallback, and quota information remain in the response headers.

Use a secret, not a query parameter.

Store the Bearer key in your platform’s secret manager. The Free plan shows the key once and stores only its hash.

Choose the paper contract first.

Paper and orientation should be explicit in code. Leaving them implicit makes a layout look correct on one machine and paginate differently when a browser default changes.

OptionValuesDefault
paperA4, Letter, LegalA4
landscapetrue or falsefalse
delay0–3000 milliseconds0
timeout3000–30000 milliseconds15000
waitUntilload, domcontentloaded, networkidledomcontentloaded

Latchshot does not currently accept raw HTML, custom margins, header/footer templates, or arbitrary page scripts. It renders a public URL into the selected paper size.

Bound retries and record diagnostics.

Treat 400 and 401 as permanent. Retry 429, 502, 503, and 504 only with a strict attempt limit and backoff. A failed direct render does not consume quota, but an unbounded retry loop still creates latency and support work.

For scheduled documents, read GET /v1/usage before the job and keep the previous successful PDF if a new capture fails. The scheduled-report recipe includes a bounded operating pattern.

Public documents, not private sessions.

Latchshot blocks private and special-use network targets and does not accept cookies, credentials, or browser automation scripts. That is useful for public invoices, reports, dashboards, documentation, and certificates that already have a safe public render URL.

It is not the right endpoint for an internal admin page, a logged-in customer account, or a PDF that requires session state. Keep those documents inside your own authenticated rendering boundary.

Only successful documents consume quota.

The same plans cover screenshots and PDFs: Launch is $19 for 2,500 successful renders, Build is $49 for 12,000, and Scale is $149 for 50,000. Automatic overages are off during private beta.

Start with 100 free renders each UTC calendar month, compare real PDFs against the current workflow, and inspect the response diagnostics before moving scheduled production jobs.

Need images instead?

Use the query-string endpoint for a simple PNG or JPEG, or the JSON endpoint for bounded capture controls.

Read the screenshot guide