Reproducir eventos en un endpoint de webhook
POST /v1/webhook-endpoints/{endpoint_id}:replay · permiso webhook-endpoints:write · todos los planes
Vuelve a encolar los eventos del intervalo [from, to) de los últimos 30 días, por ejemplo los eventos de un periodo en el que el endpoint estuvo deshabilitado. Solo se envían los tipos de evento del endpoint, a menos que types los restrinja. Cada entrega reproducida conserva el webhook-id del evento, de modo que un receptor que elimina duplicados por webhook-id procesa cada evento una sola vez; replay_no de la entrega aumenta en uno.
Solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
endpoint_id |
path | sí | Identificador del endpoint de webhook (whe_…). |
from |
date-time | sí | Inicio del intervalo (inclusive), dentro de los últimos 30 días. |
to |
date-time | sí | Fin del intervalo (exclusivo), posterior a from. |
types |
string[] | no | Tipos de evento a reproducir; vacío o ausente significa los tipos del endpoint. |
Idempotency-Key |
header | no | Reproduce la respuesta de una solicitud repetida con la misma clave, sin volver a encolar. |
{
"from": "2026-10-20T00:00:00Z",
"to": "2026-10-21T00:00:00Z",
"types": ["user.created"]
}
Respuesta
200 OK con el número de entregas encoladas.
{
"enqueued": 42
}
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 400 | unknown_field |
El cuerpo tiene un campo que no aparece en la lista anterior. |
| 404 | not_found |
No existe tal endpoint en este entorno. |
| 415 | unsupported_media_type |
El cuerpo falta o no es application/json. |
| 422 | validation_failed |
/from required, /to required, o una regla de intervalo: to no posterior a from, o anterior a 30 días. |
| 401 | unauthenticated |
Falta la credencial, no es válida o fue revocada. |
| 403 | insufficient_permissions |
La credencial no tiene el permiso webhook-endpoints:write. |
| 503 | service_unavailable |
La reproducción aún no está disponible en esta región, o la administración de webhooks no está disponible temporalmente; reintente después de Retry-After. |
Ejemplo
curl -X POST https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4:replay \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7a1c3e5f-9b2d-4f6a-8c0e-2b4d6f8a0c2e" \
-d '{"from":"2026-10-20T00:00:00Z","to":"2026-10-21T00:00:00Z"}'
CLI (el cuerpo se toma de la entrada estándar o de un archivo (--data @replay.json)):
echo '{"from":"2026-10-20T00:00:00Z","to":"2026-10-21T00:00:00Z"}' | keenauth webhook-endpoints replay whe_01k8a3m5q7t9v1w3x5y7z9b2c4 --data -