v1.4 — now with custom templates

One request.
Perfect preview.

ogzap generates OG images for any URL on-demand — headless rendered, CDN-cached, delivered in milliseconds. Add it in one line.

30-second setupp50 latency 84msNo credit card
GETapi.ogzap.com/v1/og?url=
try:
~ /share/post-publishedGET
$curl -G https://api.ogzap.com/v1/og
 --data-urlencode "url=creatdrop.com"
 --data-urlencode "key=ogz_live_a1b2c3"
200 OK   content-type: image/png
x-cache: HIT   size: 1200×630   84 ms
Rendered OG image
1200 × 630 · cache HIT
31
edge POPs
84ms
p50 latency
99.99%
uptime / 90d
2.4M
renders served

Replaced three days of Puppeteer plumbing with a single GET. Our previews look better than what we built, and I never have to think about it.

Marin Aslanian
Marin Aslanian
backend · pencilbase.dev

Deleted 412 lines of Chromium-in-Lambda code on a Friday. Slept well that night. Have not opened the dashboard since.

Jules Karpinski
Jules Karpinski
founder · linkroom

It cached on the second request and stayed cached. Flat $19, no spikes when a post goes viral. That is the only feature I needed.

Rohan Velasco
Rohan Velasco
indie · saasweekly
How it works

Three steps. The third one is your social media manager.

No SDK, no build step, no headless browser to babysit. If your stack can make an HTTP request, you have OG images.

01 — SIGN UP

Get your API key

Create an account, copy your key. Done in about as long as it took to read this sentence.

key ogz_live_a1b2c3d4e5f6
02 — REQUEST

Send one GET request

Append the URL to render and your key. That's the entire integration. Drop it into your <meta> tags.

GET https://api.ogzap.com/v1/og
  ?url={url}
  &key={key}
03 — SHIP

Beautiful OG image returned

A 1200×630 PNG, ready to be the unfurl on every social platform. Cached at the edge, served from the nearest POP.

What you get

Boring on purpose. Reliable as a result.

The whole point is that you stop thinking about OG images. We picked the defaults so you don't have to.

Headless rendered

A real Chromium with real fonts and real CSS. If it works in your browser, it works here.

Chromium 124 · variable fonts

CDN cached globally

Rendered once, served forever from the edge. Subsequent requests in single-digit milliseconds.

31 POPs · 99.99% uptime

1200 × 630, guaranteed

The exact aspect ratio every social platform actually displays. No surprise crops.

PNG · 2× retina available

Any URL, any stack

Static, SSR, SPA, an old Rails app, a marketing page on Webflow. Plain HTTP, no SDK required.

Node · Go · Ruby · Python · curl

Flat-rate pricing

$19 a month, render as many times as you want. No per-render math, no overage email at 2 AM.

Paddle · cancel anytime

Key in 30 seconds

Sign up with GitHub, get a key, paste it into your <meta>. We will not interview you first.

Free trial · 100 renders
Pricing

One plan. Unlimited renders.

Because the alternative — counting renders, picking a tier, watching the meter — is exactly what you came here to stop doing.

ogzap / standardUnlimited renders
$19/ month
billed monthly via Paddle · cancel anytime
  • Unlimited renders, no per-image fees, no overage tiers
  • Global CDN with 31 POPs and immutable edge caching
  • Custom templates, brand overrides, and webhook invalidation
  • Email support, 24-hour response, written by a human
Get API key
100 free renders to try, no credit card required
build it yourself~$900/mo + 3 days
  • ~3 days of engineering to wire up headless Chromium, fonts, and screenshotting
  • Cold starts, memory limits and font loading in serverless
  • You own uptime, patching, and the 2 AM pager
  • Per-render compute cost that spikes when a post goes viral
ongoing maintenance: forever
ogzap$19/mo flat
  • One GET request, live in 30 seconds — no SDK, no build step
  • Rendering, caching and global delivery handled for you
  • 99.99% uptime is our problem, not yours
  • Flat $19/mo, unlimited renders — the bill never moves
ongoing maintenance: none
FAQ

The questions developers actually ask.

Short, honest answers. Placeholder copy below — drop in your real limits and policies.

Every unique URL is rendered once and then served from cache. Cache hits don't count against anything — and since the plan is flat-rate, neither do fresh renders. There is no per-image meter to watch.
Fresh renders are soft-capped at a generous burst rate to keep the queue healthy; cached responses are effectively unlimited. Placeholder number: 60 fresh renders / min. Need more? Email us.
Yes. By default ogzap captures the OG region of the page you point it at. You can also pass a template ID and variables to render a branded card without touching the source page. Templates are editable in the dashboard.
Pass a signed token or custom headers with the request and ogzap forwards them to the render. For fully private pages, the template approach lets you render a card from data you send, without exposing the page.
Images are cached at the edge with an immutable key derived from the URL and params. Bump a ?v= parameter, call the purge endpoint, or fire a webhook on content change to force a fresh render.
We store the rendered PNG at the edge so we can serve it fast. We don't retain page HTML beyond the render. Placeholder — replace with your real data-retention and GDPR language.

Stop building infrastructure.
Start shipping.

A key in your inbox, a line in your <head>, and one less thing on the roadmap.