Saltar al contenido principal

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.

Checklist de seguridad

Probar iframe en Samples

El harness usa un BFF de ejemplo sin exponer secretos.