Open Graph cards often share a layout while the title and other content change by page. Store the layout as a template, then use signed URLs to provide each page's variables. Ironfang Render handles image generation and delivery, so your application does not need to create or store image files.
Store the card once
Templates are HTML with {{ placeholders }}. Anything a browser can draw works, including web fonts and CSS gradients.
Create the reusable template.
curl -X POST https://api.ironfang.uk/renderwolf/v1/templates \
-H "Authorization: Bearer if_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "og-card",
"html": "<body style=\"background:#0a0a0f;color:#fff;font:700 64px sans-serif;padding:80px\">{{title}}</body>",
"width": 1200,
"height": 630
}'1200 × 630 is a widely supported Open Graph image size. The response includes the template ID used in the next request.
Create one URL per page
A signed URL includes the variables and a signature, allowing it to be public without exposing your API key. Set ttl_hours to 0 to create a non-expiring URL suitable for a meta tag that crawlers may revisit later.
curl -X POST https://api.ironfang.uk/renderwolf/v1/sign \
-H "Authorization: Bearer if_live_..." \
-H "Content-Type: application/json" \
-d '{
"kind": "image",
"template": "TEMPLATE_ID",
"vars": { "title": "Reliable screenshots in CI" },
"ttl_hours": 0
}'Put it in the page
<meta property="og:image" content="https://api.ironfang.uk/renderwolf/v1/r/0/a1b2...">
<meta name="twitter:card" content="summary_large_image">Social crawlers request the signed URL directly from Ironfang Render, so your application server does not generate or serve the image. The first render uses the normal credit allowance, while identical cached requests are free.
Update the design centrally
This keeps image generation tied to the current template and removes the need to find, replace and store previously generated files after a design change.
