Skip to main content
Volver a Docs
🔌Automatización y API

Webhooks

Envía eventos a Discord, Slack, n8n o tus propios sistemas

Los webhooks empujan eventos desde Predite hacia tu propio servidor en el momento en que ocurren — sin necesidad de polling. Cuando un bot ejecuta una operación, se dispara un stop-loss o el scanner encuentra un nuevo edge, Predite envía un HTTP POST a una URL que tú controlas. Los webhooks son una función del plan Bot y se gestionan desde Configuración, en la página Webhooks.

Cómo crear un webhook

Necesitas tres cosas: una URL que acepte solicitudes POST, una etiqueta para distinguir tus webhooks y al menos un evento al que suscribirte.

Tu URL debe ser https en producción. Predite se niega a entregar a direcciones privadas, de loopback o de red interna, y no sigue redirecciones — esto protege tu cuenta de que un endpoint mal configurado se use para alcanzar el interior de nuestra infraestructura.

Eventos

Existen seis eventos. Cuatro están activos hoy:

  • ev_signal — el scanner publicó una nueva señal de Expected Value. Se envía a todos los suscriptores (no es específica del usuario).
  • arb_opportunity — se encontró una nueva oportunidad de arbitraje entre plataformas. También se envía a todos los suscriptores.
  • bot_trade_executed — uno de tus bots abrió una posición, en vivo o en paper.
  • stop_loss_triggered — una de tus salidas de protección (stop-loss, take-profit o trailing stop) cerró una posición.

Otros dos están reservados y aparecen marcados como próximamente en el dashboard — whale_move y resolution_imminent. Puedes suscribirte a ellos hoy, pero todavía no entregan nada.

Los eventos sobre tu propia actividad solo se te envían a ti. Los eventos de alcance general, de todo el mercado, se envían a todos los que estén suscritos a ellos.

Formato del payload

Cada entrega es un POST con un cuerpo JSON de esta forma:

  • event — el nombre del evento, por ejemplo bot_trade_executed
  • timestamp — cuándo ocurrió el evento, en ISO-8601
  • data — un objeto con los detalles de ese evento

Junto a él, Predite envía estas cabeceras:

  • X-Predite-Event — el nombre del evento
  • X-Predite-Timestamp — el mismo timestamp
  • X-Predite-Signature — la firma, con el formato sha256=<hex>

Cómo verificar la firma

Cada webhook tiene su propio secreto, que se muestra en el dashboard y empieza por whsec_. La firma es un HMAC-SHA256 del cuerpo crudo de la solicitud, con ese secreto como clave, codificado en hexadecimal y con el prefijo sha256=.

Para verificarla, calcula el HMAC del cuerpo que recibiste y compáralo con la cabecera X-Predite-Signature. Si no coinciden, rechaza la solicitud — no vino de nosotros. Verifica siempre antes de actuar sobre un payload, y usa siempre el cuerpo crudo, no una versión re-serializada del JSON ya parseado.

Entrega, fallos y desactivación automática

  • Cada evento se entrega en un único intento, con un timeout de 5 segundos. No hay reintentos automáticos — diseña tu endpoint para responder rápido y hacer el trabajo lento después.
  • Cualquier respuesta que no sea 2xx, un timeout o un error de conexión cuenta como fallo.
  • Tras 10 fallos consecutivos, el webhook se desactiva automáticamente y aparece como AUTO-DISABLED. Un solo éxito reinicia el contador.
  • Reactivar desde el dashboard un webhook desactivado pone a cero el contador de fallos.

Cada intento queda registrado, así que el dashboard muestra el total de entregas, los fallos consecutivos, el último éxito, el último fallo y el motivo del fallo.

Conviene saber

  • Responde 2xx en cuanto hayas guardado el evento; cualquier cosa más lenta arriesga el timeout de 5 segundos.
  • Como no hay reintentos, trata los webhooks como un canal de notificación rápido y no como un libro mayor garantizado — reconcilia contra la API pública si necesitas certeza.
  • Puedes pausar un webhook en cualquier momento en lugar de eliminarlo.