List Assets
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/assetsimport requests
url = "https://argus.hoplynk.com/api/kits/{kit_id}/assets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://argus.hoplynk.com/api/kits/{kit_id}/assets', 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}/assets",
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}/assets"
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}/assets")
.asString();require 'uri'
require 'net/http'
url = URI("https://argus.hoplynk.com/api/kits/{kit_id}/assets")
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{
"assets": [
{
"id": "<string>",
"asset_key": "<string>",
"name": "<string>",
"type": "<string>",
"vendor": "<string>",
"model": "<string>",
"protocol": "<string>",
"status": "<string>",
"last_seen_at": "<string>",
"parent_id": "<string>",
"lat": 123,
"lon": 123,
"whep_url": "<string>"
}
]
}Assets
List Assets
Return all assets connected to a kit — cameras, drones, radios, sensors.
GET
/
api
/
kits
/
{kit_id}
/
assets
List Assets
curl --request GET \
--url https://argus.hoplynk.com/api/kits/{kit_id}/assetsimport requests
url = "https://argus.hoplynk.com/api/kits/{kit_id}/assets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://argus.hoplynk.com/api/kits/{kit_id}/assets', 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}/assets",
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}/assets"
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}/assets")
.asString();require 'uri'
require 'net/http'
url = URI("https://argus.hoplynk.com/api/kits/{kit_id}/assets")
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{
"assets": [
{
"id": "<string>",
"asset_key": "<string>",
"name": "<string>",
"type": "<string>",
"vendor": "<string>",
"model": "<string>",
"protocol": "<string>",
"status": "<string>",
"last_seen_at": "<string>",
"parent_id": "<string>",
"lat": 123,
"lon": 123,
"whep_url": "<string>"
}
]
}UUID of the kit.
Response
List of asset objects, ordered by type.
Show Asset fields
Show Asset fields
Asset UUID. Use this as
asset_id in all subsequent calls.Stable identifier set by the connector (e.g.
reolink_192_168_0_10). Unique within the kit.Display name (e.g.
Front Gate Camera, MAVLink Vehicle 1).Asset class:
camera · drone · radio · sensor · vehicle · gatewayManufacturer (e.g.
reolink, ardupilot, silvus). null for partner assets.Hardware model (e.g.
RLC-823A). null if not reported.Connector protocol:
reolink · onvif · mavlink · silvus · partneronline · offlineISO 8601 UTC timestamp of last heartbeat.
UUID of parent asset, if this is a child (e.g. a payload camera on a drone).
null for root assets.Last known latitude. Set by the connector or by Push Location.
Last known longitude.
WebRTC WHEP stream URL (cameras only). Open this in a browser or WebRTC client to watch the live feed.
Example
assets = client.get_assets(kit_id)
cameras = [a for a in assets["assets"] if a["type"] == "camera"]
drones = [a for a in assets["assets"] if a["type"] == "drone"]
for cam in cameras:
print(cam["name"], cam.get("whep_url"))
for drone in drones:
print(drone["name"], drone["status"], drone["lat"], drone["lon"])
const { assets } = await client.getAssets(kitId)
const cameras = assets.filter(a => a.type === 'camera')
cameras.forEach(cam => console.log(cam.name, cam.whep_url))
curl https://argus.hoplynk.com/api/kits/$KIT_ID/assets \
-H "X-API-Key: hlk_..."
Response
{
"assets": [
{
"id": "3a9df97f-69fd-40bb-89bb-8f32dfb03500",
"asset_key": "reolink_192_168_0_10",
"name": "Front Gate Camera",
"type": "camera",
"vendor": "reolink",
"model": "RLC-823A",
"protocol": "reolink",
"status": "online",
"last_seen_at": "2026-05-18T14:27:03Z",
"parent_id": null,
"lat": null,
"lon": null,
"whep_url": "https://argus.hoplynk.com/53396241-e774-43c6-91c5-cd106dd13cfd-reolink_192_168_0_10/whep"
},
{
"id": "cf210dda-fad8-4e69-ac9c-fe88f42f06a7",
"asset_key": "mavlink_1",
"name": "MAVLink Vehicle 1",
"type": "drone",
"vendor": "ardupilot",
"model": "Copter",
"protocol": "mavlink",
"status": "online",
"last_seen_at": "2026-05-18T14:27:01Z",
"parent_id": null,
"lat": 31.111,
"lon": -93.273,
"whep_url": null
}
]
}
⌘I