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.
GET https://api.mostlyrender.com/v1/templates/{id}/render.{ext}?<modifications>&sig=<signature>
# Exemplo
<img src="https://api.mostlyrender.com/v1/templates/tpl_abc/render.png?title=Hello&theme=dusk&sig=8f3c…" />
{ext}épng,jpg/jpeg,webpoupdf.- Cada parâmetro de consulta diferente dos reservados
sig,scaleeqé 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:
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 |