iframe S2S
Integrar iframe server-to-server
Sesión creada en tu BFF; el navegador solo monta el iframe.
Secreto solo en servidor
ink_sk_* nunca en el navegador. Usa un BFF para crear sesiones.
iframe S2S
Diferencia con Widget
Tú controlas la sesión y el documento; el secreto nunca sale del servidor.
iframe S2S
Backend / BFF
POST /integrations/v1/embed-sessions con Authorization Bearer ink_sk_*.
import "dotenv/config";
const apiBase = process.env.INKSPECTRA_API_URL ?? "https://alpha.inkspectra.com/_api";
const response = await fetch(`${apiBase}/integrations/v1/embed-sessions`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.EMBED_PARTNER_SECRET}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
parentOrigin: "https://partner.example",
locale: "es",
sourceType: "text",
content: "Paste contract text here (minimum 50 characters)…",
title: "Service Agreement",
}),
});
if (!response.ok) {
throw new Error(await response.text());
}
const { sessionId, embedUrl, token, expiresAt } = await response.json();
// Return { sessionId, embedUrl } to your frontend. Never expose token, secret, or ink_sk_* in the browser.iframe S2S
Frontend
Monta iframe con embedUrl; valida origin, source y sessionId en postMessage.
iframe S2S
Validación postMessage
Comprueba event.origin, event.source y payload.sessionId.
iframe S2S
Resize
Aplica inkspectra:resize con altura máxima 12000px.
iframe S2S
Sesión expirada
Escucha inkspectra:session_expired y pide nueva sesión al BFF.
Probar iframe en Samples
El harness usa un BFF de ejemplo sin exponer secretos.