Get Telemetry
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/telemetryimport 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": {}
}Kits
Get Telemetry
Return the full telemetry snapshot for a kit — GPS, links, gateway, battery, and clients in one call.
GET
/
api
/
kits
/
{kit_id}
/
telemetry
Get Telemetry
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/telemetryimport 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": {}
}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
boolean
Whether the kit is currently reachable.
string
UUID of the kit.
string
Display name of the kit.
object
number
Battery level percentage (0–100).
null if kit has no battery sensor.boolean
true if battery is charging. null if not reported.object
array
WAN link objects. Same schema as GET /links.
array
Devices connected to the kit’s local network. Each entry has
name, ip, mac, type.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"
}
}