GET
/
analytics
/
overview
Analytics Overview
curl --request GET \
  --url https://jmpy.me/api/v1/analytics/overview \
  --header 'Authorization: Bearer <token>'
{
  "summary": {
    "totalURLs": 123,
    "totalClicks": 123,
    "trackedURLs": 123,
    "avgClicksPerUrl": 123
  },
  "paginated": {
    "showingResults": 123,
    "pageClicks": 123,
    "pageTrackedURLs": 123
  },
  "pagination": {
    "page": 123,
    "limit": 123,
    "totalPages": 123,
    "totalItems": 123
  },
  "period": {
    "start": "<string>",
    "end": "<string>",
    "dateRange": "<string>",
    "isAllTime": true
  },
  "appliedFilters": {}
}
Get a comprehensive analytics overview with summary statistics, filtering, and pagination for all your short URLs.
This endpoint returns user-level aggregated analytics. For analytics on a specific short URL, use the Complete Analytics endpoint.

Query Parameters

page
integer
default:1
Page number for pagination.
limit
integer
default:10
Number of results per page (max 100).
Search term to filter URLs by name or short code.
dateRange
string
default:"all_time"
Predefined date range: last_hour, last_24_hours, last_7_days, last_30_days, last_year, all_time, custom.
startDate
string
Start date for custom range (ISO 8601). Required when dateRange is custom.
endDate
string
End date for custom range (ISO 8601). Required when dateRange is custom.
urlType
string
default:"all"
Filter by URL type: all, standard, branded, subdomain.
campaignId
string
Filter by Campaign UUID or name.
tags
string
Comma-separated list of tags to filter by.
shortCodes
string
Comma-separated list of short codes to filter by.
sortBy
string
default:"created_at"
Sort field: name, short_code, clicks, created_at, unique_visitors.
country
string
Filter clicks by country name (e.g. Pakistan, United States).
countryCode
string
Filter clicks by ISO country code (e.g. pk, us). Supports alias country_code.
region
string
Filter clicks by region name (e.g. Sindh, California).
city
string
Filter clicks by city name (e.g. Karachi, New York).
deviceType
string
Filter clicks by device type. Options: desktop, mobile, tablet. Supports alias device_type.
browser
string
Filter clicks by browser (e.g. chrome, firefox, safari).
os
string
Filter clicks by OS (e.g. windows, macos, android, ios).
utmSource
string
Filter clicks by UTM Source. Supports alias utm_source.
utmMedium
string
Filter clicks by UTM Medium. Supports alias utm_medium.
utmCampaign
string
Filter clicks by UTM Campaign. Supports alias utm_campaign.
utmTerm
string
Filter clicks by UTM Term. Supports alias utm_term.
utmContent
string
Filter clicks by UTM Content. Supports alias utm_content.
referrer
string
Filter clicks by referrer URL.
referrerDomain
string
Filter clicks by referrer domain (e.g. t.co, facebook.com). Supports alias referrer_domain.

Response

summary
object
Aggregated statistics across all URLs matching the filters.
paginated
object
Statistics for the current page of results.
pagination
object
Pagination metadata.
period
object
Date range information for the query.
appliedFilters
object
The filters that were applied to the query.

Request Examples

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

# With pagination and filtering
curl -X GET "https://jmpy.me/api/v1/analytics/overview?page=1&limit=20&urlType=branded&sortBy=clicks&sortOrder=desc" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Custom date range
curl -X GET "https://jmpy.me/api/v1/analytics/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": {
      "totalURLs": 156,
      "totalClicks": 24589,
      "trackedURLs": 142,
      "avgClicksPerUrl": 157.62
    },
    "paginated": {
      "showingResults": 10,
      "pageClicks": 4523,
      "pageTrackedURLs": 10
    },
    "pagination": {
      "page": 1,
      "limit": 10,
      "totalPages": 16,
      "totalItems": 156
    },
    "period": {
      "start": "2024-12-08T00:00:00Z",
      "end": "2025-01-07T00:00:00Z",
      "dateRange": "30d",
      "isAllTime": false
    },
    "appliedFilters": {
      "urlType": "all",
      "sortBy": "created_at",
      "sortOrder": "desc",
      "search": ""
    }
  }
}

Use Cases

Display key metrics in a dashboard widget showing total URLs, clicks, and performance.
async function getDashboardStats() {
  const response = await fetch(
    'https://jmpy.me/api/v1/analytics/overview?dateRange=30d',
    { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
  );
  const { data } = await response.json();
  
  return {
    totalUrls: data.summary.totalURLs,
    totalClicks: data.summary.totalClicks,
    avgPerformance: data.summary.avgClicksPerUrl,
    trackedPercentage: Math.round(
      (data.summary.trackedURLs / data.summary.totalURLs) * 100
    )
  };
}
Analyze performance differences between your branded domain URLs and standard URLs.
async function compareUrlTypes() {
  const [branded, standard] = await Promise.all([
    fetch('https://jmpy.me/api/v1/analytics/overview?urlType=branded&dateRange=30d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json()),
    fetch('https://jmpy.me/api/v1/analytics/overview?urlType=standard&dateRange=30d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json())
  ]);
  
  console.log('Branded URLs avg clicks:', branded.data.summary.avgClicksPerUrl);
  console.log('Standard URLs avg clicks:', standard.data.summary.avgClicksPerUrl);
}
Compare current performance with previous periods to track growth and campaign effectiveness.
async function getWeeklyGrowth() {
  const [current, previous] = await Promise.all([
    fetch('https://jmpy.me/api/v1/analytics/overview?dateRange=last_7_days', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json()),
    fetch('https://jmpy.me/api/v1/analytics/overview?dateRange=custom&startDate=...', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json())
  ]);
  
  const growth = ((current.data.summary.totalClicks - previous.data.summary.totalClicks) / 
                  previous.data.summary.totalClicks) * 100;
  return growth.toFixed(2) + '%';
}

Clicks Timeline

Get time-series click data with configurable granularity

Top Performing URLs

Get your best performing links ranked by clicks

Recent Activity

See the most recently clicked URLs

UTM Analytics

Track campaign performance with UTM parameters