2014-11-20 12:39:09 -03:00
Unauthenticated REST Interface
==============================
The REST API can be enabled with the `-rest` option.
2017-07-14 10:47:10 -04:00
The interface runs on the same port as the JSON-RPC interface, by default port 8332 for mainnet, port 18332 for testnet,
and port 18443 for regtest.
2016-08-23 17:41:42 -03:00
2018-10-28 10:13:05 -03:00
REST Interface consistency guarantees
-------------------------------------
The [same guarantees as for the RPC Interface ](/doc/JSON-RPC-interface.md#rpc-consistency-guarantees )
apply.
2014-11-20 12:39:09 -03:00
Supported API
-------------
2015-04-21 15:20:24 -03:00
2017-07-01 00:00:51 -04:00
#### Transactions
2015-05-18 10:55:03 -03:00
`GET /rest/tx/<TX-HASH>.<bin|hex|json>`
2014-11-20 12:39:09 -03:00
2015-07-13 13:43:30 -03:00
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
2014-11-20 12:39:09 -03:00
2019-02-14 00:22:40 -03:00
By default, this endpoint will only search the mempool.
To query for a confirmed transaction, enable the transaction index via "txindex=1" command line / configuration option.
2014-12-29 16:26:47 -03:00
2017-07-01 00:00:51 -04:00
#### Blocks
2015-05-18 10:55:03 -03:00
`GET /rest/block/<BLOCK-HASH>.<bin|hex|json>`
`GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>`
2014-11-20 12:39:09 -03:00
2015-07-13 13:43:30 -03:00
Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats.
2019-01-16 11:40:29 -03:00
Responds with 404 if the block doesn't exist.
2014-11-20 12:39:09 -03:00
The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 2.66MB (1 MB max block, plus hex encoding) per request.
2014-12-06 06:54:09 -03:00
With the /notxdetails/ option JSON response will only contain the transaction hash instead of the complete transaction details. The option only affects the JSON response.
2017-07-01 00:00:51 -04:00
#### Blockheaders
2014-12-16 06:50:44 -03:00
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
2015-04-21 15:20:24 -03:00
2015-07-13 13:43:30 -03:00
Given a block hash: returns < COUNT > amount of blockheaders in upward direction.
2019-01-16 08:44:03 -03:00
Returns empty if the block doesn't exist or it isn't in the active chain.
2015-04-21 15:20:24 -03:00
2018-09-29 16:45:43 -03:00
#### Blockhash by height
`GET /rest/blockhashbyheight/<HEIGHT>.<bin|hex|json>`
Given a height: returns hash of block in best-block-chain at height provided.
2017-07-01 00:00:51 -04:00
#### Chaininfos
2014-12-29 16:26:47 -03:00
`GET /rest/chaininfo.json`
Returns various state info regarding block chain processing.
Only supports JSON as output format.
2019-10-28 14:33:40 -03:00
* chain : (string) current network name (main, test, regtest)
2014-12-29 16:26:47 -03:00
* blocks : (numeric) the current number of blocks processed in the server
* headers : (numeric) the current number of headers we have validated
* bestblockhash : (string) the hash of the currently best block
* difficulty : (numeric) the current difficulty
2017-06-08 17:25:53 -04:00
* mediantime : (numeric) the median time of the 11 blocks before the most recent block on the blockchain
2014-12-29 16:26:47 -03:00
* verificationprogress : (numeric) estimate of verification progress [0..1]
* chainwork : (string) total amount of work in active chain, in hexadecimal
2015-07-18 05:32:09 -03:00
* pruned : (boolean) if the blocks are subject to pruning
2018-03-02 18:00:25 -03:00
* pruneheight : (numeric) highest block available
2015-07-19 09:07:35 -03:00
* softforks : (array) status of softforks in progress
2017-06-08 17:25:53 -04:00
* bip9_softforks : (object) status of BIP9 softforks in progress
2014-11-20 12:39:09 -03:00
2017-07-01 00:00:51 -04:00
#### Query UTXO set
2015-05-27 10:56:16 -03:00
`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>`
2015-04-21 15:32:37 -03:00
2015-05-18 10:55:03 -03:00
The getutxo command allows querying of the UTXO set given a set of outpoints.
2015-04-21 15:32:37 -03:00
See BIP64 for input and output serialisation:
https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki
2015-05-18 10:55:03 -03:00
Example:
```
2015-05-27 10:56:16 -03:00
$ curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
2015-05-18 10:55:03 -03:00
{
"chainHeight" : 325347,
2017-06-08 17:25:53 -04:00
"chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
"bitmap": "1",
2015-05-18 10:55:03 -03:00
"utxos" : [
{
2017-06-08 17:25:53 -04:00
"txvers" : 1
"height" : 2147483647,
2019-09-07 23:52:45 -04:00
"value" : 8.8687,
2015-05-18 10:55:03 -03:00
"scriptPubKey" : {
2017-06-08 17:25:53 -04:00
"asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG",
2015-05-18 10:55:03 -03:00
"hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
"reqSigs" : 1,
2017-06-08 17:25:53 -04:00
"type" : "pubkeyhash",
"addresses" : [
"mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD"
]
}
2015-05-18 10:55:03 -03:00
}
2017-06-08 17:25:53 -04:00
]
2015-05-18 10:55:03 -03:00
}
```
2015-04-21 15:32:37 -03:00
2017-07-01 00:00:51 -04:00
#### Memory pool
2015-08-06 14:38:19 -03:00
`GET /rest/mempool/info.json`
Returns various information about the TX mempool.
Only supports JSON as output format.
2019-02-01 19:09:36 -03:00
* loaded : (boolean) if the mempool is fully loaded
2015-08-06 14:38:19 -03:00
* size : (numeric) the number of transactions in the TX mempool
* bytes : (numeric) size of the TX mempool in bytes
* usage : (numeric) total TX mempool memory usage
2017-06-08 17:25:53 -04:00
* maxmempool : (numeric) maximum memory usage for the mempool in bytes
* mempoolminfee : (numeric) minimum feerate (BTC per KB) for tx to be accepted
2015-08-06 14:38:19 -03:00
`GET /rest/mempool/contents.json`
Returns transactions in the TX mempool.
Only supports JSON as output format.
2014-11-20 12:39:09 -03:00
Risks
-------------
2015-07-13 13:43:30 -03:00
Running a web browser on the same node with a REST enabled bitcoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8332/rest/tx/1234567890.json">` which might break the nodes privacy.