> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hoplynk.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Telemetry

> Return the full telemetry snapshot for a kit — GPS, links, gateway, battery, and clients in one call.

<ParamField path="kit_id" type="string" required>
  UUID of the kit.
</ParamField>

<Info>
  Use this endpoint when you need multiple fields at once. For single fields, use the dedicated endpoints (`/location`, `/links`) to keep response sizes small.
</Info>

## Response

<ResponseField name="online" type="boolean">
  Whether the kit is currently reachable.
</ResponseField>

<ResponseField name="kit_id" type="string">
  UUID of the kit.
</ResponseField>

<ResponseField name="kit_name" type="string">
  Display name of the kit.
</ResponseField>

<ResponseField name="location" type="object">
  Latest GPS fix.

  <Expandable title="location fields">
    <ResponseField name="latitude" type="number">Decimal degrees (WGS-84).</ResponseField>
    <ResponseField name="longitude" type="number">Decimal degrees (WGS-84).</ResponseField>
    <ResponseField name="altitude" type="number">Meters above WGS-84 ellipsoid.</ResponseField>
    <ResponseField name="source" type="string">`starlink` · `starlink_cached` · `cellular` · `manual`</ResponseField>
    <ResponseField name="stale" type="boolean">`true` if fix is older than 30 seconds.</ResponseField>
    <ResponseField name="kit_location" type="string">Reverse-geocoded city name, e.g. `Shreveport, Louisiana`.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="battery" type="number">
  Battery level percentage (0–100). `null` if kit has no battery sensor.
</ResponseField>

<ResponseField name="battery_charging" type="boolean">
  `true` if battery is charging. `null` if not reported.
</ResponseField>

<ResponseField name="gateway" type="object">
  UniFi gateway stats.

  <Expandable title="gateway fields">
    <ResponseField name="name" type="string">Device name.</ResponseField>
    <ResponseField name="model" type="string">Hardware model (e.g. `UDM-Pro`).</ResponseField>
    <ResponseField name="cpu_pct" type="number">CPU utilization percentage.</ResponseField>
    <ResponseField name="mem_pct" type="number">Memory utilization percentage.</ResponseField>
    <ResponseField name="uptime_s" type="number">Seconds since last reboot.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="wans" type="array">
  WAN link objects. Same schema as [GET /links](/api-reference/kits/links).
</ResponseField>

<ResponseField name="clients" type="array">
  Devices connected to the kit's local network. Each entry has `name`, `ip`, `mac`, `type`.
</ResponseField>

<ResponseField name="speedtest" type="object">
  Last speedtest result: `download_mbps`, `upload_mbps`, `latency_ms`, `timestamp`.
</ResponseField>

<Warning>
  Returns `503` if the kit is offline and has no cached telemetry. Check `online` before reading fields.
</Warning>

## Example

<CodeGroup>
  ```python Python theme={null}
  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)
  ```

  ```javascript JavaScript theme={null}
  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}%`)
  ```

  ```bash cURL theme={null}
  curl https://argus.hoplynk.com/api/kits/$KIT_ID/telemetry \
    -H "X-API-Key: hlk_..."
  ```
</CodeGroup>

```json Response theme={null}
{
  "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"
  }
}
```
