Skip to main content

Admin SDK — Querying Analytics

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 '@edgebase/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'
categorystringFilter by API category: 'auth', 'db', 'storage', 'realtime', 'push', 'functions'
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'
eventstringFilter by event name
userIdstringFilter by user ID
groupBystring'hour'For timeSeries: 'minute', 'hour', 'day'
limitnumber50Max events per page (for list)
cursorstringPagination cursor (from previous response)