API
Last updated
Was this helpful?
Last updated
Was this helpful?
The Stacks Blockchain API allows you to query the Stacks blockchain and interact with smart contracts. It was built to maintain pageable materialized views of the Stacks Blockchain.
Note that the Stacks Node RPC API and the Hiro Stacks API are two different things. The Hiro API is a centralized service run by Hiro, a developer tooling company, that makes it easy to get onboarded and begin interacting with the Stacks blockchain in a RESTful way. You can also run your own API server.
The Hiro Stacks API is a proxy for the Stacks Node API that makes it a bit easier to work with by providing additional functionality.
The RPC API is generated by every Stacks node and allows developers to self-host their own node and API for a more decentralized architecture.
The RPC API can be used without any authorization. The basepath for the API is:
If you run a local node, it exposes an HTTP server on port 20443
. The info endpoint would be localhost:20443/v2/info
.
The Stacks 2.0 Blockchain API (Hiro's API) is centrally hosted. However, every running Stacks node exposes an RPC API, which allows you to interact with the underlying blockchain. Instead of using a centrally hosted API, you can directly access the RPC API of a locally hosted Node.
Broadcast raw transactions on the network. You can use the @stacks/transactions project to generate a raw transaction payload.
/v2/transactions
Get contract interface using a contract_address
and contract name
/v2/contracts/interface/{contract_address}//{contract_name}
Stacks address
Contract name
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Attempt to fetch data from a contract data map. The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The map is identified with [Map Name].
The key to lookup in the map is supplied via the POST body. This should be supplied as the hex string serialization of the key (which should be a Clarity value). Note, this is a JSON string atom.
In the response, data
is the hex serialization of the map response. Note that map responses are Clarity option types, for non-existent values, this is a serialized none, and for all other responses, it is a serialized (some ...) object.
/v2/map_entry/{contract_address}//{contract_name}//{map_name}
Stacks address
Contract name
Map name
Returns object without the proof field when set to 0
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Returns the Clarity source code of a given contract, along with the block height it was published in, and the MARF proof for the data
/v2/contracts/source/{contract_address}//{contract_name}
Stacks address
Contract name
Returns object without the proof field if set to 0
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Call a read-only public function on a given smart contract.
The smart contract and function are specified using the URL path. The arguments and the simulated tx-sender are supplied via the POST body in the following JSON format:
/v2/contracts/call-read/{contract_address}//{contract_name}//{function_name}
Stacks address
Contract name
Function name
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
The simulated tx-sender
An array of hex serialized Clarity values
Get the account data for the provided principal
Where balance is the hex encoding of a unsigned 128-bit integer (big-endian), nonce is a unsigned 64-bit integer, and the proofs are provided as hex strings.
For non-existent accounts, this does not 404, rather it returns an object with balance and nonce of 0.
/v2/accounts/{principal}
Stacks address or a Contract identifier (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0.get-info
)
Returns object without the proof field if set to 0
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Get an estimated fee for the supplied transaction. This estimates the execution cost of the transaction, the current fee rate of the network, and returns estimates for fee amounts.
transaction_payload
is a hex-encoded serialization of
the TransactionPayload for the transaction.estimated_len
is an optional argument that provides the
endpoint with an estimation of the final length (in bytes)
of the transaction, including any post-conditions and
signaturesIf the node cannot provide an estimate for the transaction
(e.g., if the node has never seen a contract-call for the
given contract and function) or if estimation is not
configured on this node, a 400 response is returned.
The 400 response will be a JSON error containing a reason
field which can be one of the following:
DatabaseError
- this Stacks node has had an internal
database error while trying to estimate the costs of the
supplied transaction.NoEstimateAvailable
- this Stacks node has not seen this
kind of contract-call before, and it cannot provide an
estimate yet.CostEstimationDisabled
- this Stacks node does not perform
fee or cost estimation, and it cannot respond on this
endpoint.The 200 response contains the following data:
estimated_cost
- the estimated multi-dimensional cost of
executing the Clarity VM on the provided transaction.estimated_cost_scalar
- a unitless integer that the Stacks
node uses to compare how much of the block limit is consumed
by different transactions. This value incorporates the
estimated length of the transaction and the estimated
execution cost of the transaction. The range of this integer
may vary between different Stacks nodes. In order to compute
an estimate of total fee amount for the transaction, this
value is multiplied by the same Stacks node's estimated fee
rate.cost_scalar_change_by_byte
- a float value that indicates how
much the estimated_cost_scalar
value would increase for every
additional byte in the final transaction.estimations
- an array of estimated fee rates and total fees to
pay in microSTX for the transaction. This array provides a range of
estimates (default: 3) that may be used. Each element of the array
contains the following fields:
fee_rate
- the estimated value for the current fee
rates in the networkfee
- the estimated value for the total fee in
microSTX that the given transaction should pay. These
values are the result of computing:
fee_rate
x estimated_cost_scalar
.
If the estimated fees are less than the minimum relay
fee (1 ustx x estimated_len)
, then that minimum relay
fee will be returned here instead.Note: If the final transaction's byte size is larger than
supplied to estimated_len
, then applications should increase
this fee amount by:
fee_rate
x cost_scalar_change_by_byte
x (final_size
- estimated_size
)
/v2/fees/transaction
Determine whether or not a specified trait is implemented (either explicitly or implicitly) within a given contract.
/v2/traits/{contract_address}//{contract_name}//{trait_contract_address}//{trait_contract_name}//{trait_name}
Stacks address
Contract name
Trait Stacks address
Trait contract name
Trait name
The Stacks chain tip to query from. If tip == "latest", the query will be run from the latest known tip (includes unconfirmed state). If the tip is left unspecified, the stacks chain tip will be selected (only includes confirmed state).
Attempt to fetch the value of a MARF key.
In the response, data
is the hex serialization of the value.
/v2/clarity/marf/{clarity_marf_key}
MARF key
Returns object without the proof field when set to 0
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Attempt to fetch the metadata of a contract. The contract is identified with [Contract Address] and [Contract Name] in the URL path. The metadata key is identified with [Clarity Metadata Key].
In the response, data
is formatted as JSON.
/v2/clarity/metadata/{contract_address}//{contract_name}//{clarity_metadata_key}
Stacks address
Contract name
Metadata key
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Attempt to fetch the value of a constant inside a contract. The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The constant is identified with [Constant Name].
In the response, data
is the hex serialization of the constant value.
/v2/constant_val/{contract_address}//{contract_name}//{constant_name}
Stacks address
Contract name
Constant name
The Stacks chain tip to query from. If tip == latest, the query will be run from the latest known tip (includes unconfirmed state).
Used to get stacker and signer set information for a given cycle.
This will only return information for cycles started in Epoch-2.5 where PoX-4 was active and subsequent cycles.
/v3/stacker_set/{cycle_number}
reward cycle number
Fetch a Nakamoto block by its height and optional tip.
/v3/blocks/height/{block_height}
The block's height
The Stacks chain tip to query from. If tip == latest or empty, the query will be run from the latest known tip.
Fetch a sequence of Nakamoto blocks in a tenure. The blocks will be served in order from highest to lowest. The blocks will be encoded in their SIP-003 wire format, and concatenated together.
/v3/tenures/{block_id}
The tenure-start block ID of the tenure to query
The block ID hash of the highest block in this tenure that is already known to the caller. Neither the corresponding block nor any of its ancestors will be served. This is used to fetch tenure blocks that the caller does not have.
Fetch sortition information about a burnchain block. If the lookup_kind
and lookup
parameters are empty, it will return information about the latest burn block.
/v3/sortitions/{lookup_kind}//{lookup}
The style of lookup that should be performed. If not given, the most recent burn block processed will be returned.
Otherwise, the lookup_kind
should be one of the following strings:
consensus
- find the burn block using the consensus hash supplied in the lookup
field.burn_height
- find the burn block using the burn block height supplied in the lookup
field.burn
- find the burn block using the burn block hash supplied in the lookup
field.latest_and_last
- return information about the latest burn block with a winning miner and the previous such burn blockThe value to use for the lookup if lookup_kind
is consensus
, burn_height
, or burn
Get number of blocks signed by signer during a given reward cycle
/v3/signer/{signer}//{cycle_number}
Hex-encoded compressed Secp256k1 public key of signer
Reward cycle number