GET
https://jmpy.me/api/v1
/
qranalytics
/
overview
QR Analytics Overview
curl --request GET \
  --url https://jmpy.me/api/v1/qranalytics/overview \
  --header 'Authorization: Bearer <token>'
{
  "summary": {
    "totalQRCodes": 123,
    "trackedQRCodes": 123,
    "totalScans": 123,
    "uniqueScanners": 123,
    "scannedQRCodes": 123,
    "lastScanAt": "<string>",
    "growthPercentage": 123,
    "avgScansPerQR": 123
  },
  "period": {
    "start": "<string>",
    "end": "<string>",
    "dateRange": "<string>",
    "isAllTime": true
  }
}
Get a comprehensive analytics overview with summary statistics for all your QR codes. This endpoint provides high-level metrics including total scans, unique scanners, growth rates, and period-based filtering.
This endpoint returns user-level aggregated analytics across all your QR codes. For analytics on a specific QR code, use the Complete Analytics endpoint.

Query Parameters

dateRange
string
default:"30d"
Predefined date range filter: 7d, 30d, 90d, 1y, all_time, custom.When set to custom, you must provide both startDate and endDate parameters.
startDate
string
Start date for custom range (ISO 8601 format). Required when dateRange is custom.Example: 2024-01-01T00:00:00Z
endDate
string
End date for custom range (ISO 8601 format). Required when dateRange is custom.Example: 2024-12-31T23:59:59Z

Response

summary
object
Aggregated statistics across all your QR codes.
period
object
Information about the date range applied to the query.

Request Examples

# Basic request - get overview for last 30 days
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Get all-time statistics
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=all_time" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Custom date range
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=custom&startDate=2024-01-01T00:00:00Z&endDate=2024-12-31T23:59:59Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Examples

{
  "success": true,
  "data": {
    "summary": {
      "totalQRCodes": 156,
      "trackedQRCodes": 142,
      "totalScans": 24589,
      "uniqueScanners": 18234,
      "scannedQRCodes": 89,
      "lastScanAt": "2025-01-07T15:30:00Z",
      "growthPercentage": 12.5,
      "avgScansPerQR": 157.6
    },
    "period": {
      "start": "2024-12-08T00:00:00Z",
      "end": "2025-01-07T00:00:00Z",
      "dateRange": "30d",
      "isAllTime": false
    }
  }
}

Use Cases

Display key QR metrics in a dashboard widget showing total QR codes, scans, and performance.
async function getQRDashboardStats() {
  const response = await fetch(
    'https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d',
    { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
  );
  const { data } = await response.json();
  
  return {
    totalQRCodes: data.summary.totalQRCodes,
    totalScans: data.summary.totalScans,
    avgScansPerQR: data.summary.avgScansPerQR,
    growthTrend: data.summary.growthPercentage > 0 ? 'up' : 'down',
    growthValue: Math.abs(data.summary.growthPercentage)
  };
}
Analyze QR performance across different time periods.
async function compareQRPerformance() {
  const [thisMonth, lastMonth] = await Promise.all([
    fetch('https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json()),
    fetch('https://jmpy.me/api/v1/qranalytics/overview?dateRange=90d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json())
  ]);
  
  console.log('This month scans:', thisMonth.data.summary.totalScans);
  console.log('Growth vs previous:', thisMonth.data.summary.growthPercentage + '%');
}
Calculate what percentage of your QR codes are actively being scanned.
import requests

def get_qr_engagement_rate():
    response = requests.get(
        'https://jmpy.me/api/v1/qranalytics/overview',
        headers={'Authorization': 'Bearer YOUR_API_KEY'},
        params={'dateRange': '30d'}
    )
    data = response.json()['data']['summary']
    
    if data['totalQRCodes'] > 0:
        engagement_rate = (data['scannedQRCodes'] / data['totalQRCodes']) * 100
        print(f"QR Engagement Rate: {engagement_rate:.1f}%")
        print(f"Active QR Codes: {data['scannedQRCodes']} / {data['totalQRCodes']}")
    
    return engagement_rate