Esta página se genera desde el contrato (data/gateway-v1.json): cada operación muestra su verbo, ruta, parámetros, cuerpo, respuestas, si lleva Idempotency-Key y el método equivalente en los cinco SDK. Para el flujo de punta a punta con ejemplos completos, ve a la guía de implementación.

Operaciones del tag webhooks #

Descripción en el contrato: Self-service outbound webhooks for the API key’s organization: event catalog (with payload examples and the HMAC signature contract), endpoint CRUD, secret rotation, signed test events, and delivery history with replay. Scopes: webhooks:read (reads) and webhooks:manage (writes).

MétodoRutaOperaciónScopeIdem.
GET/v1/gateway/webhooks/deliveries/List deliveries (filters: status, event, endpoint, dates)webhooks:read—
GET/v1/gateway/webhooks/deliveries/{delivery_id}/Delivery detail (attempts, response; no secret)webhooks:read—
POST/v1/gateway/webhooks/deliveries/{delivery_id}/replay/Replay a failed or abandoned deliverywebhooks:managerecomendada
GET/v1/gateway/webhooks/endpoints/List the organization's endpointswebhooks:read—
POST/v1/gateway/webhooks/endpoints/Register an endpoint (returns the secret ONCE)webhooks:managerecomendada
GET/v1/gateway/webhooks/endpoints/{endpoint_id}/Endpoint detailwebhooks:read—
PATCH/v1/gateway/webhooks/endpoints/{endpoint_id}/Update an endpoint (url, events, label, description, active)webhooks:managerecomendada
DELETE/v1/gateway/webhooks/endpoints/{endpoint_id}/Delete an endpoint (and its delivery history)webhooks:managerecomendada
POST/v1/gateway/webhooks/endpoints/{endpoint_id}/rotate-secret/Rotate the signing secret (the old one stops working immediately)webhooks:managerecomendada
POST/v1/gateway/webhooks/endpoints/{endpoint_id}/test/Send a signed test eventwebhooks:managerecomendada
GET/v1/gateway/webhooks/event-catalog/Event catalog (description, payload example, signature contract)webhooks:read—

List deliveries (filters: status, event, endpoint, dates) #

GET/v1/gateway/webhooks/deliveries/

  • operationId listWebhookDeliveries
  • Autenticación X-API-Key · scope webhooks:read
  • Idempotency-Key no aplica

Parámetros

NombreEnTipoDescripción
statusquerystringDelivery status.
event_typequerystringCatalog key, e.g. credits.decision.
endpoint_idquerystringOnly deliveries of this endpoint.
date_fromquerystringFrom (YYYY-MM-DD or ISO-8601), by queue time.
date_toquerystringTo (YYYY-MM-DD or ISO-8601), inclusive.
pagequeryintegerPage (1-based).
page_sizequeryintegerPage size.

Respuestas

CódigoDescripciónCuerpo
200A page of deliveries.WebhookDeliveryList application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.deliveries.list()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Delivery detail (attempts, response; no secret) #

GET/v1/gateway/webhooks/deliveries/{delivery_id}/

  • operationId getWebhookDelivery
  • Autenticación X-API-Key · scope webhooks:read
  • Idempotency-Key no aplica

Parámetros

NombreEnTipoDescripción
delivery_id obligatoriorutastringWebhook delivery id. Ej.: 7c9e6679-7425-40de-944b-e07fc1f90ae7

Respuestas

CódigoDescripciónCuerpo
200The delivery.WebhookDeliveryDetail application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.deliveries.get()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Replay a failed or abandoned delivery #

POST/v1/gateway/webhooks/deliveries/{delivery_id}/replay/

  • operationId replayWebhookDelivery
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)

Parámetros

NombreEnTipoDescripción
delivery_id obligatoriorutastringWebhook delivery id. Ej.: 7c9e6679-7425-40de-944b-e07fc1f90ae7
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.deliveries.replay()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

List the organization's endpoints #

GET/v1/gateway/webhooks/endpoints/

  • operationId listWebhookEndpoints
  • Autenticación X-API-Key · scope webhooks:read
  • Idempotency-Key no aplica

Respuestas

CódigoDescripciónCuerpo
200Endpoints (no secrets).WebhookEndpointList application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.list()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Register an endpoint (returns the secret ONCE) #

POST/v1/gateway/webhooks/endpoints/

  • operationId createWebhookEndpoint
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)
data.secret is shown only in this response (and on rotate-secret). An idempotent replay returns the endpoint without the secret.

Parámetros

NombreEnTipoDescripción
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Cuerpo de la petición

Tipo de contenido: application/json · obligatorio

Esquema WebhookEndpointCreateIn

CampoTipoDescripción
activeboolean
descriptionstring
events obligatorioarray de stringKeys from the event catalog. Ej.: ["credits.decision","wallets.cashin.confirmed"]
labelstringMáx. 128 caracteres.
url obligatoriostring (uri)Public HTTPS URL. Ej.: "https://erp.nova.example/compense/webhooks"

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.create()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Endpoint detail #

GET/v1/gateway/webhooks/endpoints/{endpoint_id}/

  • operationId getWebhookEndpoint
  • Autenticación X-API-Key · scope webhooks:read
  • Idempotency-Key no aplica

Parámetros

NombreEnTipoDescripción
endpoint_id obligatoriorutastringWebhook endpoint id. Ej.: 3f1a2b3c-0000-4a1b-9c2d-000000000001

Respuestas

CódigoDescripciónCuerpo
200The endpoint (no secret).WebhookEndpoint application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.get()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Update an endpoint (url, events, label, description, active) #

PATCH/v1/gateway/webhooks/endpoints/{endpoint_id}/

  • operationId updateWebhookEndpoint
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)

Parámetros

NombreEnTipoDescripción
endpoint_id obligatoriorutastringWebhook endpoint id. Ej.: 3f1a2b3c-0000-4a1b-9c2d-000000000001
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Cuerpo de la petición

Tipo de contenido: application/json · obligatorio

Esquema WebhookEndpointUpdateIn — Partial update. Only these fields are accepted.

CampoTipoDescripción
activeboolean
descriptionstring
eventsarray de string
labelstringMáx. 128 caracteres.
urlstring (uri)

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.update()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Delete an endpoint (and its delivery history) #

DELETE/v1/gateway/webhooks/endpoints/{endpoint_id}/

  • operationId deleteWebhookEndpoint
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)

Parámetros

NombreEnTipoDescripción
endpoint_id obligatoriorutastringWebhook endpoint id. Ej.: 3f1a2b3c-0000-4a1b-9c2d-000000000001
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.delete()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Rotate the signing secret (the old one stops working immediately) #

POST/v1/gateway/webhooks/endpoints/{endpoint_id}/rotate-secret/

  • operationId rotateWebhookSecret
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)

Parámetros

NombreEnTipoDescripción
endpoint_id obligatoriorutastringWebhook endpoint id. Ej.: 3f1a2b3c-0000-4a1b-9c2d-000000000001
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.rotate_secret()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Send a signed test event #

POST/v1/gateway/webhooks/endpoints/{endpoint_id}/test/

  • operationId sendWebhookTestEvent
  • Autenticación X-API-Key · scope webhooks:manage
  • Idempotency-Key recomendada (el SDK la genera)
Payload carries "test": true and the event_id starts with test-.

Parámetros

NombreEnTipoDescripción
endpoint_id obligatoriorutastringWebhook endpoint id. Ej.: 3f1a2b3c-0000-4a1b-9c2d-000000000001
Idempotency-KeycabecerastringClient-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123

Cuerpo de la petición

Tipo de contenido: application/json

Esquema WebhookTestIn

CampoTipoDescripción
event_typestringCatalog key whose payload_example is sent (default test.ping). Ej.: "credits.decision"

Respuestas

CódigoDescripciónCuerpo
200Done; the engine result is in data.TransactionEnvelope application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.endpoints.send_test()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.

Event catalog (description, payload example, signature contract) #

GET/v1/gateway/webhooks/event-catalog/

  • operationId getWebhookEventCatalog
  • Autenticación X-API-Key · scope webhooks:read
  • Idempotency-Key no aplica

Parámetros

NombreEnTipoDescripción
categoryquerystringFilter by category (credits, wallets, …).

Respuestas

CódigoDescripciónCuerpo
200The catalog.WebhookEventCatalog application/json
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

Ver Errores problem+json para la excepción equivalente en cada SDK.

Ejemplo

Método del SDK y petición HTTP
client.webhooks.event_catalog()

Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.