> ## 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.

# Push Location

> Push a GPS fix for a partner-managed asset. Appears on the Argus map immediately.

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

<ParamField path="asset_id" type="string" required>
  UUID of the asset (returned by [Create Asset](/api-reference/assets/create)).
</ParamField>

## Body

<ParamField body="lat" type="number" required>
  Latitude in decimal degrees (WGS-84).
</ParamField>

<ParamField body="lon" type="number" required>
  Longitude in decimal degrees (WGS-84).
</ParamField>

<ParamField body="alt_m" type="number">
  Altitude in meters above WGS-84 ellipsoid.
</ParamField>

<ParamField body="bearing" type="number">
  Heading in degrees true north (0–360). Displayed as the asset's orientation arrow on the map.
</ParamField>

<ParamField body="speed_mps" type="number">
  Ground speed in meters per second.
</ParamField>

## Response

Returns `204 No Content` on success. The fix is:

* Stored as a `gps` feed message (visible via [Get Asset Telemetry](/api-reference/assets/telemetry) and the [Asset WebSocket](/api-reference/streaming/asset-websocket))
* Written to the asset's `lat`/`lon`/`alt_m` columns for quick map queries
* Broadcast to any active WebSocket subscribers immediately

<Info>
  Push at whatever rate your system produces fixes. 1 Hz is typical for drones; lower rates are fine for vehicles.
</Info>

## Example

<CodeGroup>
  ```python Python theme={null}
  # One-shot push
  client.push_location(
      kit_id, asset["id"],
      lat=31.1234, lon=-93.4567,
      alt_m=120.5, bearing=245.0, speed_mps=4.2,
  )

  # Continuous loop from a GPS source
  import time
  while True:
      fix = gps.read()
      client.push_location(
          kit_id, asset_id,
          lat=fix.lat, lon=fix.lon,
          alt_m=fix.alt, bearing=fix.bearing,
          speed_mps=fix.speed,
      )
      time.sleep(1)
  ```

  ```javascript JavaScript theme={null}
  // One-shot
  await client.pushLocation(kitId, asset.id, {
    lat: 31.1234,
    lon: -93.4567,
    alt_m: 120.5,
    bearing: 245.0,
    speed_mps: 4.2,
  })

  // 1 Hz loop
  setInterval(async () => {
    const fix = gps.read()
    await client.pushLocation(kitId, assetId, {
      lat: fix.lat, lon: fix.lon, bearing: fix.bearing,
    })
  }, 1000)
  ```

  ```bash cURL theme={null}
  curl -X POST \
    https://argus.hoplynk.com/api/kits/$KIT_ID/assets/$ASSET_ID/location \
    -H "X-API-Key: hlk_..." \
    -H "Content-Type: application/json" \
    -d '{
      "lat": 31.1234,
      "lon": -93.4567,
      "alt_m": 120.5,
      "bearing": 245.0,
      "speed_mps": 4.2
    }'
  ```
</CodeGroup>
