Skip to main content

Admin SDK — Querying Analytics

Beta

This feature is in beta. Core behavior is stable and ready to try, but some APIs or configuration may still evolve before general availability.

The Admin SDK provides two analytics capabilities: querying request log metrics (automatic API usage data) and managing custom events (track + query). All endpoints require a Service Key.

Language Coverage

Analytics querying and event tracking are available in all Admin SDKs.

Setup​

import { createAdminClient } from '@edge-base/admin';

const admin = createAdminClient('https://my-edgebase-server.com', {
serviceKey: process.env.EDGEBASE_SERVICE_KEY,
});

The same analytics surface is exposed across all Admin SDKs for overview, timeSeries, breakdown, topEndpoints, track, trackBatch, and queryEvents.


Part 1: Request Log Metrics​

These methods query automatic API usage data — the same metrics shown in the Admin Dashboard.

Overview​

Get a complete snapshot: time series, summary, breakdown by category, and top endpoints.

const data = await admin.analytics.overview({ range: '7d' });
console.log(data.summary.totalRequests);
console.log(data.breakdown[0]);

Time Series, Breakdown, and Top Endpoints​

All request-log helpers accept the same option shape:

ParameterTypeDefaultDescription
rangestring'24h'Time range: '1h', '6h', '24h', '7d', '30d', '90d'
categorystring—Filter by route category. Common values include 'auth', 'db', 'storage', 'databaseLive', 'room', 'push', 'function', 'kv', 'sql', 'd1', 'vectorize', 'admin', 'config', and 'health'
groupBystring'hour'Time grouping: 'minute', 'hour', 'day'
const points = await admin.analytics.timeSeries({ range: '24h', groupBy: 'hour' });
const items = await admin.analytics.breakdown({ range: '30d' });
const top = await admin.analytics.topEndpoints({ range: '7d' });

Part 2: Custom Events​

Track and query custom events from your server-side code. Events are stored in LogsDO with 90-day retention (daily rollups for older data).

Tracking Events​

await admin.analytics.track('user_upgraded', { plan: 'pro', amount: 29.99 }, 'user_123');

await admin.analytics.trackBatch([
{ name: 'email_sent', properties: { template: 'welcome' }, userId: 'user_123' },
{ name: 'cron_completed', properties: { job: 'cleanup', duration: 1200 } },
]);

Track Parameters​

ParameterTypeRequiredDescription
namestringYesEvent name (e.g., 'purchase', 'signup')
propertiesobjectNoKey-value data (max 50 keys, 4 KB)
userIdstringNoAssociate with a specific user

Querying Events​

List Events​

const result = await admin.analytics.queryEvents({
metric: 'list',
event: 'purchase',
range: '7d',
limit: 20,
});

console.log(result.events);

Query Options​

ParameterTypeDefaultDescription
metricstring'list''list', 'count', 'timeSeries', 'topEvents'
rangestring'24h'Time range: '1h', '6h', '24h', '7d', '30d', '90d'
eventstring—Filter by event name
userIdstring—Filter by user ID
groupBystring'hour'For timeSeries: 'minute', 'hour', 'day'
limitnumber50Max events per page (for list)
cursorstring—Pagination cursor (from previous response)