Live Location Report
Tracking link usage analytics — creation, opens, and response counts.
/apidev/v1/reports/gt/live-locationOverview
Returns usage analytics for tracking links shared with end customers over a date range — how many links were created, opened, used, and responded to, along with unique receiver counts. Use group_by to aggregate by day, product, cause, or device, and filter by devices, drivers, service types, causes, or geography.
Request
Request Headers
Every request to a protected endpoint requires these headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token obtained from the Login endpoint. Format: Bearer <token> |
X-API-Key | Yes | Company integration key provided during onboarding. Format: gtk_xxx... |
tenant | Yes | Your assigned tenant domain (default: geotareas.com) — always send your assigned tenant |
Content-Type | Conditional | application/json — required for POST and PUT requests |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startdate | string | Yes | — | ISO 8601 start date-time (e.g. 2026-03-01T00:00:00). |
enddate | string | Yes | — | ISO 8601 end date-time. Max range 31 days from startdate. |
devices | string | No | — | Comma-separated device IDs. Max 500. |
drivers | string | No | — | Comma-separated driver IDs. Max 500. |
service_types | string | No | — | Comma-separated service type IDs. Max 100. |
causes | string | No | — | Comma-separated cause IDs. Max 100. |
countries | string | No | — | Comma-separated country IDs. Max 50. |
departments | string | No | — | Comma-separated department IDs. Max 50. |
group_by | enum | No | day | Grouping mode: detail (one row per tracking link — the web report's default view), day, product, cause, device. |
limit | integer | No | 25 | Number of records per page (1–100). |
offset | integer | No | 0 | Number of records to skip for pagination. |
Code Examples
- cURL
- JavaScript
- Python
curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/reports/gt/live-location?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&group_by=day&limit=25"
const res = await fetch(
`https://${TENANT}/apidev/v1/reports/gt/live-location?startdate=2026-03-01T00:00:00&enddate=2026-03-15T23:59:59&group_by=day&limit=25`,
{
headers: {
'Authorization': `Bearer ${TOKEN}`,
'X-API-Key': APIKEY,
'tenant': TENANT,
},
}
);
const data = await res.json();
import requests
response = requests.get(
f"https://{TENANT}/apidev/v1/reports/gt/live-location",
headers={"Authorization": f"Bearer {TOKEN}", "X-API-Key": APIKEY, "tenant": TENANT},
params={"startdate": "2026-03-01T00:00:00", "enddate": "2026-03-15T23:59:59", "group_by": "day", "limit": 25},
)
data = response.json()
Response
Response Fields
| Field | Type | Description |
|---|---|---|
task_number | string | null | Task number. |
product_name | string | Product name. |
product_type | string | Product type. |
service_type | string | Service type. |
cause | string | Cause name. |
device_name | string | Vehicle name. Present with detail and device. |
receiver | string | detail only — where the last notification went (email or phone). |
channel_name | string | detail only — channel of the last notification, already readable (Correo, SMS, WhatsApp, Webhook). |
created_at | string | null | detail only — when the tracking link was created. |
used_at | string | null | detail only — when the receiver opened the link. null if never opened. |
access_count | number | null | detail only — how many times the link was opened. |
status_name | string | detail only — link status, already readable (Activo, Vencido, Inactivo). |
link_path | string | detail only — relative path of the shareable link (prepend your portal origin). |
link_count | number | null | Grouped modes only — number of links in the group. |
created_count | number | Links created. |
used_count | number | Links used. |
receiver_count | number | Unique receivers. |
hash | string | Tracking link hash. |
total_links | number | Total links generated. |
unopened | number | Links not opened. |
opened | number | Links opened. |
date | string | null | Date (when grouped by day). |
response_count | number | Responses received. |
The web report opens ungrouped (group_by=detail): one row per tracking link, with receiver, channel, open times, access count, status and the link itself. The grouped modes (day, product, cause, device) return one row per group with link_count, unopened and opened instead. Fields that do not apply to the mode you asked for come back empty ('') or null — they are not available in that mode.
Example Response
{
"success": true,
"data": [
{
"task_number": "104820580001",
"product_name": "Installation",
"product_type": "Field",
"service_type": "Maintenance",
"cause": "Scheduled",
"device_name": "Truck A-101",
"receiver": "cliente@ejemplo.com",
"channel_name": "Correo",
"created_at": "2026-03-05T08:15:00",
"used_at": "2026-03-05T08:41:00",
"access_count": 2,
"status_name": "Activo",
"link_path": "/seg/6f2b9c1d",
"link_count": null,
"created_count": 3,
"used_count": 2,
"receiver_count": 1,
"hash": "abc123",
"total_links": 3,
"unopened": 1,
"opened": 2,
"date": "2026-03-05",
"response_count": 1
}
],
"meta": {
"total": 1,
"limit": 25,
"offset": 0
}
}
Errors
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid params: missing dates, range > 31 days, invalid enum values. |
UNAUTHORIZED | 401 | Missing, invalid, or expired tenant / Authorization / X-API-Key |
FORBIDDEN | 403 | User lacks required permission. |
RATE_LIMITED | 429 | Exceeded 10 req/min. |
INTERNAL_ERROR | 500 | Unexpected server error. |