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
}
}
]
}string
required
UUID of the kit.
Response
array
List of WAN link objects, one per interface.
Show Link fields
Show Link fields
string
Interface name (e.g.
eth3, eth4).string
Classified link type:
starlink · cellular · ethernet · wifistring
online · offline · standbystring
ISP name (e.g.
SpaceX Services, AT&T Wireless).string
Public IP address of this WAN interface.
number
Current download throughput in bits per second.
number
Current upload throughput in bits per second.
number
Peak download throughput observed.
number
Peak upload throughput observed.
number
Round-trip latency in milliseconds.
number
Latency jitter in milliseconds.
number
Packet loss percentage (0–100).
number
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
}
}
]
}