List Links
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/linksimport requests
url = "https://argus.hoplynk.com/api/kits/{kit_id}/links"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://argus.hoplynk.com/api/kits/{kit_id}/links', 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}/links",
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}/links"
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}/links")
.asString();require 'uri'
require 'net/http'
url = URI("https://argus.hoplynk.com/api/kits/{kit_id}/links")
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{
"links": [
{
"name": "<string>",
"type": "<string>",
"status": "<string>",
"isp": "<string>",
"ip": "<string>",
"rx_bps": 123,
"tx_bps": 123,
"rx_bps_max": 123,
"tx_bps_max": 123,
"latency_ms": 123,
"jitter_ms": 123,
"packet_loss_pct": 123,
"availability_pct": 123,
"usage": {
"today_rx_gb": 123,
"today_tx_gb": 123,
"month_rx_gb": 123,
"month_tx_gb": 123
}
}
]
}Kits
List Links
Return all WAN links for a kit — Starlink, cellular, ethernet — with real-time metrics and data usage.
GET
/
api
/
kits
/
{kit_id}
/
links
List Links
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/linksimport requests
url = "https://argus.hoplynk.com/api/kits/{kit_id}/links"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://argus.hoplynk.com/api/kits/{kit_id}/links', 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}/links",
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}/links"
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}/links")
.asString();require 'uri'
require 'net/http'
url = URI("https://argus.hoplynk.com/api/kits/{kit_id}/links")
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{
"links": [
{
"name": "<string>",
"type": "<string>",
"status": "<string>",
"isp": "<string>",
"ip": "<string>",
"rx_bps": 123,
"tx_bps": 123,
"rx_bps_max": 123,
"tx_bps_max": 123,
"latency_ms": 123,
"jitter_ms": 123,
"packet_loss_pct": 123,
"availability_pct": 123,
"usage": {
"today_rx_gb": 123,
"today_tx_gb": 123,
"month_rx_gb": 123,
"month_tx_gb": 123
}
}
]
}UUID of the kit.
Response
List of WAN link objects, one per interface.
Show Link fields
Show Link fields
Interface name (e.g.
eth3, eth4).Classified link type:
starlink · cellular · ethernet · wifionline · offline · standbyISP name (e.g.
SpaceX Services, AT&T Wireless).Public IP address of this WAN interface.
Current download throughput in bits per second.
Current upload throughput in bits per second.
Peak download throughput observed.
Peak upload throughput observed.
Round-trip latency in milliseconds.
Latency jitter in milliseconds.
Packet loss percentage (0–100).
Link uptime percentage over the monitoring window.
Example
links = client.get_links(kit_id)
for link in links:
print(link["name"], link["type"], link["status"])
print(f" ↓ {(link['rx_bps'] or 0)/1e6:.1f} Mbps ↑ {(link['tx_bps'] or 0)/1e6:.1f} Mbps {link['latency_ms']}ms")
usage = link.get("usage") or {}
print(f" Today: {usage.get('today_rx_gb', 0):.1f} GB down / Month: {usage.get('month_rx_gb', 0):.1f} GB down")
const { links } = await client.getLinks(kitId)
links.forEach(link => {
console.log(link.name, link.type, link.status)
console.log(`↓ ${((link.rx_bps || 0) / 1e6).toFixed(1)} Mbps ${link.latency_ms}ms`)
})
curl https://argus.hoplynk.com/api/kits/$KIT_ID/links \
-H "X-API-Key: hlk_..."
Response
{
"links": [
{
"name": "eth3",
"type": "starlink",
"status": "online",
"isp": "SpaceX Services",
"ip": "98.97.77.68",
"rx_bps": 28400000,
"tx_bps": 6200000,
"rx_bps_max": 180000000,
"tx_bps_max": 20000000,
"latency_ms": 28,
"jitter_ms": 1.4,
"packet_loss_pct": 0.0,
"availability_pct": 99.8,
"usage": {
"today_rx_gb": 4.2,
"today_tx_gb": 1.1,
"month_rx_gb": 87.3,
"month_tx_gb": 22.6
}
},
{
"name": "eth4",
"type": "cellular",
"status": "standby",
"isp": "AT&T Wireless",
"ip": "25.14.82.110",
"rx_bps": 0,
"tx_bps": 0,
"latency_ms": 33,
"jitter_ms": 2.1,
"packet_loss_pct": 0.0,
"availability_pct": 99.9,
"usage": {
"today_rx_gb": 0.0,
"today_tx_gb": 0.0,
"month_rx_gb": 1.2,
"month_tx_gb": 0.4
}
}
]
}
⌘I