# Edge heartbeat (edge-self, 30s cadence) (/docs/api-reference/edges/HeartbeatController_heartbeat)

`POST /api/edges/{id}/heartbeat`

Base URL: https://api.xentr.ai

Authentication: bearer token (`Authorization: Bearer <token>`).

Edge reports online state + version + buffer telemetry. Updates last_seen_at + current_version for the fleet dashboard.

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `id` | path | yes | string | Edge UUID |

## Request body

Required.

Content type: `application/json`

```json
{
  "type": "object",
  "properties": {
    "version": {
      "type": "string",
      "description": "Semver of the edge-core running on this device",
      "example": "0.37.0"
    },
    "edgeType": {
      "type": "string",
      "description": "Binary kind of this edge build (OTA artifact key). Defaults to the stored value if omitted.",
      "example": "xentr-fanuc"
    },
    "channel": {
      "type": "string",
      "description": "OTA release channel this edge tracks ('stable' | 'beta' | 'canary').",
      "example": "stable"
    },
    "configRevision": {
      "type": "number",
      "description": "Current reconciled config revision",
      "example": 1745236100321
    },
    "bufferSizeBytes": {
      "type": "number",
      "description": "Local SQLite WAL buffer size in bytes",
      "example": 4096
    },
    "deviceCount": {
      "type": "number",
      "description": "Number of devices currently configured on this edge",
      "example": 12
    }
  },
  "required": [
    "version"
  ]
}
```

## Responses

### 204: Heartbeat received