Skip to content
Zach edited this page Jan 29, 2018 · 10 revisions

NOTE: this wiki is mostly deprecated and left for archival purposes. Please see the documentation website which is built from the docs directory. Additional information about the specification can also be found in that directory.

Tendermint supports the following RPC protocols:

  • URI over HTTP
  • JSONRPC over HTTP
  • JSONRPC over websockets

Configuration

Set the rpc_laddr config parameter in the $TMHOME/config/config.toml file or the --rpc-laddr command-line flag to the desired listener:port setting. Default: 0.0.0.0:46657.

URI/HTTP

Example request:

TXBYTES="<HEXBYTES>"
curl "http://localhost:46657/broadcast_tx_sync?tx=%22$TXBYTES%22" | jq

Response:

{"jsonrpc":"2.0","id":"","result":[96,{"code":0,"data":"","log":""}],"error":""}

The first entry in the result-array (96) is the method this response correlates with. 96 refers to "ResultTypeBroadcastTx", see responses.go for a complete overview.

JSONRPC/HTTP

JSONRPC requests can be POST'd to the root RPC endpoint via HTTP (e.g. http://localhost:46657/).

Example request:

{
  "method": "broadcast_tx_sync",
  "jsonrpc": "2.0",
  "params": [ "<HEXBYTES>" ],
  "id": "dontcare"
}

JSONRPC/websockets

JSONRPC requests can be made via websocket. The websocket endpoint is at /websocket, e.g. http://localhost:46657/websocket. Asynchronous RPC functions like event subscribe and unsubscribe are only available via websockets.

NOTE: see this issue for additional information on transaction formats.

Endpoints

An HTTP Get request to the root RPC endpoint (e.g. http://localhost:46657) shows a list of available endpoints.

Available endpoints:
http://localhost:46657/dump_consensus_state
http://localhost:46657/genesis
http://localhost:46657/net_info
http://localhost:46657/num_unconfirmed_txs
http://localhost:46657/status
http://localhost:46657/unconfirmed_txs
http://localhost:46657/unsafe_stop_cpu_profiler
http://localhost:46657/validators

Endpoints that require arguments:
http://localhost:46657/block?height=_
http://localhost:46657/blockchain?minHeight=_&maxHeight=_
http://localhost:46657/broadcast_tx_async?tx=_
http://localhost:46657/broadcast_tx_sync?tx=_
http://localhost:46657/dial_seeds?seeds=_
http://localhost:46657/subscribe?event=_
http://localhost:46657/unsafe_set_config?type=_&key=_&value=_
http://localhost:46657/unsafe_start_cpu_profiler?filename=_
http://localhost:46657/unsafe_write_heap_profile?filename=_
http://localhost:46657/unsubscribe?event=_

More Examples

See the various bash tests using curl in test/, and examples using the Go API in rpc/test/. Tendermint uses the go-rpc library, with docs at https://godoc.org/github.com/tendermint/go-rpc/client.