+
+
+
+ Live API Usage
+ · per minute, last 90 min
+
+
+ {updated && updated {updated}}
+
+
+
+
+
+ {loading ? (
+
+ Loading usage…
+
+ ) : error ? (
+
{error}
+ ) : (
+ <>
+
+ } label="Peak Calls / min" value={data?.peakCallsPerMin ?? 0} sub="busiest minute" />
+ } label="Calls (2h)" value={data?.totalCalls ?? 0} sub="AI turns sent" />
+ }
+ label="Errors (2h)"
+ value={data?.totalErrors ?? 0}
+ tone={(data?.totalErrors ?? 0) > 0 ? 'warn' : 'default'}
+ sub="incl. rate limits"
+ />
+
+
+ {shown.every(s => s.calls === 0 && s.errors === 0) ? (
+
No API calls in the last 90 minutes.
+ ) : (
+
+ {shown.map((s) => {
+ const h = Math.round((s.calls / peak) * 100);
+ const hasErr = s.errors > 0;
+ return (
+
+ );
+ })}
+
+ )}
+
+ API calls
+ minute had errors (rate limit / failure)
+
+ >
+ )}
+
+ );
+}
+
function Timeline({ data }: { data: AdminStats['timeline'] }) {
const [metric, setMetric] = useState