MostlyRender

Ondertekende render-URL’s

Render on-the-fly vanuit een gewone URL — perfect voor <img>-tags, Open Graph-afbeeldingen en e-mail. Geen API-sleutel wordt naar de browser verzonden: de eigenaar ondertekent de URL vooraf, dus deze wordt altijd geserveerd (deze wordt nooit geblokkeerd door quota op dezelfde manier als de API), en herhaalde verzoeken worden in de CDN opgeslagen en gededupliceerd van metering.

text
GET https://api.mostlyrender.com/v1/templates/{id}/render.{ext}?<modifications>&sig=<signature>

# Voorbeeld

html
<img src="https://api.mostlyrender.com/v1/templates/tpl_abc/render.png?title=Hello&theme=dusk&sig=8f3c…" />
  • {ext} is png, jpg/jpeg, webp, of pdf.
  • Elke queryparameter behalve de gereserveerde sig, scale en q wordt doorgegeven aan de template als een modification.
  • scale (1–3) stelt de schaalfactor van het apparaat in; q (0–100) stelt de JPEG/WebP-kwaliteit in.

# Ondertekenen

Het eenvoudigste pad: open een template in de app en kopieer de ondertekende embed-URL — deze is vooraf ondertekend en klaar om in een <img>-tag te plakken.

Om URL’s zelf te creëren, is sig een HMAC-SHA256 over de template-ID, de extensie, en de gcanoniseerde querystring (parameters gesorteerd, sig uitgesloten), met uw ondertekeningsgeheim:

js
import crypto from 'node:crypto';

function signRenderUrl(base, secret, id, ext, params) {
  const query = Object.keys(params).sort()
    .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`).join('&');
  const sig = crypto.createHmac('sha256', secret).update(`${id}:${ext}:${query}`).digest('hex');
  return `${base}/v1/templates/${id}/render.${ext}?${query}&sig=${sig}`;
}

Een verzoek met een ontbrekende of onjuiste sig retourneert 403. De handtekening dekt alleen de parameters die u hebt ondertekend, dus een vervalste URL (een extra of gewijzigde parameter) wordt afgewezen.

# Wanneer welke gebruiken

Gebruiken Kies
Server-side generatie, de URL opslaan POST /v1/renders
Veel tegelijk Batch
Insluiten in <img>/OG/e-mail, geen sleutel in de client Ondertekende render-URL’s