GET /api/v1/agent/beat-status/:hash
Detailed beat chain status for an agent — heartbeat state, whitelist standing, spawn eligibility, and proof-of-existence metrics.
Auth: None (public)
curl https://provenonce.io/api/v1/agent/beat-status/0xfd752396...{
"agent_hash": "0xfd752396...",
"beat_initialized": true,
"beat_stale": false,
"beat_age_seconds": 42,
"sigil": {
"sigil": "genesis-v2*provenonce*sov",
"sigil_name": "genesis-v2",
"principal": "provenonce",
"tier": "sov",
"identity_class": "orchestrator",
"issued_at": "2026-02-12T...",
"birth_tx": "BmcxxSCk..."
},
"heartbeat": {
"status": "active",
"genesis_hash": "0xabc...",
"latest_beat": 2200,
"latest_hash": "0x9f8e7d6c5b4a3...",
"total_beats": 2200,
"lifetime_beats": 2200,
"available_beats": 0,
"difficulty": 1000,
"frozen_since": null,
"refused": false,
"refused_reason": null
},
"heartbeat_epoch": {
"billing_epoch": 0,
"count_in_epoch": 142,
"volume_cap": 20000,
"remaining": 19858,
"lineage_chain_hash": "0x651db240..."
},
"whitelist": {
"standing": "GOOD",
"last_checkin_beat": 9600,
"last_global_sync": 9600,
"current_global_beat": 10423,
"beats_behind": 823,
"beats_until_freeze": 0,
"deadline_anchors": 60
},
"gestation": {
"depth": 0,
"children_spawned": 2,
"next_child_cost": 1440,
"beats_accumulated": 0,
"progress_pct": 0,
"can_spawn": false,
"deficit": 1440
},
"proof_of_existence": {
"total_beats": 2200,
"available_beats": 0,
"total_hash_operations": 2200000,
"estimated_cpu_time_ms": 1100
},
"recent_checkins": [],
"lineage": {
"type": "root",
"parent": null,
"depth": 0,
"name": "provenonce-genesis-v2",
"registered_at": "2026-02-12T..."
}
}Standing values
| Standing | Meaning |
|---|---|
GOOD | Active, recently heartbeating |
WARNING | Approaching staleness threshold |
STALE | SIGIL holder with stale heartbeat — market staleness applies |
OVERDUE | Non-SIGIL agent overdue on anchor sync — freeze imminent |
FROZEN | DMS triggered — agent must resync |
REFUSED | Heartbeat refused due to identity complaint flag |
Response sections
sigil
Present for agents that hold a SIGIL. null otherwise.
| Field | Type | Description |
|---|---|---|
sigil | string | Full SIGIL string (name*principal*tier) |
sigil_name | string | Name segment |
principal | string | Principal segment |
tier | string | Trust tier (sov, org, ind, eph, sbx) |
identity_class | string | Pricing class (narrow_task, autonomous, orchestrator) |
issued_at | string | ISO timestamp |
birth_tx | string | null | Solana transaction signature |
heartbeat
Beat chain state.
| Field | Type | Description |
|---|---|---|
status | string | "active" or "frozen" |
total_beats / lifetime_beats | number | Total accepted beats over lifetime |
available_beats | number | Spendable beats for spawn gating |
difficulty | number | Current VDF difficulty |
refused | boolean | Whether heartbeats are currently refused |
whitelist
Anchor sync standing and freeze proximity.
| Field | Type | Description |
|---|---|---|
standing | string | One of the six standing values above |
beats_behind | number | How many anchors behind the agent is |
beats_until_freeze | number | Anchors remaining before DMS freeze (0 = already frozen/overdue) |
deadline_anchors | number | DMS threshold (60) |
gestation
Spawn eligibility.
| Field | Type | Description |
|---|---|---|
can_spawn | boolean | Whether the agent has enough beats |
next_child_cost | number | Beat cost for the next child |
progress_pct | number | Percentage toward spawn cost (0–100) |
Not found
Returns HTTP 404 if the agent has no beat chain:
{
"agent_hash": "0x...",
"beat_initialized": false,
"_message": "Agent has no beat chain. Initialize with POST /api/v1/agent/init"
}Rate limit: 60/min per IP
Last updated on