> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spherepay.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Descripción General de Webhooks

> Recibe notificaciones en tiempo real cuando los clientes, las transferencias y otros recursos de SpherePay cambian de estado — en lugar de consultar por actualizaciones.

Los webhooks permiten que SpherePay notifique a tu aplicación en el momento en que algo sucede — un cliente es aprobado, una transferencia tiene éxito, se reciben fondos — para que ya no tengas que revisar endpoints `GET` en busca de cambios. Registras un endpoint HTTPS, eliges los eventos que te interesan, y SpherePay entrega un payload JSON firmado a ese endpoint cada vez que ocurre uno de esos eventos.

## Cómo funciona

1. **Registra un endpoint de webhook.** Llama a [`POST /v2/webhook-endpoints`](/es/concepts/webhooks/managing-endpoints) con tu URL y la lista de eventos a los que quieres suscribirte. La respuesta incluye un secreto de firma — guárdalo de forma segura; se muestra exactamente una vez.
2. **Ocurre un evento.** Un recurso en tu aplicación cambia de estado — por ejemplo, una transferencia pasa de `processing` a `succeeded`.
3. **SpherePay entrega el evento.** SpherePay envía un `POST` HTTP a cada endpoint habilitado suscrito a ese tipo de evento. La solicitud lleva un payload firmado que describe la transición de estado.
4. **Tú verificas y procesas.** Tu handler [verifica la firma](/es/concepts/webhooks/verifying-signatures), aplica el cambio de estado y responde con un código de estado `2xx` dentro de 15 segundos.

## Conceptos centrales

El sistema de webhooks de SpherePay rastrea tres registros distintos para cada notificación, y los tres son visibles a través de la [API de Eventos](/es/concepts/webhooks/events-and-replays):

| Concepto               | Significado                                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Evento**             | Un hecho sobre algo que sucedió en SpherePay — uno por ocurrencia, inmutable una vez creado. Identificado por un ID `event_` en el cuerpo del payload. |
| **Entrega de evento**  | Un evento siendo enrutado a uno de tus endpoints de webhook. Si dos endpoints se suscriben al mismo tipo de evento, un evento produce dos entregas.    |
| **Intento de entrega** | Una única solicitud HTTP de SpherePay a tu endpoint. Cada intento registra el código de respuesta, la latencia y si tuvo éxito.                        |

Cada registro lleva su propio identificador y sus propias marcas de tiempo — consulta [Payloads de eventos](/es/concepts/webhooks/event-payloads) para ver cómo se mapean al cuerpo y a los encabezados del payload, y en cuáles confiar al ordenar el estado.

## Semántica de entrega

Entender estas garantías es esencial para construir un consumidor confiable:

* **Entrega al menos una vez (*at-least-once*).** Ocasionalmente puedes recibir el mismo evento más de una vez. Deduplica usando el `id` del evento en el cuerpo — es estable a través de cada entrega y reenvío del mismo evento.
* **Sin reintentos automáticos.** SpherePay hace exactamente un intento de entrega por evento por endpoint. Si tu endpoint devuelve una respuesta no `2xx`, o no responde dentro de **15 segundos**, la entrega se marca como `failed` y SpherePay no la reintenta automáticamente. Puedes [reenviar una entrega fallida](/es/concepts/webhooks/events-and-replays) en cualquier momento vía la API de Eventos.
* **El orden de entrega no está garantizado.** Los reenvíos, los workers en paralelo y las variaciones de red pueden causar llegadas fuera de orden. Cada payload lleva un [campo `sequence`](/es/concepts/webhooks/event-payloads) para que puedas detectar y descartar actualizaciones obsoletas.
* **Payloads mínimos.** Los payloads de eventos describen la transición de estado — el estado anterior y el nuevo estado — no el recurso completo. Cuando necesites el objeto completo, llama al endpoint `GET` del recurso. Consulta [Payloads de eventos](/es/concepts/webhooks/event-payloads).

<Warning>
  Debido a que no hay reintentos automáticos en la versión actual, haz que tu handler de webhooks sea rápido y resiliente: confirma con un `2xx` inmediatamente después de verificar la firma, y realiza el procesamiento pesado de forma asíncrona. Un handler lento que exceda la ventana de 15 segundos causará que las entregas se marquen como `failed`.
</Warning>

## Responder a una entrega

Devuelve cualquier código de estado `2xx` para confirmar la recepción. Cualquier otra cosa — incluidas las redirecciones, que SpherePay no sigue — marca la entrega como `failed`.

## Explora

<CardGroup cols={2}>
  <Card title="Gestiona endpoints de webhook" icon="plug" href="/es/concepts/webhooks/managing-endpoints">
    Registra, lista y elimina endpoints de webhook, y entiende los límites y estados de los endpoints.
  </Card>

  <Card title="Payloads de eventos" icon="braces" href="/es/concepts/webhooks/event-payloads">
    La estructura de la envoltura, el campo `sequence`, y cómo `applicationId` delimita cada evento.
  </Card>

  <Card title="Catálogo de eventos" icon="list" href="/es/concepts/webhooks/event-catalog">
    Cada tipo de evento al que puedes suscribirte, con sus desencadenantes y payloads de ejemplo.
  </Card>

  <Card title="Verifica firmas" icon="shield-check" href="/es/concepts/webhooks/verifying-signatures">
    Autentica las entregas con HMAC-SHA256 — con fragmentos de código en Python, JavaScript, Go, Java y C#.
  </Card>

  <Card title="Eventos y reenvíos" icon="rotate-cw" href="/es/concepts/webhooks/events-and-replays">
    Explora tu historial de eventos, inspecciona intentos de entrega y reenvía entregas fallidas.
  </Card>
</CardGroup>
