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'
categorystringFilter 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'
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)