Query Events
List and retrieve audit events with powerful filtering, search, and cursor-based pagination.
List Events
GET
/events
Required Scope
This endpoint requires the events:read scope.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
action |
string | No | Filter by action name. Supports wildcards with * (e.g., user.*, *.deleted) |
actor_id |
string | No | Filter by actor ID |
target_type |
string | No | Filter by target resource type |
target_id |
string | No | Filter by target resource ID |
from |
string | No | Filter events from this ISO 8601 date (inclusive) |
to |
string | No | Filter events until this ISO 8601 date (inclusive) |
search |
string | No | Full-text search across event data |
per_page |
integer | No | Number of events per page (default: 25, max: 100) |
cursor |
string | No | Pagination cursor from previous response |
Response
Returns a paginated list of events with cursor-based pagination metadata.
{
"data": [
{
"id": "evt_2Nz9Q8kL3Fy",
"sequence_number": 42315,
"action": "document.updated",
"actor": {
"id": "usr_4Hx8K9mP1Qz",
"type": "user",
"meta": {
"name": "Jane Doe",
"email": "jane@example.com"
}
},
"target": {
"type": "document",
"id": "doc_6Ry2M3nT5Wx",
"meta": {
"title": "Q4 Financial Report"
}
},
"context": {
"ip": "203.0.113.42"
},
"diff": {
"before": { "status": "draft" },
"after": { "status": "published" }
},
"metadata": {
"department": "finance"
},
"hash": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
"previous_hash": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456",
"occurred_at": "2026-02-10T14:32:15.000000Z",
"received_at": "2026-02-10T14:32:15.123456Z",
"created_at": "2026-02-10T14:32:15.123456Z"
}
],
"meta": {
"next_cursor": "eyJpZCI6ImV2dF8yTno5UThrTDNGeSIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"has_more": true
}
}
Examples
curl -X GET "https://logproof.de/v1/events?action=document.*&per_page=50" \ -H "Authorization: Bearer YOUR_API_KEY"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://logproof.de/v1/',
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
]
]);
$response = $client->get('events', [
'query' => [
'action' => 'document.*',
'per_page' => 50,
]
]);
$result = json_decode($response->getBody(), true);
$events = $result['data'];
$nextCursor = $result['meta']['next_cursor'];
const axios = require('axios');
const response = await axios.get('https://logproof.de/v1/events', {
params: {
action: 'document.*',
per_page: 50
},
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const events = response.data.data;
const nextCursor = response.data.meta.next_cursor;
import requests
response = requests.get(
'https://logproof.de/v1/events',
params={
'action': 'document.*',
'per_page': 50
},
headers={
'Authorization': 'Bearer YOUR_API_KEY'
}
)
result = response.json()
events = result['data']
next_cursor = result['meta']['next_cursor']
Get Single Event
GET
/events/{id}
Required Scope
This endpoint requires the events:read scope.
Response
Returns a single event by ID.
{
"data": {
"id": "evt_2Nz9Q8kL3Fy",
"sequence_number": 42315,
"action": "document.updated",
"actor": {
"id": "usr_4Hx8K9mP1Qz",
"type": "user",
"meta": {
"name": "Jane Doe",
"email": "jane@example.com"
}
},
"target": {
"type": "document",
"id": "doc_6Ry2M3nT5Wx",
"meta": {
"title": "Q4 Financial Report"
}
},
"context": {
"ip": "203.0.113.42"
},
"diff": {
"before": { "status": "draft" },
"after": { "status": "published" }
},
"metadata": {
"department": "finance"
},
"hash": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
"previous_hash": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456",
"occurred_at": "2026-02-10T14:32:15.000000Z",
"received_at": "2026-02-10T14:32:15.123456Z",
"created_at": "2026-02-10T14:32:15.123456Z"
}
}
Examples
curl -X GET https://logproof.de/v1/events/evt_2Nz9Q8kL3Fy \ -H "Authorization: Bearer YOUR_API_KEY"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://logproof.de/v1/',
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
]
]);
$response = $client->get('events/evt_2Nz9Q8kL3Fy');
$event = json_decode($response->getBody(), true);
const axios = require('axios');
const response = await axios.get(
'https://logproof.de/v1/events/evt_2Nz9Q8kL3Fy',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const event = response.data;
import requests
response = requests.get(
'https://logproof.de/v1/events/evt_2Nz9Q8kL3Fy',
headers={
'Authorization': 'Bearer YOUR_API_KEY'
}
)
event = response.json()