MostlyRender

URLs de renderização assinadas

Renderize sob demanda a partir de uma URL simples — perfeito para tags <img>, imagens de Open Graph e e-mail. Nenhuma chave de API viaja para o navegador: o proprietário pré-assina a URL, então ela sempre funciona (nunca é bloqueada por cota como a API faz), e as requisições repetidas são armazenadas em cache de CDN e desduplificadas da medição.

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

# Exemplo

html
<img src="https://api.mostlyrender.com/v1/templates/tpl_abc/render.png?title=Hello&theme=dusk&sig=8f3c…" />
  • {ext} é png, jpg/jpeg, webp ou pdf.
  • Cada parâmetro de consulta diferente dos reservados sig, scale e q é passado para o template como uma modificação.
  • scale (1–3) define o fator de escala do dispositivo; q (0–100) define a qualidade de JPEG/WebP.

# Assinatura

O caminho mais fácil: abra um template no aplicativo e copie sua URL de incorporação assinada — ela vem pré-assinada e pronta para colar em uma tag <img>.

Para criar URLs você mesmo, o sig é um HMAC-SHA256 sobre o id do template, a extensão e a string de consulta canonizada (parâmetros classificados, sig excluído), usando seu segredo de assinatura:

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}`;
}

Uma requisição com um sig ausente ou incorreto retorna 403. A assinatura cobre apenas os parâmetros que você assinou, portanto uma URL adulterada (um parâmetro extra ou alterado) é rejeitada.

# Quando usar qual

Usar Opte por
Geração no servidor, armazenar a URL POST /v1/renders
Muitos de uma vez Batch
Incorporar em <img>/OG/email, sem chave no cliente URLs de renderização assinadas