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": {}
}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
Whether the kit is currently reachable.
UUID of the kit.
Display name of the kit.
Latest GPS fix.
Show location fields
Show location fields
Decimal degrees (WGS-84).
Decimal degrees (WGS-84).
Meters above WGS-84 ellipsoid.
starlink · starlink_cached · cellular · manualtrue if fix is older than 30 seconds.Reverse-geocoded city name, e.g.
Shreveport, Louisiana.Battery level percentage (0–100).
null if kit has no battery sensor.true if battery is charging. null if not reported.WAN link objects. Same schema as GET /links.
Devices connected to the kit’s local network. Each entry has
name, ip, mac, type.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"
}
}
⌘I