Skip to main content
GET
/
api
/
kits
/
{kit_id}
/
telemetry
Get Telemetry
curl --request GET \
  --url https://argus.hoplynk.com/api/kits/{kit_id}/telemetry
import requests

url = "https://argus.hoplynk.com/api/kits/{kit_id}/telemetry"

response = requests.get(url)

print(response.text)
const options = {method: 'GET'};

fetch('https://argus.hoplynk.com/api/kits/{kit_id}/telemetry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://argus.hoplynk.com/api/kits/{kit_id}/telemetry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://argus.hoplynk.com/api/kits/{kit_id}/telemetry"

req, _ := http.NewRequest("GET", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://argus.hoplynk.com/api/kits/{kit_id}/telemetry")
.asString();
require 'uri'
require 'net/http'

url = URI("https://argus.hoplynk.com/api/kits/{kit_id}/telemetry")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
{
  "online": true,
  "kit_id": "<string>",
  "kit_name": "<string>",
  "location": {
    "latitude": 123,
    "longitude": 123,
    "altitude": 123,
    "source": "<string>",
    "stale": true,
    "kit_location": "<string>"
  },
  "battery": 123,
  "battery_charging": true,
  "gateway": {
    "name": "<string>",
    "model": "<string>",
    "cpu_pct": 123,
    "mem_pct": 123,
    "uptime_s": 123
  },
  "wans": [
    {}
  ],
  "clients": [
    {}
  ],
  "speedtest": {}
}
kit_id
string
required
UUID of the kit.
Use this endpoint when you need multiple fields at once. For single fields, use the dedicated endpoints (/location, /links) to keep response sizes small.

Response

online
boolean
Whether the kit is currently reachable.
kit_id
string
UUID of the kit.
kit_name
string
Display name of the kit.
location
object
Latest GPS fix.
battery
number
Battery level percentage (0–100). null if kit has no battery sensor.
battery_charging
boolean
true if battery is charging. null if not reported.
gateway
object
UniFi gateway stats.
wans
array
WAN link objects. Same schema as GET /links.
clients
array
Devices connected to the kit’s local network. Each entry has name, ip, mac, type.
speedtest
object
Last speedtest result: download_mbps, upload_mbps, latency_ms, timestamp.
Returns 503 if the kit is offline and has no cached telemetry. Check online before reading fields.

Example

data = client.get_kit_telemetry(kit_id)

if data["online"]:
    loc = data["location"]
    print(f"{data['kit_name']}{loc.get('kit_location')}")
    print(f"GPS: {loc['latitude']}, {loc['longitude']}")
    print(f"Battery: {data['battery']}%  Charging: {data['battery_charging']}")
else:
    print("Kit offline — showing last known data")

# Convenience helpers for individual fields:
battery   = client.get_battery(kit_id)
gateway   = client.get_gateway(kit_id)
clients   = client.get_clients(kit_id)
speedtest = client.get_speedtest(kit_id)
const data = await client.getTelemetry(kitId)
console.log(data.kit_name, data.online)
console.log(data.location.latitude, data.location.longitude)
console.log(`Battery: ${data.battery}%`)
curl https://argus.hoplynk.com/api/kits/$KIT_ID/telemetry \
  -H "X-API-Key: hlk_..."
Response
{
  "online": true,
  "kit_id": "53396241-e774-43c6-91c5-cd106dd13cfd",
  "kit_name": "HAVEN-5",
  "location": {
    "latitude": 31.111125,
    "longitude": -93.273234,
    "altitude": 550.2,
    "source": "starlink",
    "stale": false,
    "kit_location": "Shreveport, Louisiana"
  },
  "battery": 85,
  "battery_charging": true,
  "gateway": {
    "name": "HAVEN-5",
    "model": "UDM-Pro",
    "cpu_pct": 12,
    "mem_pct": 44,
    "uptime_s": 864000
  },
  "wans": [
    {
      "name": "eth3",
      "type": "starlink",
      "status": "online",
      "latency_ms": 28
    }
  ],
  "clients": [
    { "name": "reolink-cam-01", "ip": "192.168.0.10", "mac": "aa:bb:cc:dd:ee:ff", "type": "wired" }
  ],
  "speedtest": {
    "download_mbps": 112.4,
    "upload_mbps": 14.8,
    "latency_ms": 29,
    "timestamp": "2026-05-18T12:00:00Z"
  }
}