# 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."}}}}}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stacks.co/reference/api/stacks-node-rpc/info.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
