---
title: "Analytics & monitoring"
description: "Observe usage, errors, and logs to monitor your Supermemory integration"
icon: "/icons/hugeicons/chart-line-data-01.svg"
---
Monitor your Supermemory usage with detailed analytics on API calls, errors, and performance metrics.
## Overview
The Analytics API provides comprehensive insights into your Supermemory usage:
- **Usage Statistics**: Track API calls by type, hourly trends, and per-API key breakdown
- **Error Monitoring**: Identify top error types and patterns
- **Detailed Logs**: Inspect stored request logs and compacted response data for debugging
- **Performance Metrics**: Monitor average response times and processing duration
Analytics data is available for your entire organization and can be filtered by time period.
## Usage statistics
Get comprehensive usage statistics including hourly breakdowns and per-key metrics.
### Endpoint
`GET /v3/analytics/usage`
### Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `from` | string (ISO 8601) | Start date/time for the period |
| `to` | string (ISO 8601) | End date/time for the period |
| `period` | string | Alternative to `from`: `24h`, `7d`, `30d`, `all`. Use `from` and `to` for other windows |
| `page` | integer | Page number for pagination (default: 1) |
| `limit` | integer | Items per page (default: 20, max: 100) |
### Example request
```typescript TypeScript
// Get usage for the last 24 hours
const usage = await fetch('https://api.supermemory.ai/v3/analytics/usage?period=24h', {
headers: {
'Authorization': `Bearer ${SUPERMEMORY_API_KEY}`
}
});
const data = await usage.json();
```
```python Python
import requests
from datetime import datetime, timedelta
# Get usage for the last 7 days
response = requests.get(
'https://api.supermemory.ai/v3/analytics/usage',
params={'period': '7d'},
headers={'Authorization': f'Bearer {SUPERMEMORY_API_KEY}'}
)
data = response.json()
```
```bash cURL
# Get usage for a specific date range
curl -X GET "https://api.supermemory.ai/v3/analytics/usage?from=2024-01-01T00:00:00Z&to=2024-01-31T23:59:59Z" \
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
```
### Response schema
```json
{
"usage": [
{
"type": "add",
"count": 1523,
"avgDuration": 245.5,
"lastUsed": "2024-01-15T14:30:00Z"
},
{
"type": "search",
"count": 3421,
"avgDuration": 89.2,
"lastUsed": "2024-01-15T14:35:00Z"
}
],
"hourly": [
{
"hour": "2024-01-15T14:00:00Z",
"count": 156,
"avgDuration": 125.3
}
],
"byKey": [
{
"keyId": "key_abc123",
"keyName": "Production API",
"count": 2341,
"avgDuration": 98.7,
"lastUsed": "2024-01-15T14:35:00Z",
"tokensUsed": 182340
}
],
"totalMemories": 45678,
"pagination": {
"currentPage": 1,
"limit": 20,
"totalItems": 150,
"totalPages": 8
}
}
```
`tokensUsed` sums recorded `finalTokens` for the listed keys, including chat usage. It is not the billable ingestion-token meter, and ordinary memory request logs do not necessarily populate it.
## Error monitoring
Track and analyze errors to identify issues and improve reliability.
### Endpoint
`GET /v3/analytics/errors`
### Parameters
Same as usage endpoint - supports `from`, `to`, `period`, `page`, and `limit`.
### Example request
```typescript TypeScript
// Get errors from the last 24 hours
const errors = await fetch('https://api.supermemory.ai/v3/analytics/errors?period=24h', {
headers: {
'Authorization': `Bearer ${SUPERMEMORY_API_KEY}`
}
});
const data = await errors.json();
```
```python Python
# Monitor errors and alert on spikes
response = requests.get(
'https://api.supermemory.ai/v3/analytics/errors?period=24h',
headers={'Authorization': f'Bearer {SUPERMEMORY_API_KEY}'}
)
data = response.json()
```
```bash cURL
# Get errors for the last 7 days
curl -X GET "https://api.supermemory.ai/v3/analytics/errors?period=7d" \
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
```
### Response schema
```json
{
"summary": [
{
"type": "search_v4",
"totalRequests": 3421,
"successRate": 97.4,
"errorRate": 2.6,
"lastRequest": "2024-01-15T14:35:00Z"
}
],
"errors": [
{
"type": "search_v4",
"statusCode": 400,
"count": 89,
"percentage": 100
}
],
"hourly": [
{
"hour": "2024-01-15T14:00:00Z",
"count": 156,
"errorCount": 4,
"errorRate": 2.56
}
],
"byKey": [
{
"keyId": "key_abc123",
"keyName": "Production API",
"count": 2341,
"errorCount": 61,
"errorRate": 2.61,
"lastUsed": "2024-01-15T14:35:00Z"
}
],
"pagination": {
"currentPage": 1,
"limit": 20,
"totalItems": 3421,
"totalPages": 172
}
}
```
## Detailed logs
Inspect stored request logs for debugging. Response data is compacted: strings, arrays, fields, and nesting can be truncated. The ordinary request tracker skips HTTP `402`, `404`, and `500` responses, so this is not a complete audit trail.
### Endpoint
`GET /v3/analytics/logs`
### Parameters
Use `from`, `to`, `period`, `page`, and `limit` as above. The current `/logs` handler filters by organization and time only; it does not apply `type`, `statusCode`, or `keyId` filters.
### Example request
```typescript TypeScript
const logs = await fetch('https://api.supermemory.ai/v3/analytics/logs?period=24h', {
headers: {
'Authorization': `Bearer ${SUPERMEMORY_API_KEY}`
}
});
const data = await logs.json();
```
```python Python
response = requests.get(
'https://api.supermemory.ai/v3/analytics/logs',
params={
'period': '24h'
},
headers={'Authorization': f'Bearer {SUPERMEMORY_API_KEY}'}
)
logs = response.json()['logs']
```
```bash cURL
# Get all logs for debugging
curl -X GET "https://api.supermemory.ai/v3/analytics/logs?period=24h&limit=50" \
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
```
### Response schema
```json
{
"logs": [
{
"id": "req_xyz789",
"createdAt": "2024-01-15T14:30:00Z",
"type": "search",
"statusCode": 200,
"duration": 89,
"input": "{\"q\":\"user query\",\"limit\":10}",
"output": {
"type": "search",
"response": { "results": [], "timing": 85, "total": 0 }
}
}
],
"pagination": {
"currentPage": 1,
"limit": 20,
"totalItems": 500,
"totalPages": 25
}
}
```
## Limits and retention
The maximum page size is 100 items. Normal API request rate limits also apply; this page does not establish a separate analytics-specific allowance.
An accepted date range does not guarantee that historical logs are still retained. Confirm the applicable service retention policy with Supermemory, and export data to your own systems when you need longer retention.