Ir al contenido

Evento con el detalle de cada intento de entrega

GET/events/{id}Probar
Parámetros de ruta

La llamada la hace tu navegador, contra el servidor que elijas arriba. Si la documentación no está servida desde el mismo origen que la API, el navegador puede bloquear la respuesta por CORS: en ese caso abre estas páginas desde la propia API (/docs) o usa el curl de arriba.

GET
/events/{id}
curl --request GET \
--url http://localhost:3000/v1/events/example \
--header 'x-api-key: <x-api-key>'

Scope events:read. Cada intento con su código HTTP y su latencia. Incluye payload, el cuerpo exacto que te enviamos.

id
required
string

Evento con payload y deliveries

Media typeapplication/json
object
id

Deduplica por esto. También viaja en la cabecera x-event-id

string
event_type
string
Allowed values: payment.settled payment.failed payment.reversed
aggregate_type
string
aggregate_id
string format: uuid
status

dead = tu cola de fallidos, reentregable

string
Allowed values: pending published dead
attempts
integer
last_error
string
nullable
next_attempt_at
string format: date-time
nullable
published_at
string format: date-time
nullable
dead_at
string format: date-time
nullable
created_at
string format: date-time
payload

El cuerpo que te enviamos

object
key
additional properties
any
deliveries
Array<object>
object
attempt
integer
status_code

null si hubo timeout

integer
nullable
ok
boolean
error
string
nullable
duration_ms
integer
created_at
string format: date-time
Example
{
"id": "40545",
"event_type": "payment.settled",
"aggregate_type": "payment",
"aggregate_id": "89920401-26da-4f69-b57d-bc20e0366ce2",
"payload": {
"paymentId": "89920401-26da-4f69-b57d-bc20e0366ce2",
"asset": "BS",
"amount": "5000000",
"bankReference": "012345678901",
"method": "pago_movil"
},
"status": "published",
"attempts": 3,
"last_error": null,
"next_attempt_at": null,
"published_at": "2026-08-31T19:06:52.004Z",
"dead_at": null,
"created_at": "2026-08-31T19:06:44.120Z",
"deliveries": [
{
"attempt": 1,
"status_code": 500,
"ok": false,
"error": "el receptor respondió 500",
"duration_ms": 42
},
{
"attempt": 2,
"status_code": null,
"ok": false,
"error": "timeout",
"duration_ms": 5001
},
{
"attempt": 3,
"status_code": 200,
"ok": true,
"error": null,
"duration_ms": 87
}
]
}

Error con código estable

Media typeapplication/json
object
error
object
meta

Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.

object
key
additional properties
any
type
string
Allowed values: invalid_request_error authentication_error rate_limit_error provider_error api_error
code

Código ESTABLE. Programa contra esto.

string
message
string
request_id
string
Example
{
"error": {
"type": "invalid_request_error",
"code": "insufficient_balance",
"request_id": "req_8a0312ba896772bc441134cd"
}
}