Read API
Authentication
Every request needs your site key as a bearer token, plus the domain it was issued for:
curl https://api.hellolog.io/v1/wordpress-activity-audit-log/events \
-H "Authorization: Bearer <your site key>" \
-H "X-Site-Domain: example.com"
X-Site-Domain has to match the domain the key was minted for — it's how
a leaked key stays useless anywhere except the WordPress install it was
issued for.
List events
GET /events returns events for your site, newest first, cursor-paginated.
| Parameter | Description |
|---|---|
limit | Page size, 1–200. Defaults to 50. |
from / to | ISO 8601 time bounds on when the event occurred. |
code | Filter by event code. Repeatable or comma-separated. |
user_id | Filter by WordPress user ID. |
object | Filter by the object type the event touched (e.g. post, user). |
event_type | Filter by event type (e.g. created, deleted). |
q | Free-text search over the event message. |
cursor | Opaque cursor from a previous response's next_cursor. |
{
"events": [
{
"id": 918273,
"occurred_at": "2026-08-18T09:41:02Z",
"code": 9000,
"severity": "info",
"object": "product",
"event_type": "created",
"user_id": 4,
"username": "a.kovacs",
"message": "WC product \"Merino scarf\" created."
}
],
"next_cursor": "eyJ0IjoiMjAyNi0wOC0xOFQwOTo0MDo1OVoiLCJpIjo5MTgyNzB9"
}
Pass next_cursor back as cursor to fetch the next page. An empty
next_cursor means you're on the last page.
Get a single event
GET /events/{id} returns one event by ID, with a few extra fields the
list endpoint leaves out to keep pages small: user_agent, session_id,
post_id, post_type, post_status.
Rate limits
Requests are rate-limited per site key. If you're building an integration that polls, prefer a sane interval — a minute or more — over tight loops.
Also available: MCP
If you'd rather ask questions than write queries, connect the same site key to MCP and ask an AI tool directly.