Spronta

Image Templates

Generate images from a URL

Define a template once. Render thousands of personalised images at the edge — OG cards, social banners, product images, certificates — in under 50ms via CDN URL. No queues, no Puppeteer, no separate service.

It's just a URL

https://cdn.spronta.com/my-project/render/og-card?title=Hello+World&author=Sean

Variables in the URL override template defaults. The result is cached globally — identical URLs hit the CDN edge, not the renderer.

Use cases

One renderer, every image generation need.

Open Graph images

Personalised OG images for every blog post, product, or user profile. Update the title param in the URL.

/render/og-card?title=Hello+World&author=Sean

Social banners

Twitter/LinkedIn cards with dynamic text and images. One template, infinite variations.

/render/social-banner?product=Widget+Pro&price=$49

Product cards

Auto-generated product images for e-commerce feeds, email, and ads with live product data.

/render/product-card?name=Sneakers&image=product.jpg

Email headers

Personalised email header images with customer name, offer, or dynamic content.

/render/email-header?name=Alice&offer=20%25+off

Certificates

Award certificates and completion badges with recipient name and date rendered on the fly.

/render/certificate?name=Alice+Smith&course=React

QR codes with branding

Branded images with embedded QR codes — combine logo, text, and QR in one URL.

/render/qr-card?url=https://example.com&title=Scan+me

Layer types

Templates are JSON. Layers compose like a design tool — rendered at the edge by a Rust/WASM engine using tiny-skia and cosmic-text.

text

Rendered text with font, size, weight, colour, alignment, and word-wrap

image

External image with cover/contain/fill fit and rounded corners

rect

Rectangle with fill colour, rounded corners, and optional border

circle

Circle with fill colour and optional border

gradient

Linear gradient overlay — top-to-bottom, left-to-right, and more

qr

QR code from any data string, with custom foreground and background colours

Templates are just JSON

Define width, height, background, and a layers array. Variables use {{variable}} syntax anywhere in string fields. Create templates via dashboard, API, or MCP tool.

  • Variable substitution in any string field
  • Layers rendered in order (painter's algorithm)
  • Output cached by URL — same inputs = CDN hit
  • Outputs WebP, AVIF, JXL, or PNG
{
  "width": 1200,
  "height": 630,
  "background": {
    "type": "solid",
    "color": "#0a0a0c"
  },
  "layers": [
    {
      "type": "rect",
      "x": 0, "y": 0,
      "w": 1200, "h": 630,
      "fill": "#5340FA",
      "opacity": 15
    },
    {
      "type": "text",
      "content": "{{title}}",
      "x": 80, "y": 200,
      "font": "Inter",
      "size": 64,
      "weight": 700,
      "color": "#ffffff"
    },
    {
      "type": "text",
      "content": "by {{author}}",
      "x": 80, "y": 300,
      "size": 28,
      "color": "#a1a1aa"
    }
  ],
  "variables": [
    { "name": "title", "type": "text",
      "default": "Untitled" },
    { "name": "author", "type": "text",
      "default": "Spronta" }
  ]
}

vs Bannerbear, Satori, and Cloudinary

Stop paying $49–$399/mo for a separate image generation SaaS. Spronta bakes it into the CDN you're already using.

ProductPriceLatencyFormats
Bannerbear$49–$399/mo2–5 secondsPNG only
Vercel OG / SatoriIncluded in Vercel~500ms cold startPNG only
Cloudinary Dynamic ImagesUsage-based ($89+/mo)~200ms (CDN)JPEG, PNG, WebP
Spronta TemplatesIncluded in CDN plan<50msWebP, AVIF, JXL, PNG

Create templates via API, SDK, or MCP

Build your template design workflow however you want.

REST API

POST /api/images/projects/:id/templates

MCP Tool

create_template { name, template, variables }

Render URL

render_template_url { templateName, variables }

Stop paying for Bannerbear

Image templates are included in every Spronta plan — same CDN, same API key, no extra invoice.