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 number for pagination.
Number of results per page (max 100).
Search term to filter URLs by name or short code.
Predefined date range: last_hour, last_24_hours, last_7_days, last_30_days, last_year, all_time, custom.
Start date for custom range (ISO 8601). Required when dateRange is custom.
End date for custom range (ISO 8601). Required when dateRange is custom.
Filter by URL type: all, standard, branded, subdomain.
Filter by Campaign UUID or name.
Comma-separated list of tags to filter by.
Comma-separated list of short codes to filter by.
sortBy
string
default: "created_at"
Sort field: name, short_code, clicks, created_at, unique_visitors.
Sort direction: asc or desc.
Response
Aggregated statistics across all URLs matching the filters. Total number of short URLs.
Total clicks across all URLs.
Number of URLs with tracking enabled.
Statistics for the current page of results. Number of results on current page.
Total clicks for URLs on current page.
Number of tracked URLs on current page.
Date range information for the query. Start date (ISO 8601) or null for all time.
Whether all-time data is being returned.
The filters that were applied to the query.
Request Examples
cURL
Node.js
TypeScript
Python
PHP
Go
Java
# 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"
const fetch = require ( 'node-fetch' );
// Basic request
const response = await fetch (
'https://jmpy.me/api/v1/analytics/overview?dateRange=30d' ,
{
headers: { 'Authorization' : 'Bearer YOUR_API_KEY' }
}
);
const data = await response . json ();
console . log ( data );
// With filters
const params = new URLSearchParams ({
page: 1 ,
limit: 20 ,
urlType: 'branded' ,
sortBy: 'clicks' ,
sortOrder: 'desc'
});
const filteredResponse = await fetch (
`https://jmpy.me/api/v1/analytics/overview? ${ params } ` ,
{
headers: { 'Authorization' : 'Bearer YOUR_API_KEY' }
}
);
import axios from 'axios' ;
interface AnalyticsOverview {
summary : {
totalURLs : number ;
totalClicks : number ;
trackedURLs : number ;
avgClicksPerUrl : number ;
};
pagination : {
page : number ;
limit : number ;
totalPages : number ;
totalItems : number ;
};
}
const response = await axios . get <{ success : boolean ; data : AnalyticsOverview }>(
'https://jmpy.me/api/v1/analytics/overview' ,
{
headers: { 'Authorization' : 'Bearer YOUR_API_KEY' },
params: {
dateRange: '30d' ,
urlType: 'all' ,
sortBy: 'clicks' ,
sortOrder: 'desc'
}
}
);
console . log ( response . data );
import requests
# Basic request
response = requests.get(
'https://jmpy.me/api/v1/analytics/overview' ,
headers = { 'Authorization' : 'Bearer YOUR_API_KEY' },
params = {
'dateRange' : '30d' ,
'urlType' : 'all' ,
'sortBy' : 'clicks' ,
'sortOrder' : 'desc'
}
)
data = response.json()
print ( f "Total URLs: { data[ 'data' ][ 'summary' ][ 'totalURLs' ] } " )
print ( f "Total Clicks: { data[ 'data' ][ 'summary' ][ 'totalClicks' ] } " )
<? php
$client = new GuzzleHttp\ Client ();
$response = $client -> request ( 'GET' , 'https://jmpy.me/api/v1/analytics/overview' , [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
],
'query' => [
'dateRange' => '30d' ,
'urlType' => 'all' ,
'sortBy' => 'clicks' ,
'sortOrder' => 'desc'
]
]);
$data = json_decode ( $response -> getBody (), true );
echo "Total URLs: " . $data [ 'data' ][ 'summary' ][ 'totalURLs' ];
?>
package main
import (
" fmt "
" net/http "
" net/url "
" io "
)
func main () {
baseURL := "https://jmpy.me/api/v1/analytics/overview"
params := url . Values {}
params . Add ( "dateRange" , "30d" )
params . Add ( "urlType" , "all" )
params . Add ( "sortBy" , "clicks" )
params . Add ( "sortOrder" , "desc" )
req , _ := http . NewRequest ( "GET" , baseURL + "?" + params . Encode (), nil )
req . Header . Add ( "Authorization" , "Bearer YOUR_API_KEY" )
resp , _ := http . DefaultClient . Do ( req )
defer resp . Body . Close ()
body , _ := io . ReadAll ( resp . Body )
fmt . Println ( string ( body ))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpResponse;
HttpClient client = HttpClient . newHttpClient ();
String url = "https://jmpy.me/api/v1/analytics/overview" +
"?dateRange=30d&urlType=all&sortBy=clicks&sortOrder=desc" ;
HttpRequest request = HttpRequest . newBuilder ()
. uri ( URI . create (url))
. header ( "Authorization" , "Bearer YOUR_API_KEY" )
. GET ()
. build ();
HttpResponse < String > response = client . send (request,
HttpResponse . BodyHandlers . ofString ());
System . out . println ( response . body ());
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" : ""
}
}
}
{
"success" : false ,
"error" : {
"code" : "UNAUTHORIZED" ,
"message" : "User authentication required"
}
}
Use Cases
Compare branded vs standard URLs
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 );
}
Paginated URL listing with search
Build a searchable, paginated list of URLs with their analytics. async function searchUrls ( searchTerm , page = 1 ) {
const params = new URLSearchParams ({
search: searchTerm ,
page: page ,
limit: 20 ,
sortBy: 'clicks' ,
sortOrder: 'desc'
});
const response = await fetch (
`https://jmpy.me/api/v1/analytics/overview? ${ params } ` ,
{ headers: { 'Authorization' : 'Bearer YOUR_API_KEY' } }
);
const { data } = await response . json ();
return {
results: data . paginated ,
hasMore: data . pagination . page < data . pagination . totalPages ,
total: data . pagination . totalItems
};
}
Find low-performing links for cleanup
Generate weekly growth report
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