Skip to content

Open Graph image API

A social card for every page

Design one template, then let every page render its own share card on demand. The og:image tag points straight at Renderwolf, so there is no build step, no image bucket and no key in your markup.

Create a free accountRead the API docs

  • No build step
  • No image storage
  • Cached crawls are free
  • Never expires, if you want
The Open Graph share card for the Renderwolf product page, generated by Renderwolf
This site's own share card, rendered by the API it describes.

One template

Every page needs a card, and nobody wants the build step

The usual answers are all overhead. Generate cards at build time and the build gets slower with every page and stale the moment content changes. Generate them at request time and you are running a browser, a queue and a bucket. Skip them and every share looks the same.

A signed render URL removes the middle entirely. The tag points at Renderwolf, the card renders on the first request and comes from cache afterwards, and changing the template changes every card without touching your application.

POST /renderwolf/v1/sign
Authorization: Bearer rw_live_...

{
  "kind": "image",
  "template": "og-card",
  "vars": { "title": "Why we own our hardware" },
  "width": 1200,
  "height": 630,
  "ttl_hours": 0
}

<meta property="og:image" content="https://..." >

Capabilities

What the tag gets you

The card is generated by the same template engine as the rest of your images, and delivered by a URL you can put anywhere.

One template, every page

Design the card once in HTML and CSS at 1200 by 630. Each page passes its own title, author, price or category as variables.

Straight into og:image

A signed URL renders on demand at the URL itself, so the tag points at Renderwolf rather than at a file your application had to create and host.

Redesign without rebuilding

Change the stored template and every card follows, including ones already shared. No build step, no cache to purge, no backfill.

Crawlers cost nothing extra

The first request renders, and every identical request after it is a cache hit. Repeated crawls of the same card do not consume credits.

No key in the markup

Your server signs the URL. The signature covers the parameters, so the template and the variables cannot be edited by whoever holds the link.

No framework to adopt

It is a URL in a meta tag. Next.js, Astro, Rails, Laravel or a static site all use it the same way, with nothing added to your runtime.

Use cases

Pages worth their own card

Anywhere a shared link should explain itself rather than showing the same site-wide image.

Blog and article cards

A card per post with the headline and author, generated the first time somebody shares it.

Product and listing shares

Show the product name, price and image in the preview rather than a generic site card.

Documentation pages

Give every page in the reference its own card so a shared deep link is legible.

Event and booking links

Put the date, venue and title into the preview so a shared link explains itself.

User-generated pages

Profiles and public boards get their own cards without a job queue generating images.

Changelog and release notes

Each release shares with its own version and headline, from the same template.

Generating other images from data?

Social cards are one use of the template engine. Certificates, badges, product graphics and personalised marketing images all work the same way, from the same stored HTML.

HTML to image APIHow signed URLs work

Pricing

One credit per card, and crawls come from cache

Start with 250 free credits each month and no card required. A card costs one credit the first time it renders, and every identical request after that is a cache hit costing nothing, so repeated crawls of the same page are free. Failed work is refunded and reaching a cap pauses rendering rather than billing overage.

See Renderwolf pricingCompare with other providers

Questions

Before you integrate

The details that decide whether this fits, without reading the whole reference first.

Do I have to generate the images at build time?

No. Put a signed render URL in the og:image tag and the card is rendered when it is first requested, then served from cache. Nothing is generated during your build and nothing is stored by your application.

What happens when I change the design?

Update the stored template and every card follows, including the ones already linked. There is no rebuild and nothing to purge, because the next request renders the new design.

Will the URL expire and break old links?

Only if you ask it to. Signed URLs take a lifetime in hours, and zero means it never expires, which is what an og:image tag needs.

Does the signed URL expose my API key?

No. Your server mints the URL with the key and the key never travels in it. The signature covers the parameters, so nobody can edit the template or the variables and still get a render.

What size should the card be?

The template carries its own width and height, so set it once at the 1200 by 630 that the major platforms expect and every render matches.

Can I use this with Next.js, Astro or any other framework?

Yes. It is an ordinary URL in a meta tag, so anything that renders HTML can use it. There is no SDK to adopt and no runtime to add to your application.

What does it cost?

One credit per generated image, and repeats of the same URL come from cache for nothing. Crawlers hitting the same card repeatedly do not cost you credits.

Give every page its own card

Create an account, store one template and sign a URL. The first card is inside your free credits.

250 free credits each month, with no card required, hard usage caps and free cache hits.