Query analytics events
Returns the app’s individual analytics events for one event name, newest first, with the properties the app sent on each one.
The time range defaults to the last 7 days. To use a different range, put timestamp bounds in the q filter, for example {"timestamp": {"gte": "2026-08-01T00:00:00Z", "lt": "2026-08-08T00:00:00Z"}}. Base44 applies the bounds as timestamp >= start and timestamp < end, so gt behaves like gte and lte behaves like lt. Events are kept for 60 days, so an older range returns nothing.
Page through the results with limit and offset. When has_more is true, send the returned next_offset as the next request’s offset. total counts every matching event, not just the ones on this page.
q is a JSON object serialized to a string. Each key is a field, and its value is either a literal to match for equality or an object of operators, as in {"user_id": "6891ab34d2f07e5c1b9a2d48", "properties.amount": {"gte": 50}}. The comparison operators are eq, ne, gt, gte, lt, lte, in, nin, and regex. Combine expressions with and or or, each taking an array, and negate one with not.
event_id, event_name, timestamp, user_id, session_id, and page_url are top-level fields. Every other key reads as an event property, so plan and properties.plan mean the same thing. Get the available property keys from List analytics event properties. Prefix a key with metadata. to filter on the device information Base44 captures itself: metadata.device_type, metadata.os, and metadata.country.
Authorizations
Personal API key.
Path Parameters
ID of the app whose analytics to read.
Body
Query request for analytics events with filter expression support.
Name of the event to query, exactly as the app tracked it.
"checkout_completed"
Filter expression, as a JSON object serialized to a string. Omit to return every event with this name in the time range.
"{\"properties.plan\": {\"in\": [\"pro\", \"elite\"]}}"
Number of events to skip before the page starts. Pass the next_offset from the previous response to get the next page.
x >= 00
Maximum number of events to return, between 1 and 1000.
1 <= x <= 1000100
Response
The matching events.
Number of events matching the query, across all pages.
1842
The requested page of events, newest first.
Whether more events match beyond this page.
true
Offset to pass as offset to get the next page, or null when has_more is false.
100