Webhooks
Suscríbete a los cambios en lugar de consultarlos periódicamente. Un webhook no cuesta nada contra tu cuota de peticiones, lo que lo hace mucho más barato que releer un mercado con un temporizador.
/v1/api/webhookswebhooks:manageListar webhooks
Todos los endpoints que ha registrado tu organización.
El secreto de firma nunca se incluye. Se muestra una sola vez al crear el endpoint, y una lista que lo devolviera se lo entregaría a cualquiera que pueda leer esta llamada.
Respuesta
{
"data": [
{
"id": "whk_1b7e6c19a139404cb173d23fcb3331c4",
"url": "https://example.com/hooks/skautik",
"events": ["property.created", "property.withdrawn"],
"active": true,
"created_at": "2026-08-13T10:43:37Z",
"updated_at": "2026-08-13T10:43:37Z"
}
]
}https://api.skautik.com/v1/api/webhooks
GET /v1/api/webhooks HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhooks/eventswebhooks:manageListar los eventos disponibles
Los eventos a los que se puede suscribir un endpoint, con lo que significa cada uno.
Se sirve desde la misma lista contra la que valida la API, así que no puede quedarse por detrás de lo que realmente se entrega.
Respuesta
{
"data": [
{
"name": "property.created",
"description": "A property was added to your organisation."
}
]
}https://api.skautik.com/v1/api/webhooks/events
GET /v1/api/webhooks/events HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhookswebhooks:manageCrear un webhook
Registra un endpoint HTTPS para un conjunto de eventos.
La respuesta incluye un secreto de firma, mostrado una sola vez. Guárdalo de inmediato: cada entrega va firmada con él, y un manejador que no verifique la firma aceptará llamadas falsificadas de cualquiera que descubra la URL.
Campos del cuerpo
| Nombre | Tipo | Descripción |
|---|---|---|
urlobligatorio | string | Endpoint HTTPS. El HTTP sin cifrar se rechaza. ejemplo: https://example.com/hooks/skautik |
eventsobligatorio | array | Nombres de los eventos a los que suscribirse. Cada nombre debe ser uno de los eventos listados arriba; uno no reconocido se rechaza en lugar de no dispararse nunca en silencio. ejemplo: ["property.created", "inquiry.created"] |
Cuerpo de la petición
{
"url": "https://example.com/hooks/skautik",
"events": ["property.created", "property.withdrawn"]
}Respuesta
{
"data": {
"webhook": {
"id": "whk_1b7e6c19a139404cb173d23fcb3331c4",
"url": "https://example.com/hooks/skautik",
"events": ["property.created", "property.withdrawn"],
"active": true,
"created_at": "2026-08-13T10:43:37Z",
"updated_at": "2026-08-13T10:43:37Z"
},
"secret": "whsec_uEw7ugUA3saVyNo087Sg3XvhBnWI0txICtik-ySKD2k"
}
}Respuestas destacadas
- 201
- Creado. signing_secret aparece únicamente en esta respuesta.
- 422
- La URL no es HTTPS, no es accesible, o un nombre de evento es desconocido.
https://api.skautik.com/v1/api/webhooks
POST /v1/api/webhooks HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…
Content-Type: application/json
{
"url": "https://example.com/hooks/skautik",
"events": ["property.created", "property.withdrawn"]
}/v1/api/webhooks/{webhook_id}webhooks:manageObtener un webhook
Un endpoint con la salud de sus entregas recientes.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
https://api.skautik.com/v1/api/webhooks/{webhook_id}
GET /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhooks/{webhook_id}webhooks:manageActualizar un webhook
Cambia la URL, los eventos o si está activo.
Es una actualización parcial: lo que omitas se deja tal cual. Poner active a false detiene las entregas sin perder el registro, que es lo que conviene mientras arreglas un manejador.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
Campos del cuerpo
| Nombre | Tipo | Descripción |
|---|---|---|
url | string | Nuevo endpoint HTTPS. ejemplo: https://example.com/hooks/skautik |
events | array | Sustituye toda la lista de suscripción en lugar de añadirse a ella. ejemplo: ["property.created", "property.withdrawn"] |
active | boolean | Con false se pausan las entregas; el registro y su secreto sobreviven. ejemplo: true |
Cuerpo de la petición
{ "active": false }https://api.skautik.com/v1/api/webhooks/{webhook_id}
PATCH /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…
Content-Type: application/json
{ "active": false }/v1/api/webhooks/{webhook_id}/rotate-secretwebhooks:manageRotar el secreto de firma
Emite un secreto nuevo y detiene el anterior de inmediato.
Es lo que hay que usar si un secreto se filtra. El secreto anterior deja de funcionar en el momento en que esto responde, así que las entregas firmadas con él fallarán la verificación: despliega el nuevo antes de rotar, o asume un hueco.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
Respuesta
{
"data": {
"secret": "whsec_4_j7SxmfWXaoJnLbkypLXAw-Pjs8J74_OyWb-oj7fik",
"note": "The previous secret stopped working immediately."
}
}https://api.skautik.com/v1/api/webhooks/{webhook_id}/rotate-secret
POST /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4/rotate-secret HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhooks/{webhook_id}webhooks:manageEliminar un webhook
Detén las entregas y olvida el endpoint.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
https://api.skautik.com/v1/api/webhooks/{webhook_id}
DELETE /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhooks/{webhook_id}/testwebhooks:manageEnviar una entrega de prueba
Dispara un evento sintético para comprobar que tu manejador funciona.
Envía un evento webhook.test con el mismo comportamiento de firma y reintentos que una entrega real, para que puedas verificar la comprobación de firma antes de que algo real dependa de ella.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
https://api.skautik.com/v1/api/webhooks/{webhook_id}/test
POST /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4/test HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…/v1/api/webhooks/{webhook_id}/deliverieswebhooks:manageListar entregas
Intentos recientes, sus códigos de respuesta y el estado de los reintentos.
Se conservan 30 días. Es el sitio donde mirar cuando un manejador ha dejado de funcionar en silencio.
Parámetros de ruta
| Nombre | Tipo | Descripción |
|---|---|---|
webhook_idobligatorio | string | Identificador del webhook. ejemplo: whk_1b7e6c19a139404cb173d23fcb3331c4 |
Parámetros de consulta
| Nombre | Tipo | Descripción |
|---|---|---|
status | enum | Filtrar por resultado. succeeded | failed | pending ejemplo: succeeded |
limit | integer | Cuántos intentos devolver, del más reciente al más antiguo. Con un tope de 100. ejemplo: 100 |
https://api.skautik.com/v1/api/webhooks/{webhook_id}/deliveries
GET /v1/api/webhooks/whk_1b7e6c19a139404cb173d23fcb3331c4/deliveries?status=succeeded&limit=100 HTTP/1.1
Host: api.skautik.com
Authorization: Bearer sk_live_…