# Info

General informational endpoints about the node.

## Get Core API info

> Get Core API information

```json
{"openapi":"3.1.0","info":{"title":"Stacks 3.0+ RPC API","version":"1.0.0"},"tags":[{"name":"Info","description":"General informational endpoints about the node."}],"servers":[{"url":"http://localhost:20443","description":"Local Stacks Node"},{"url":"https://api.mainnet.hiro.so","description":"Stacks Mainnet API"},{"url":"https://api.testnet.hiro.so","description":"Stacks Testnet API"}],"security":[],"paths":{"/v2/info":{"get":{"summary":"Get Core API info","description":"Get Core API information","tags":["Info"],"operationId":"getNodeInfo","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"GET request for core node information","type":"object","required":["peer_version","pox_consensus","burn_block_height","stable_pox_consensus","stable_burn_block_height","server_version","network_id","parent_network_id","stacks_tip_height","stacks_tip","stacks_tip_consensus_hash","genesis_chainstate_hash","tenure_height","is_fully_synced"],"properties":{"peer_version":{"type":"integer","description":"Identifies the version number for the networking communication. This\nshould not change while a node is running, and will only change if there's an\nupgrade.\n"},"pox_consensus":{"type":"string","description":"A hash used to identify the burnchain view for a node. It incorporates\nbitcoin chain information and PoX information. Nodes that disagree on this value\nwill appear to each other as forks. This value changes after every block.\n"},"burn_block_height":{"type":"integer","description":"Latest bitcoin chain height."},"stable_pox_consensus":{"type":"string","description":"Same as pox_consensus, but evaluated at stable_burn_block_height."},"stable_burn_block_height":{"type":"integer","description":"The bitcoin block height at which the last PoX anchor block was seen.\nLeftover from stacks 1.0, basically always burn_block_height - 1.\n"},"server_version":{"type":"string","description":"A version descriptor for the node."},"network_id":{"type":"integer","description":"Identifies the network (e.g., mainnet, testnet)."},"parent_network_id":{"type":"integer","description":"same as network_id, but for bitcoin"},"stacks_tip_height":{"type":"integer","description":"The latest Stacks chain height."},"stacks_tip":{"type":"string","description":"The best known block hash for the Stacks chain."},"stacks_tip_consensus_hash":{"type":"string","description":"The bitcoin consensus hash at the time that stacks_tip was mined."},"genesis_chainstate_hash":{"type":"string","description":"The SHA256 hash of the genesis chainstate."},"unanchored_tip":{"type":["string","null"],"description":"The latest microblock hash if any microblocks were processed. If no\nmicroblock has been processed for the current block, a 000.., hex array is\nreturned.\n"},"unanchored_seq":{"type":["integer","null"],"description":"The sequence number of the latest microblock if any microblocks were processed."},"tenure_height":{"type":"integer","description":"The latest Stacks tenure height."},"exit_at_block_height":{"type":["integer","null"],"description":"The block height at which a testnet network will be reset.\nNot applicable to mainnet.\n"},"is_fully_synced":{"type":"boolean","description":"Indicates whether the node has fully synchronized with the network."},"node_public_key":{"type":["string","null"],"description":"The node's public key."},"node_public_key_hash":{"type":["string","null"],"description":"The HASH160 of the node's public key."},"last_pox_anchor":{"type":["object","null"],"properties":{"anchor_block_hash":{"type":"string"},"anchor_block_txid":{"type":"string"}}},"stackerdbs":{"type":["array","null"],"items":{"type":"string"}}}}}}},"500":{"description":"Internal Server Error","content":{"text/plain":{"schema":{"type":"string"}}}}}}}}}
```

## Get PoX details

> Get Proof of Transfer (PoX) information. Can be used for Stacking.

```json
{"openapi":"3.1.0","info":{"title":"Stacks 3.0+ RPC API","version":"1.0.0"},"tags":[{"name":"Info","description":"General informational endpoints about the node."}],"servers":[{"url":"http://localhost:20443","description":"Local Stacks Node"},{"url":"https://api.mainnet.hiro.so","description":"Stacks Mainnet API"},{"url":"https://api.testnet.hiro.so","description":"Stacks Testnet API"}],"security":[],"paths":{"/v2/pox":{"get":{"summary":"Get PoX details","description":"Get Proof of Transfer (PoX) information. Can be used for Stacking.","tags":["Info"],"operationId":"getPoxInfo","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"description":"Get Proof of Transfer (PoX) information","type":"object","additionalProperties":false,"required":["contract_id","current_burnchain_block_height","first_burnchain_block_height","pox_activation_threshold_ustx","prepare_phase_block_length","reward_phase_block_length","reward_slots","total_liquid_supply_ustx","current_cycle","next_cycle","reward_cycle_length","contract_versions","epochs","current_epoch"],"properties":{"contract_id":{"type":"string","description":"The contract identifier for the PoX contract"},"first_burnchain_block_height":{"type":"integer","minimum":0,"description":"The first burn block evaluated in this Stacks chain"},"current_burnchain_block_height":{"type":"integer","minimum":0,"description":"The latest Bitcoin chain block height"},"current_epoch":{"type":"string","pattern":"^Epoch[0-9]+(_[0-9]+)?$","description":"The ID of the Stacks Epoch that the node is currently in."},"pox_activation_threshold_ustx":{"type":"integer","description":"The threshold of stacking participation that must be reached for PoX to activate in any cycle"},"rejection_fraction":{"type":["integer","null"],"description":"The fraction of liquid STX that must vote to reject PoX in order to prevent the next reward cycle from activating."},"reward_phase_block_length":{"type":"integer","minimum":0,"description":"The length in burn blocks of the reward phase"},"prepare_phase_block_length":{"type":"integer","minimum":0,"description":"The length in burn blocks of the prepare phase"},"reward_slots":{"type":"integer","minimum":0,"description":"The number of reward slots in a reward cycle"},"total_liquid_supply_ustx":{"type":"integer","minimum":0,"description":"The current total amount of liquid microstacks."},"reward_cycle_length":{"type":"integer","minimum":0,"description":"The length in burn blocks of a whole PoX cycle (reward phase and prepare phase)"},"current_cycle":{"type":"object","additionalProperties":false,"required":["id","min_threshold_ustx","stacked_ustx","is_pox_active"],"properties":{"id":{"type":"integer","minimum":0,"description":"The reward cycle number"},"min_threshold_ustx":{"type":"integer","minimum":0,"description":"The threshold amount for obtaining a slot in this reward cycle."},"stacked_ustx":{"type":"integer","minimum":0,"description":"The total amount of stacked microstacks in this reward cycle."},"is_pox_active":{"type":"boolean","description":"Whether or not PoX is active during this reward cycle."}}},"next_cycle":{"type":"object","additionalProperties":false,"required":["id","min_threshold_ustx","min_increment_ustx","stacked_ustx","prepare_phase_start_block_height","blocks_until_prepare_phase","reward_phase_start_block_height","blocks_until_reward_phase"],"properties":{"id":{"type":"integer","minimum":0,"description":"The reward cycle number"},"min_threshold_ustx":{"type":"integer","minimum":0,"description":"The threshold amount for obtaining a slot in this reward cycle."},"stacked_ustx":{"type":"integer","minimum":0,"description":"The total amount of stacked microstacks in this reward cycle."},"min_increment_ustx":{"type":"integer","minimum":0,"description":"The minimum amount that can be used to submit a `stack-stx` call."},"prepare_phase_start_block_height":{"type":"integer","minimum":0,"description":"The burn block height when the prepare phase for this cycle begins. Any eligible stacks must be stacked before this block."},"blocks_until_prepare_phase":{"type":"integer","description":"The number of burn blocks until the prepare phase for this cycle starts. If the prepare phase for this cycle already started, this value will be a negative number."},"reward_phase_start_block_height":{"type":"integer","minimum":0,"description":"The burn block height when the reward phase for this cycle begins. Any eligible stacks must be stacked before this block."},"blocks_until_reward_phase":{"type":"integer","minimum":0,"description":"The number of burn blocks until this reward phase starts."},"ustx_until_pox_rejection":{"type":["integer","null"],"minimum":0,"description":"The remaining amount of liquid STX that must vote to reject the next reward cycle to prevent the next reward cycle from activating."}}},"reward_cycle_id":{"type":"integer","minimum":0,"deprecated":true,"description":"The active reward cycle number"},"min_amount_ustx":{"type":"integer","minimum":0,"deprecated":true},"prepare_cycle_length":{"type":"integer","minimum":0,"deprecated":true},"rejection_votes_left_required":{"type":["integer","null"],"deprecated":true},"next_reward_cycle_in":{"type":"integer","minimum":0,"description":"The number of blocks until the next reward cycle.","deprecated":true},"contract_versions":{"type":"array","description":"Versions of each PoX","items":{"type":"object","additionalProperties":false,"required":["contract_id","activation_burnchain_block_height","first_reward_cycle_id"],"properties":{"contract_id":{"type":"string","description":"The contract identifier for the PoX contract"},"activation_burnchain_block_height":{"type":"integer","minimum":0,"description":"The burn block height at which this version of PoX is activated"},"first_reward_cycle_id":{"type":"integer","minimum":0,"description":"The first reward cycle number that uses this version of PoX"}}}},"epochs":{"type":"array","description":"Epochs","items":{"type":"object","required":["epoch_id","start_height","end_height","block_limit","network_epoch"],"properties":{"epoch_id":{"type":"string","pattern":"^Epoch[0-9]+(_[0-9]+)?$"},"start_height":{"type":"integer","minimum":0},"end_height":{"type":"integer","minimum":0},"block_limit":{"type":"object","required":["read_count","read_length","write_count","write_length","runtime"],"properties":{"read_count":{"type":"integer","minimum":0},"read_length":{"type":"integer","minimum":0},"write_count":{"type":"integer","minimum":0},"write_length":{"type":"integer","minimum":0},"runtime":{"type":"integer","minimum":0}}},"network_epoch":{"type":"integer","minimum":0}}}}}}}}},"400":{"description":"Bad request","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Not found","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"text/plain":{"schema":{"type":"string"}}}}},"parameters":[{"name":"tip","in":"query","schema":{"type":"string","pattern":"^(latest|[0-9a-f]{64})?$","maxLength":64},"description":"Stacks chain tip to query from. Options:\n- (empty/omitted): Use latest anchored tip (canonical confirmed state)\n- `latest`: Use latest known tip including unconfirmed microblocks\n- `{block_id}`: Use specific block ID (64 hex characters)\n"}]}}}}
```

## Query the health of the node.

> Get node health information.\
> A node is considered healthy if its Stacks tip height matches the maximum Stacks tip height observed among its connected peers.\
> This endpoint returns:\
> \- \`difference\_from\_max\_peer\`: The difference in Stacks height between this node and its most advanced peer.\
> \- \`max\_stacks\_height\_of\_neighbors\`: The maximum Stacks height observed among the node"s connected peers.\
> \- \`node\_stacks\_tip\_height\`: The current Stacks tip height of this node.\
> \- \`max\_stacks\_neighbor\_address\`: The address of the most advanced peer. Null if no peer data is available.<br>

```json
{"openapi":"3.1.0","info":{"title":"Stacks 3.0+ RPC API","version":"1.0.0"},"tags":[{"name":"Info","description":"General informational endpoints about the node."}],"servers":[{"url":"http://localhost:20443","description":"Local Stacks Node"},{"url":"https://api.mainnet.hiro.so","description":"Stacks Mainnet API"},{"url":"https://api.testnet.hiro.so","description":"Stacks Testnet API"}],"security":[],"paths":{"/v3/health":{"get":{"summary":"Query the health of the node.","description":"Get node health information.\nA node is considered healthy if its Stacks tip height matches the maximum Stacks tip height observed among its connected peers.\nThis endpoint returns:\n- `difference_from_max_peer`: The difference in Stacks height between this node and its most advanced peer.\n- `max_stacks_height_of_neighbors`: The maximum Stacks height observed among the node\"s connected peers.\n- `node_stacks_tip_height`: The current Stacks tip height of this node.\n- `max_stacks_neighbor_address`: The address of the most advanced peer. Null if no peer data is available.\n","tags":["Info"],"operationId":"getNodeHealth","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["difference_from_max_peer","max_stacks_height_of_neighbors","node_stacks_tip_height"],"properties":{"difference_from_max_peer":{"type":"integer","minimum":0,"description":"The difference in Stacks height between this node and its most advanced peer"},"max_stacks_height_of_neighbors":{"type":"integer","minimum":0,"description":"The maximum Stacks height observed among the node's connected peers"},"node_stacks_tip_height":{"type":"integer","minimum":0,"description":"The current Stacks tip height of this node"},"max_stacks_neighbor_address":{"type":["string","null"],"description":"The address of the most advanced peer"}},"description":"Health information about the node's synchronization status"}}}},"400":{"description":"Bad request","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Internal Server Error","content":{"text/plain":{"schema":{"type":"string"}}}}}}}}}
```

## Get neighbor peers

> Get information about the node"s neighbor peers in the network.<br>

```json
{"openapi":"3.1.0","info":{"title":"Stacks 3.0+ RPC API","version":"1.0.0"},"tags":[{"name":"Info","description":"General informational endpoints about the node."}],"servers":[{"url":"http://localhost:20443","description":"Local Stacks Node"},{"url":"https://api.mainnet.hiro.so","description":"Stacks Mainnet API"},{"url":"https://api.testnet.hiro.so","description":"Stacks Testnet API"}],"security":[],"paths":{"/v2/neighbors":{"get":{"summary":"Get neighbor peers","tags":["Info"],"operationId":"getNetworkPeers","description":"Get information about the node\"s neighbor peers in the network.\n","responses":{"200":{"description":"List of neighbor peers","content":{"application/json":{"schema":{"description":"Information about the node's neighbor peers in the network.","type":"object","required":["bootstrap","sample","inbound","outbound"],"properties":{"bootstrap":{"type":"array","description":"List of bootstrap peers known to the node.","items":{"type":"object","description":"A peer in the network","required":["network_id","peer_version","ip","port","public_key_hash","authenticated"],"properties":{"network_id":{"type":"integer","description":"The network ID of the peer."},"peer_version":{"type":"integer","description":"The peer version."},"ip":{"type":"string","description":"The IP address of the peer.","format":"ip"},"port":{"type":"integer","description":"The port number of the peer."},"public_key_hash":{"type":"string","description":"The HASH160 of the peer's public key.","pattern":"^[0-9a-f]{40}$"},"authenticated":{"type":"boolean","description":"Whether the peer connection is authenticated."},"stackerdbs":{"type":["array","null"],"description":"List of StackerDBs the peer supports, represented as qualified contract identifiers.","items":{"type":"string"}},"age":{"type":["integer","null"],"format":"int64","description":"The age of the peer connection in seconds."}}}},"sample":{"type":"array","description":"List of a sample of gossiped peers.","items":{"type":"object","description":"A peer in the network","required":["network_id","peer_version","ip","port","public_key_hash","authenticated"],"properties":{"network_id":{"type":"integer","description":"The network ID of the peer."},"peer_version":{"type":"integer","description":"The peer version."},"ip":{"type":"string","description":"The IP address of the peer.","format":"ip"},"port":{"type":"integer","description":"The port number of the peer."},"public_key_hash":{"type":"string","description":"The HASH160 of the peer's public key.","pattern":"^[0-9a-f]{40}$"},"authenticated":{"type":"boolean","description":"Whether the peer connection is authenticated."},"stackerdbs":{"type":["array","null"],"description":"List of StackerDBs the peer supports, represented as qualified contract identifiers.","items":{"type":"string"}},"age":{"type":["integer","null"],"format":"int64","description":"The age of the peer connection in seconds."}}}},"inbound":{"type":"array","description":"List of inbound peer connections.","items":{"type":"object","description":"A peer in the network","required":["network_id","peer_version","ip","port","public_key_hash","authenticated"],"properties":{"network_id":{"type":"integer","description":"The network ID of the peer."},"peer_version":{"type":"integer","description":"The peer version."},"ip":{"type":"string","description":"The IP address of the peer.","format":"ip"},"port":{"type":"integer","description":"The port number of the peer."},"public_key_hash":{"type":"string","description":"The HASH160 of the peer's public key.","pattern":"^[0-9a-f]{40}$"},"authenticated":{"type":"boolean","description":"Whether the peer connection is authenticated."},"stackerdbs":{"type":["array","null"],"description":"List of StackerDBs the peer supports, represented as qualified contract identifiers.","items":{"type":"string"}},"age":{"type":["integer","null"],"format":"int64","description":"The age of the peer connection in seconds."}}}},"outbound":{"type":"array","description":"List of outbound peer connections.","items":{"type":"object","description":"A peer in the network","required":["network_id","peer_version","ip","port","public_key_hash","authenticated"],"properties":{"network_id":{"type":"integer","description":"The network ID of the peer."},"peer_version":{"type":"integer","description":"The peer version."},"ip":{"type":"string","description":"The IP address of the peer.","format":"ip"},"port":{"type":"integer","description":"The port number of the peer."},"public_key_hash":{"type":"string","description":"The HASH160 of the peer's public key.","pattern":"^[0-9a-f]{40}$"},"authenticated":{"type":"boolean","description":"Whether the peer connection is authenticated."},"stackerdbs":{"type":["array","null"],"description":"List of StackerDBs the peer supports, represented as qualified contract identifiers.","items":{"type":"string"}},"age":{"type":["integer","null"],"format":"int64","description":"The age of the peer connection in seconds."}}}}},"$defs":{"RPCNeighbor":{"type":"object","description":"A peer in the network","required":["network_id","peer_version","ip","port","public_key_hash","authenticated"],"properties":{"network_id":{"type":"integer","description":"The network ID of the peer."},"peer_version":{"type":"integer","description":"The peer version."},"ip":{"type":"string","description":"The IP address of the peer.","format":"ip"},"port":{"type":"integer","description":"The port number of the peer."},"public_key_hash":{"type":"string","description":"The HASH160 of the peer's public key.","pattern":"^[0-9a-f]{40}$"},"authenticated":{"type":"boolean","description":"Whether the peer connection is authenticated."},"stackerdbs":{"type":["array","null"],"description":"List of StackerDBs the peer supports, represented as qualified contract identifiers.","items":{"type":"string"}},"age":{"type":["integer","null"],"format":"int64","description":"The age of the peer connection in seconds."}}}}}}}}}}}}}
```
