Skip to main content
Todo lo que le pasa a un documento es un evento. Los mismos eventos sirven para tres cosas:
  • el modo stream de POST /documents;
  • reengancharse o seguir un documento con GET /documents/{id}/events;
  • los webhooks (solo los eventos finales; próximamente).

Forma de un evento

Tipos

Ciclo de vida ⏹ = evento final: después de él no llega nada más. Contenido (se pinta en vivo) Proceso

Orden típico

Crear desde una frase
  • Crear desde texto: igual, pero los bloques llegan casi de golpe.
  • Revisar: sin content.*: render, revisión, arreglos, páginas y final.
  • Editar: edit.planned, un edit.operation_applied (o _rejected) por cada cambio y después como revisar.
Cómo pintarlo en el cliente: con style.resolved preparas los estilos; con content.* vas construyendo la vista (aproximada, sin páginas); con preview.page_ready la sustituyes por las páginas reales.

SSE (stream y /events)

  • Reengancharse: GET /documents/{id}/events con la cabecera Last-Event-ID: 13 (o ?after=13). Primero se reenvían los eventos guardados posteriores (los bloques completos) y después se sigue en vivo. El documento se sigue haciendo aunque el cliente se desconecte.
  • Latido (: heartbeat) cada 15 s para que ningún proxy corte la conexión.
  • Tras el evento final, el servidor cierra.
  • Los eventos se guardan 7 días. Pasado ese tiempo, GET /documents/{id}/events responde 410 events_expired, aunque la ficha del documento sigue disponible.

Webhooks (próximamente)

  • Mismo formato de evento. Por defecto solo los finales (document.ready, document.failed, document.canceled). Nunca eventos con contenido.
  • Firma según Standard Webhooks: cabeceras webhook-id, webhook-timestamp y webhook-signature (HMAC-SHA256 con secreto whsec_…).
  • Reintentos durante ~10 h con esperas crecientes (5 s, 30 s, 2 min, 10 min, 30 min, 1 h, 3 h, 6 h). El cliente debe deduplicar por webhook-id.
  • Solo URLs HTTPS públicas (protección SSRF).