Listar el historial de consentimientos
/v1/consent-eventsDescripción
Lista el historial de consentimientos de la cuenta, del más reciente al más antiguo, con las reglas de cada evento embebidas.
Este recurso es el historial, no el estado vigente. Para saber si hoy se le puede enviar a alguien, usar GET /v1/consent-rules/resolve: resuelve la precedencia y devuelve el mismo veredicto que aplicará el envío. Derivarlo de este listado a mano —tomando el primer resultado, por ejemplo— puede dar una respuesta distinta, porque la precedencia no es cronológica pura: entre reglas contradictorias gana la que deniega.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
consent:read. Formato:Bearer FD.<key_id>.<token>. X-Instance-Slugstringheaderobligatorio
Request
Query params:
pageinteger- Página, 1-indexed. Default: 1.
page_sizeinteger- Tamaño de página, 1–100. Default: 20.
term_idinteger | null- Filtra por término — ver `GET /v1/consent-terms`.
statusstring, enum: `confirmed | pending | expired` | null- Filtra por estado del evento.
contactstring | null- Filtra por identificador presente en alguna regla del evento, coincidencia exacta.
El filtro contact compara contra la forma en que el identificador quedó almacenado: las direcciones de correo se guardan normalizadas a minúsculas, y los uniquecode tal cual se enviaron. Buscar Ana@Ejemplo.cl no devuelve el evento que se registró para esa dirección; buscar ana@ejemplo.cl sí.
Response
data con los elementos y pagination para pedir la siguiente. Cada elemento tiene los campos que siguen.idintegerobligatorio- Identificador del evento.
term_idintegerobligatorio- Término aceptado.
term_version_idintegerobligatorio- Versión exacta que el titular aceptó. Queda congelada aunque el término publique versiones nuevas.
statusstring, enum: `confirmed | pending | expired`obligatorio- Un evento
pending(doble opt-in sin confirmar) deja evidencia pero no autoriza nada. methodstring, enum: `single_opt_in | double_opt_in`obligatorio- —
sourcestring, enum: `form | api | import | system`obligatorio- Origen del registro.
confirmed_atstring (date-time) | null- —
expired_atstring (date-time) | null- —
created_atstring (date-time)obligatorio- —
rulesarrayobligatorio- Las reglas que ese evento declaró:
id,channel,contact_type,contact,purpose_id,actionycreated_at. Una revocación se ve acá como una regla conaction: deny.
- El listado no colapsa el historial: si un titular otorgó y después revocó, aparecen los dos eventos.
- Para registrar un consentimiento nuevo, ver
POST /v1/consent-events.
curl -X GET "https://$API_HOST/v1/consent-events?contact=ana@ejemplo.cl&term_id=4" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
{
"data": [
{
"id": 42,
"term_id": 4,
"term_version_id": 7,
"status": "confirmed",
"method": "double_opt_in",
"source": "api",
"confirmed_at": "2026-05-08T14:22:31Z",
"expired_at": null,
"created_at": "2026-05-08T14:22:31Z",
"rules": [
{
"id": 91,
"channel": "mail",
"contact_type": "email_address",
"contact": "ana@ejemplo.cl",
"purpose_id": 1,
"action": "allow",
"created_at": "2026-05-08T14:22:31Z"
}
]
}
],
"pagination": {
"page": 1,
"page_size": 20,
"has_more": false,
"total_items": 1,
"total_pages": 1
}
}