/api/v6/urlshortener/overviewOrganization overview
Inventory, range activity against the previous period, trends, top links and breakdowns for your whole organization.
Scope and limits
API key with the urlshortener service enabled
120 requests per minute
- Windows of up to 366 days by day, and up to 31 days by hour.
- Up to 100 values per dimension and per ranking.
- Cost quota: 150 units per minute per organization (see above). Two overviews at once per organization.
Your organization’s whole URL shortener in a single call, without walking the links one by one. Days and hours are Colombia’s (America/Bogota).
inventoryis a snapshot of the moment and does not depend on the range: live links by status (expiredare active ones whose expiry has passed), aliases, those that never received a visit and lifetime visits.totalsis what happened in the range, andtoday, the same for today. The previous period is requested with `compare=previous`: thenprevious,previousTotalsand, withseries,previousSeriescome, for the previous period of the same length (30 days up to today are compared with the 30 before, not with the calendar month). Without asking for it they come asnull.- Optional blocks are requested in
include. Those you do not request come asnull; those you request that have no data, empty.
| `include` block | What it adds |
|---|---|
series | series (and previousSeries when comparing): links created, visits and uniques per day or hour, with idle points as zero. |
top | topLinks: the links with the most visits within the range, excluding deleted ones. |
recent | recent: the last 5 links created and the last 5 visited. |
dimensions | dimensions: the dimensions breakdowns summed over all your links, with the same rules as a single link’s statistics. |
heatmap | heatmap: visits by weekday and hour (168 cells). With a range longer than 31 days, it is computed over its last 31, and the response says which. |
Unique visits are the sum of each day’s, not distinct people. Responses can be up to one minute old (X-Cache header).
Change of 2026-09-30: the previous period used to come always; now only with compare=previous. If you use it, add the parameter.
The overview walks every link of your organization, so its quota goes by what it costs: each overview spends units from a quota of 150 per minute for your organization. It spends 2 for the query; 1 for each block that does not depend on the length of the range (inventory, today, recent, heatmap), and, for every 31 days of the range, 1 for each block that walks it (totals, series, top, dimensions, and the previous-period ones if you compare). A 30-day overview with series,top,recent spends 8; comparing, 10; a one-year one with everything, 78. Without units, 429 with Retry-After. And at most two overviews of your organization are computed at once: one arriving with two in progress waits a few seconds and, if it does not get a turn, gets 429.
Query parameters
fromYYYY-MM-DD in Colombia time, inclusive. Defaults to 29 days before to (a 30-day window).toYYYY-MM-DD in Colombia time, inclusive. Defaults to today.granularityday allows windows of up to 366 days; hour, up to 31.dayhourDefault: day
compareprevious adds the previous period of the same length (previous, previousTotals and, with series, previousSeries). none, or not sending it, omits it. Until 2026-09-30 the default was previous.previousnoneDefault: none
includeseries, top, recent, dimensions, heatmap. Defaults to series,top,recent. An unknown name returns 400.dimensionscountry, subdivision, city, device, os, browser, referrer. Defaults to country,device,os,browser,referrer. Unknown names are ignored.topDefault: 10
Responses
Organization overview. The example is with compare=previous.
{
"success": true,
"data": {
"range": { "from": "2026-08-25", "to": "2026-09-23", "granularity": "day", "timezone": "America/Bogota" },
"previous": { "from": "2026-07-26", "to": "2026-08-24" },
"inventory": {
"total": 1250, "active": 1190, "expired": 40, "disabled": 20, "blocked": 0,
"aliases": 35, "neverClicked": 610, "clicks": 48210, "uniqueClicks": 30115
},
"today": { "linksCreated": 42, "clicks": 1310, "uniqueClicks": 902, "linksWithClicks": 118 },
"totals": { "linksCreated": 820, "clicks": 21400, "uniqueClicks": 14020, "linksWithClicks": 540 },
"previousTotals": { "linksCreated": 610, "clicks": 17950, "uniqueClicks": 11800, "linksWithClicks": 455 },
"series": [
{ "at": "2026-08-25", "linksCreated": 25, "clicks": 690, "uniqueClicks": 455 }
],
"previousSeries": [
{ "at": "2026-07-26", "linksCreated": 18, "clicks": 540, "uniqueClicks": 360 }
],
"topLinks": [
{
"domain": "h0b.co", "code": "promo-septiembre", "shortUrl": "https://h0b.co/promo-septiembre",
"longUrl": "https://example.com/promo", "status": "active", "expiresAt": null,
"clicks": 3120, "uniqueClicks": 2210, "lastClickAt": "2026-09-23T18:22:10Z"
}
],
"dimensions": null,
"recent": { "created": [], "clicked": [] },
"heatmap": null
},
"meta": {
"requestId": "8f0c0e2a4b1d4c8fae2b7a91e0c5d3f6",
"timestamp": "2026-09-23T18:30:00+00:00",
"responseTimeMs": 7.2
}
}An invalid date or a window above the limit, or a compare or include value that does not exist.
Invalid or missing credentials.
The API key does not have the URL shortener enabled (or it is turned off for your organization), the key cannot be used from the request network, or the organization is not active.
Request limit exceeded.
The query took too long and we stopped it. It happens with very large queries for organizations with many links: narrow it (fewer days, fewer sections, more filters). Repeating it as is does not help.
Possible errors
Codes this endpoint can return in error.code. The full detail lives in the catalog.
AUTH_REQUIREDNo Bearer token was sent, and every call requires one.401AUTH_INVALID_KEYThe API key is not recognized: wrong format, revoked or expired.403AUTH_SERVICE_NOT_ALLOWEDThe key is not allowed to use the service behind this endpoint.403AUTH_IP_NOT_ALLOWEDThe key only works from certain networks and your IP is not one of them.403ACCOUNT_NOT_ACTIVEYour organization is suspended or closed.400STATS_RANGE_INVALIDThe stats range or granularity is invalid.400VALIDATION_INVALID_PARAMETERA parameter or a body field is not valid.429RATE_TPS_EXCEEDEDYou exceeded your organization quota for this endpoint.504INFRA_DB_QUERY_TIMEOUTAn internal query took too long and was cut off.