Link Stats Summary
GEThttps://www.viso.li/api/link/:slug/stats/summary
Returns counted totals for a short link you own: visits, unique visitors, countries, and the breakdowns your plan includes.
Without dates, the range is the last 7 days through today (start of day, server time).
deviceTypes and operatingSystems are null on FREE. referers.items is null below PRO. referers.unique is always a number.
Send Authorization: Bearer sk_api_your_api_key on every request. See authentication.
Path parameters
| Field | Type | Description |
|---|---|---|
slug | string | Required. Public slug of the shortened link. |
Query parameters
| Field | Type | Description |
|---|---|---|
startDate | string | ISO 8601 start of the range. Defaults to 7 days ago. |
endDate | string | ISO 8601 end of the range. Defaults to today. |
Example request
This reads the counted overview for 12–19 October 2026. On FREE, deviceTypes and operatingSystems are null. Below PRO, referers.items is null.
1curl "https://www.viso.li/api/link/abc123/stats/summary?startDate=2026-10-12T00:00:00.000Z&endDate=2026-10-19T00:00:00.000Z" \
2 -H "Authorization: Bearer sk_api_your_api_key"
Success response
Returns 200 OK. deviceTypes and operatingSystems are null on FREE. referers.items is null below PRO.
response.json
1{
2 "slug": "abc123",
3 "startDate": "2026-10-12T00:00:00.000Z",
4 "endDate": "2026-10-19T00:00:00.000Z",
5 "visits": 120,
6 "visitors": 80,
7 "referers": {
8 "unique": 4,
9 "items": [
10 {
11 "hostname": "google.com",
12 "count": 40
13 }
14 ]
15 },
16 "countries": [
17 {
18 "code": "US",
19 "name": "United States",
20 "count": 70
21 }
22 ],
23 "deviceTypes": [
24 {
25 "type": "DESKTOP",
26 "count": 90
27 }
28 ],
29 "operatingSystems": [
30 {
31 "os": "macOS",
32 "count": 50
33 }
34 ]
35}
Response fields
| Field | Type | Description |
|---|---|---|
slug | string | Required. The requested short-link slug. |
startDate | string | Required. ISO 8601 start of the resolved range. |
endDate | string | Required. ISO 8601 end of the resolved range. |
visits | number | Required. Total clicks in the range. |
visitors | number | Required. Unique visitors in the range. |
referers.unique | number | Required. Number of distinct referring hostnames. |
referers.items | object[] | null | Required. Hostname counts. Null below PRO. |
referers.items[].hostname | string | Required. Referring hostname. |
referers.items[].count | number | Required. Clicks from this hostname. |
countries | object[] | Required. Clicks by country. |
countries[].code | string | Required. ISO country code. |
countries[].name | string | Required. Country name. |
countries[].count | number | Required. Clicks from this country. |
deviceTypes | object[] | null | Required. Clicks by device type. Null on FREE. Included on STARTER, PRO, and ENTERPRISE. |
deviceTypes[].type | string | Required. MOBILE, TABLET, DESKTOP, BOT, or UNKNOWN. |
deviceTypes[].count | number | Required. Clicks from this device type. |
operatingSystems | object[] | null | Required. Clicks by operating system. Null on FREE. Included on STARTER, PRO, and ENTERPRISE. |
operatingSystems[].os | string | Required. Operating system name. |
operatingSystems[].count | number | Required. Clicks from this operating system. |
Errors
| Status | Error | Description |
|---|---|---|
| 400 | Bad Request | startDate or endDate is not a valid ISO 8601 datetime, or endDate is before startDate. |
| 401 | Unauthorized | Missing, malformed, or invalid Bearer token. |
| 404 | Not Found | The slug does not exist or does not belong to you. |
| 429 | Too Many Requests | More than 10 requests per minute and 50 requests per day. Some responses include a Retry-After header. |
| 500 | Internal Server Error | Unexpected server error. Retry the request. |