Audit log
Dinio records every change made through the API: what was done to which resource, by whom, and how it ended — including attempts that were refused. It never records the data itself: for a change, only the names of the fields that were sent.
interface AuditLog { id: string; ts: string; // ISO 8601, e.g. "2026-10-27T08:14:03.120Z" request_id?: string; // the Request-Id header of that request category: 'api' | 'relay' | 'auth' | 'system'; action: string; // "<resource>.<verb>": "record.create", "zone.api_key.create", "record.ttl.update" outcome: 'success' | 'denied' | 'invalid' | 'conflict' | 'not_found' | 'error'; http_status?: number; actor_type: 'user' | 'user_key' | 'zone_key' | 'edge' | 'system' | 'anonymous'; actor_user_id?: string; actor_zone_id?: string; // the zone of a zone key actor_label?: string; // e.g. the user's email ip?: string; // only on your own actions resource_type?: string; // "record", "zone", "redirect", … resource_id?: string; resource_name?: string; // e.g. "www.example.com A" zone_id?: string; fields?: string[]; // for a change: the names of the fields sent error_code?: string; // e.g. "MANAGED_RECORD"}actor_type says how the actor signed in: user in the Dinio web app, user_key with a
personal key, zone_key with a zone key.
List entries
Section titled “List entries”GET
/api/v1/audit-logsNewest first. What you see depends on the key:
- a personal key: your own actions, and everything on the zones you are Owner or Administrator of — including what happened before you became one;
- a zone key: everything on its zone.
| Query | |
|---|---|
from, to |
ISO 8601 with an offset. Default: the last 24 hours. At most 31 days. |
zone_id |
Only this zone. |
action |
An exact action (record.create), or a prefix ending in * (record.*). |
outcome, category, actor_type |
Only these values. |
actor_user_id |
Only actions of this user. |
resource_type, resource_id |
Only this resource. |
request_id |
Only the entries of one request. |
limit |
Entries per page, 1–500, default 50. |
cursor |
The next_cursor of the previous page. |
curl -H "Authorization: Bearer $DINIO_API_KEY" \ "https://api-dinio.bitelex.com/api/v1/audit-logs?zone_id=$ZONE_ID&action=record.*&from=2026-10-20T00:00:00Z"{ "success": true, "data": [ { "id": "0192f1c4-7e2a-7b3c-9d4e-5f6a7b8c9d0e", "ts": "2026-10-27T08:14:03.120Z", "category": "api", "action": "record.update", "outcome": "success", "http_status": 200, "actor_type": "user_key", "actor_label": "me@example.com", "resource_type": "record", "resource_name": "www.example.com A", "zone_id": "6f1c2a9e-3d4b-4c8a-9a51-0e2f7b1d4c33", "fields": ["data"] } ], "meta": { "limit": 50, "next_cursor": "eyJ0cyI6…" }}To read the next page, send the same query with cursor set to meta.next_cursor. A
next_cursor of null is the last page.
422 for a bad filter, a range over 31 days, or a cursor this API did not issue.
503 AUDIT_DISABLED when the audit log is not available.