Documentación de plataforma

¿Primera vez en eventpipe? Empieza por cómo encajan el Inspector, Pipe Studio y la CLI—luego vuelve aquí para los detalles HTTP.

Documentación APIv1

API de Webhook Interceptor

Captura de webhooks, Pipe Studio (pipelines, versiones, ejecutar), gestión de endpoints, privacidad, enlaces compartidos y límites por plan.

Las rutas protegidas aceptan tu sesión en el navegador o una clave API desde Cuenta: Authorization: Bearer <evp_…> o X-Api-Key.

Producto

Pipe Studio y eventpipe

Un pipeline es un handler versionado asociado a tu endpoint de webhook. Defines disparadores, publicas TypeScript (y opcionalmente un pipe declarativo en JSON), versiones inmutables y ejecuciones de prueba sobre el grafo publicado—lo mismo que el panel, vía API.

  • Lista y crea pipelines por endpoint; cada pipeline tiene historial de versiones lineal.
  • Publica bundles con `settings.pipe` validado (v3) y artefactos de código; los webhooks de producción invocan la versión activa del pipeline habilitado.
  • Execute simula la versión publicada con un cuerpo JSON—útil antes y después del deploy.

Aplican límites por plan: pipelines por endpoint, timeout de ejecución, cajas code y pasos HTTP—ver Precios. El acceso programático usa la misma auth que el dashboard (cookie o clave API).

Empieza aquí

Inicio rápido en 60 segundos

Tres pasos para ver tu primer evento en el inspector. Los enlaces usan tu origen actual: http://localhost:3000.

Todas las URLs de captura y fragmentos de esta página usan el ID de ejemplo … (único en cada visita) para no chocar con tus endpoints reales.

1

Crea tu endpoint

En la home elige un ID único (ej. stripe-orders-prod) y crea el endpoint. Sin servidor ni tarjeta.

2

Envía un webhook de prueba

Haz POST con JSON a la URL de captura usando el ID de ejemplo …. Solo sirve para esta documentación; en producción usa tu propio ID.

3

Abre el inspector

Revisa cabeceras, cuerpo y línea de tiempo en vivo. El enlace de demo usa el mismo ID de ejemplo ….

Generando un ID de ejemplo único…

POST/api/webhook/{id}

Capturar webhook

Captura cualquier petición entrante para inspeccionar el payload.

Auth: No requerida. Si «Exigir clave de webhook» está activo, envía x-webhook-key (o ?key=).

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "webhookId": "uuid" }
GET/api/webhook/{id}?_dashboard=1

Lectura dashboard

Devuelve el historial del endpoint para UI/dashboard.

Auth: Sesión o clave API cuando el inspector está bloqueado (propietario o colaborador aprobado).

Petición

Generando un ID de ejemplo único…

Respuesta

{ "endpoint": {...}, "events": [...] }
POST/api/webhook/register

Registrar endpoint (auth)

Registra un ID de webhook para un usuario autenticado.

Auth: Cookie de sesión o clave API (Bearer / X-Api-Key). Respeta límites del plan y ownership.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
POST/api/webhook/register-guest

Registrar endpoint (invitado)

Registra un endpoint en modo invitado y emite guest_id firmado.

Auth: No requerida. Límites free vía cookie firmada.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
GET/api/account

Resumen de cuenta

Resumen de plan, política y uso (endpoints + solicitudes mensuales).

Auth: Opcional. Sesión, clave API o sin auth (contexto invitado/free).

Petición

Generando un ID de ejemplo único…

Respuesta

{ "tier": "FREE", "policy": {...} }
GET/api/account/endpoints

Listar endpoints propios

Lista endpoints del propietario con privacidad y metadatos.

Auth: Sesión o clave API.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "endpoints": [...] }
DELETE/api/account/endpoints/{id}

Eliminar endpoint

Elimina un endpoint propio y los datos asociados.

Auth: Sesión o clave API. Solo el propietario.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
PATCH/api/account/endpoints/{id}/privacy

Actualizar privacidad del endpoint

Configura bloqueo del inspector y/o «Exigir clave de webhook». Envía inspectorPrivate y/o requireCaptureKey; devuelve accessKey si la clave de captura está activa.

Auth: Sesión o clave API. Starter+ para estas funciones.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "inspectorPrivate": true, "requireCaptureKey": true, "accessKey": "hex" }
POST/api/account/endpoints/{id}/inspector/share

Compartir acceso al inspector

Genera un enlace temporal que otorga acceso de colaborador al inspector. Funciona independientemente de si el inspector es privado. El propietario debe aprobar la solicitud.

Auth: Sesión o clave API. Solo propietario. Starter+.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "shareUrl": "https://.../share/token", "expiresAt": "..." }
POST/api/account/endpoints/{id}/studio/share

Invitar colaborador al studio

Genera un enlace de invitación con rol (viewer o editor). No requiere inspector_private. Aplica el límite collaboratorsPerEndpoint del plan.

Auth: Sesión o clave API. Solo propietario. Starter+.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "inviteUrl": "https://.../share/token", "expiresAt": "..." }
GET/api/account/endpoints/{id}/my-access

Ver mi rol de acceso

Devuelve el rol del usuario autenticado en un endpoint (viewer, editor, o null si no tiene acceso).

Auth: Sesión o clave API.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "role": "viewer" | "editor" | null }
DELETE/api/account/endpoints/{id}/access

Listar / revocar colaboradores

GET devuelve colaboradores con rol, granted_via y granted_at. DELETE elimina un colaborador por userId.

Auth: Sesión o clave API. Solo propietario.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
GET/api/account/access-requests

Bandeja de solicitudes

Solicitudes de acceso pendientes a tus endpoints.

Auth: Sesión o clave API.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "requests": [...] }
PATCH/api/account/access-requests/{requestId}

Aprobar/rechazar solicitud

Aprueba o rechaza una solicitud de acceso (approve | reject).

Auth: Sesión o clave API. Solo propietario del endpoint.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
POST/api/share/{token}/accept

Aceptar token compartido

Convierte un token compartido en solicitud de acceso pendiente.

Auth: Sesión o clave API.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true }
GET/api/account/pipelines

Listar pipelines

Devuelve los pipelines del usuario autenticado (GET /api/account/pipelines), opcionalmente filtrados por endpointId.

Auth: Sesión o clave API.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "pipelines": [ { "id", "endpoint_id", "name", "status", "current_version_id" } ] }
POST/api/account/pipelines

Crear pipeline

Crea un pipeline en un endpoint tuyo; genera versión inicial si tiene éxito.

Auth: Sesión o clave API. El plan debe permitir automatización de pipelines (ver límites).

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "pipelineId": "uuid", "version": 1 }
GET/api/account/pipelines/{pipelineId}

Obtener pipeline y versiones

Devuelve la fila del pipeline y todas las versiones (incluye settings.pipe si existe).

Auth: Sesión o clave API. Solo propietario.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "pipeline": {...}, "versions": [ { "version", "settings", "build_status" } ] }
POST/api/account/pipelines/{pipelineId}/versions

Publicar versión del pipeline

Crea una nueva versión con bundleCode y settings (pipe validado en servidor).

Auth: Sesión o clave API. Solo propietario.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "version": { "version": 2 } }
POST/api/account/pipelines/{pipelineId}/execute

Ejecutar pipeline (prueba)

Ejecuta la versión publicada con un cuerpo sintético—mismo runtime que producción, acotado a tu cuenta.

Auth: Sesión o clave API. Solo propietario.

Petición

Generando un ID de ejemplo único…

Respuesta

{ "success": true, "result": { "status", "output", "logs", "durationMs" } }

Errores estándar

CódigoCuándo ocurreEjemplo
400Cuerpo inválido o falta un campo obligatorio{ "error": "webhookId is required" }
401Usuario no autenticado en rutas protegidas{ "error": "Unauthorized" }
402Límite del plan o función no disponible{ "error": "Private endpoints are available from STARTER tier" }
403Sin permiso sobre el recurso del propietario{ "error": "Forbidden" }
404Recurso no encontrado{ "error": "Endpoint not found" }
409Conflicto de ownership o ID de webhook en uso{ "error": "This webhook ID is already owned by another user" }
410Enlace compartido caducado{ "error": "Share link expired" }

Fragmentos de integración

Usa el mismo ID de ejemplo que el inicio rápido: ….

Generando un ID de ejemplo único…