NewSigned render links for og:image

Check how your link looks before you share it

Paste a URL to audit its Open Graph and Twitter Card tags and preview the card on X. Missing an image? SnapForge generates one from your page.

Free check, no sign-up · 100 free screenshots per month with an account

Get started freeView documentation

acme.dev/blog

Shipping retina social cards with a single GET request

Engineering · 6 min read
GET/v1/render?url=…/blog/retina-og&width=1200&height=630&key=cm3k9x…&sig=3f1c…200 · image/png
  • No credit card required
  • 100 free screenshots per month
  • Production-ready API

Quickstart

How it works

From zero to your first screenshot in a few minutes.

  1. 01

    Create an API key

    Sign up for free and generate a key in the dashboard. It's shown once and stored only as a hash.

  2. 02

    Send a URL

    POST the URL and options to /v1/screenshots. The capture is queued and the API answers right away.

  3. 03

    Get the image

    Receive a signed webhook when it's ready, or poll the job. Download through a short-lived signed link.

curl -X POST https://api.snapforge.dev/v1/screenshots \
  -H "Authorization: Bearer $SNAPFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "blockAds": true}'
202Response:{ "id": "cm3kb2c4d0001xyz", "status": "QUEUED" }

Features

Everything you need to capture the web

Built for production from day one: reliable, secure and simple to integrate.

Any public URL

Real Chromium with an isolated context per capture. Custom viewport, full page or a single element, PNG, JPEG or WebP up to 3× for retina.

Render your own HTML

Send an HTML template instead of a URL to generate OG cards, certificates or invoices. It is rendered as-is and never stored.

Signed render links

Put a signed GET URL straight into an og:image tag or an image tag. The image is captured on first view and cached afterwards.

Clean captures

Ads are blocked with EasyList and regional lists, and the empty slots they leave behind are collapsed.

No consent pop-ups

Cookie and GDPR/LGPD banners from the most common consent platforms are hidden before the capture.

Signed webhooks

Get an HMAC-SHA256 signed POST when each job finishes, with automatic retries.

Smart caching

Reuse a recent identical capture instantly. Cached responses don't count against your quota.

Secure by design

SSRF protection on every request, hashed API keys, private storage and signed download links.

Use cases

Built for

Open Graph images

Generate 1200×630 social cards for every page automatically.

Link previews

Show thumbnails of external sites in your app or directory.

Visual monitoring

Capture pages on a schedule and spot visual changes.

Archiving and reports

Keep a visual record of how a page looked at a given moment.

Pricing

Simple, predictable pricing

Start free and switch plans whenever you need. Prices in US dollars, billed monthly, cancel anytime.

Free
To try the API at low volume.

$0.00 /mo

  • 100 screenshots per month
  • 10 requests per minute
  • Ad and cookie blocking
  • Webhooks and caching
Starter
For small projects and MVPs.

$15.00 /mo

  • 2,000 screenshots per month
  • 30 requests per minute
  • Ad and cookie blocking
  • Webhooks and caching
Growth
Most popular
For growing products.

$49.00 /mo

  • 10,000 screenshots per month
  • 60 requests per minute
  • Ad and cookie blocking
  • Webhooks and caching
Scale
For high volume and heavy usage.

$99.00 /mo

  • 30,000 screenshots per month
  • 120 requests per minute
  • Ad and cookie blocking
  • Webhooks and caching

Failed captures and cached responses don't count against your monthly quota.

Frequently asked questions

Do I need a credit card to start?

No. The Free plan includes 100 screenshots per month and doesn't ask for payment details.

How long are screenshots stored?

Images are kept for 30 days in private storage. Each API response includes a fresh signed link that is valid for about 15 minutes.

Which pages can I capture?

Any public http(s) URL. Private networks, localhost and cloud metadata endpoints are blocked to protect the service and its users.

Does ad blocking catch every ad?

It's best effort: it uses well-maintained filter lists and DOM cleanup, which removes the vast majority of ads, but ads served by the site itself may slip through.

Can I change or cancel my plan?

Yes, anytime from the dashboard. Payments are handled by Stripe and the new limits apply as soon as the change is confirmed.

Start capturing in minutes

Create your free account and take your first screenshot today.

Get started free