OpenAPI Specification
openapi: 3.0.0
info:
title: Tendermint RPC ABCI Info API
contact:
name: Tendermint RPC
url: https://github.com/tendermint/tendermint/issues/new/choose
description: "Tendermint supports the following RPC protocols:\n\n* URI over HTTP\n* JSONRPC over HTTP\n* JSONRPC over websockets\n\n## Configuration\n\nRPC can be configured by tuning parameters under `[rpc]` table in the\n`$TMHOME/config/config.toml` file or by using the `--rpc.X` command-line\nflags.\n\nDefault rpc listen address is `tcp://0.0.0.0:26657`.\nTo set another address, set the `laddr` config parameter to desired value.\nCORS (Cross-Origin Resource Sharing) can be enabled by setting\n`cors_allowed_origins`, `cors_allowed_methods`, `cors_allowed_headers`\nconfig parameters.\n\n## Arguments\n\nArguments which expect strings or byte arrays may be passed as quoted\nstrings, like `\"abc\"` or as `0x`-prefixed strings, like `0x616263`.\n\n## URI/HTTP\n\nA REST like interface.\n\n curl localhost:26657/block?height=5\n\n## JSONRPC/HTTP\n\nJSONRPC requests can be POST'd to the root RPC endpoint via HTTP.\n\n curl --header \"Content-Type: application/json\" --request POST --data '{\"method\": \"block\", \"params\": [\"5\"], \"id\": 1}' localhost:26657\n\n## JSONRPC/websockets\n\nJSONRPC requests can be also made via websocket.\nThe websocket endpoint is at `/websocket`, e.g. `localhost:26657/websocket`.\nAsynchronous RPC functions like event `subscribe` and `unsubscribe` are\nonly available via websockets.\n\nExample using https://github.com/hashrocket/ws:\n\n ws ws://localhost:26657/websocket\n > { \"jsonrpc\": \"2.0\", \"method\": \"subscribe\", \"params\": [\"tm.event='NewBlock'\"], \"id\": 1 }\n"
version: v0.34
license:
name: Apache 2.0
url: https://github.com/tendermint/tendermint/blob/main/LICENSE
servers:
- url: https://rpc.cosmos.network
description: Cosmos mainnet node to interact with the Tendermint RPC
- url: http://localhost:26657
description: Interact with the Tendermint RPC locally on your device
tags:
- name: Info
description: Informations about the node APIs
paths:
/health:
get:
summary: Node heartbeat
tags:
- Info
operationId: health
description: 'Get node health. Returns empty result (200 OK) on success, no response - in case of an error.
'
responses:
'200':
description: Gets Node Health
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyResponse'
'500':
description: empty error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/status:
get:
summary: Node Status
operationId: status
tags:
- Info
description: 'Get Tendermint status including node info, pubkey, latest block hash, app hash, block height and time.
'
responses:
'200':
description: Status of the node
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'500':
description: empty error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/net_info:
get:
summary: Network informations
operationId: net_info
tags:
- Info
description: 'Get network info.
'
responses:
'200':
description: empty answer
content:
application/json:
schema:
$ref: '#/components/schemas/NetInfoResponse'
'500':
description: empty error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/blockchain:
get:
summary: 'Get block headers (max: 20) for minHeight <= height <= maxHeight.'
operationId: blockchain
parameters:
- in: query
name: minHeight
description: Minimum block height to return
schema:
type: integer
example: 1
- in: query
name: maxHeight
description: Maximum block height to return
schema:
type: integer
example: 2
tags:
- Info
description: 'Get block headers for minHeight <= height <= maxHeight.
At most 20 items will be returned.
Upon success, the `Cache-Control` header will be set with the default
maximum age.
'
responses:
'200':
description: Block headers, returned in descending order (highest first).
content:
application/json:
schema:
$ref: '#/components/schemas/BlockchainResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/block:
get:
summary: Get block at a specified height
operationId: block
parameters:
- in: query
name: height
schema:
type: integer
default: 0
example: 1
description: height to return. If no height is provided, it will fetch the latest block.
tags:
- Info
description: 'Get Block.
If the `height` field is set to a non-default value, upon success, the
`Cache-Control` header will be set with the default maximum age.
'
responses:
'200':
description: Block informations.
content:
application/json:
schema:
$ref: '#/components/schemas/BlockResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/block_by_hash:
get:
summary: Get block by hash
operationId: block_by_hash
parameters:
- in: query
name: hash
description: block hash
required: true
schema:
type: string
example: '0xD70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED'
tags:
- Info
description: 'Get Block By Hash.
Upon success, the `Cache-Control` header will be set with the default
maximum age.
'
responses:
'200':
description: Block informations.
content:
application/json:
schema:
$ref: '#/components/schemas/BlockResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/block_results:
get:
summary: Get block results at a specified height
operationId: block_results
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch information regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: 'Get block_results. When the `discard_abci_responses` storage flag is
enabled, this endpoint will return an error.
If the `height` field is set to a non-default value, upon success, the
`Cache-Control` header will be set with the default maximum age.
'
responses:
'200':
description: Block results.
content:
application/json:
schema:
$ref: '#/components/schemas/BlockResultsResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/commit:
get:
summary: Get commit results at a specified height
operationId: commit
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch commit informations regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: 'Get Commit.
If the `height` field is set to a non-default value, upon success, the
`Cache-Control` header will be set with the default maximum age.
'
responses:
'200':
description: 'Commit results.
canonical switches from false to true for block H once block H+1 has been committed. Until then it''s subjective and only reflects what this node has seen so far.
'
content:
application/json:
schema:
$ref: '#/components/schemas/CommitResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/validators:
get:
summary: Get validator set at a specified height
operationId: validators
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch validator set which corresponds to the latest block.
schema:
type: integer
default: 0
example: 1
- in: query
name: page
description: Page number (1-based)
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: 'Number of entries per page (max: 100)'
required: false
schema:
type: integer
example: 30
default: 30
tags:
- Info
description: 'Get Validators. Validators are sorted by voting power.
If the `height` field is set to a non-default value, upon success, the
`Cache-Control` header will be set with the default maximum age.
'
responses:
'200':
description: Commit results.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidatorsResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/genesis:
get:
summary: Get Genesis
operationId: genesis
tags:
- Info
description: 'Get genesis.
Upon success, the `Cache-Control` header will be set with the default
maximum age.
'
responses:
'200':
description: Genesis results.
content:
application/json:
schema:
$ref: '#/components/schemas/GenesisResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/dump_consensus_state:
get:
summary: Get consensus state
operationId: dump_consensus_state
tags:
- Info
description: 'Get consensus state.
Not safe to call from inside the ABCI application during a block execution.
'
responses:
'200':
description: 'Complete consensus state.
See https://pkg.go.dev/github.com/tendermint/tendermint/types?tab=doc#Vote.String for Vote string description.
'
content:
application/json:
schema:
$ref: '#/components/schemas/DumpConsensusResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/consensus_state:
get:
summary: Get consensus state
operationId: consensus_state
tags:
- Info
description: 'Get consensus state.
Not safe to call from inside the ABCI application during a block execution.
'
responses:
'200':
description: consensus state results.
content:
application/json:
schema:
$ref: '#/components/schemas/ConsensusStateResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/consensus_params:
get:
summary: Get consensus parameters
operationId: consensus_params
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch commit informations regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: 'Get consensus parameters.
If the `height` field is set to a non-default value, upon success, the
`Cache-Control` header will be set with the default maximum age.
'
responses:
'200':
description: consensus parameters results.
content:
application/json:
schema:
$ref: '#/components/schemas/ConsensusParamsResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/unconfirmed_txs:
get:
summary: Get the list of unconfirmed transactions
operationId: unconfirmed_txs
parameters:
- in: query
name: limit
description: Maximum number of unconfirmed transactions to return (max 100)
required: false
schema:
type: integer
default: 30
example: 1
tags:
- Info
description: 'Get list of unconfirmed transactions
'
responses:
'200':
description: List of unconfirmed transactions
content:
application/json:
schema:
$ref: '#/components/schemas/UnconfirmedTransactionsResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/num_unconfirmed_txs:
get:
summary: Get data about unconfirmed transactions
operationId: num_unconfirmed_txs
tags:
- Info
description: 'Get data about unconfirmed transactions
'
responses:
'200':
description: status about unconfirmed transactions
content:
application/json:
schema:
$ref: '#/components/schemas/NumUnconfirmedTransactionsResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/tx_search:
get:
summary: Search for transactions
description: 'Search for transactions w/ their results.
See /subscribe for the query syntax.
'
operationId: tx_search
parameters:
- in: query
name: query
description: Query
required: true
schema:
type: string
example: tx.height=1000
- in: query
name: prove
description: Include proofs of the transactions inclusion in the block
required: false
schema:
type: boolean
default: false
example: true
- in: query
name: page
description: Page number (1-based)
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: 'Number of entries per page (max: 100)'
required: false
schema:
type: integer
default: 30
example: 30
- in: query
name: order_by
description: Order in which transactions are sorted ("asc" or "desc"), by height & index. If empty, default sorting will be still applied.
required: false
schema:
type: string
default: asc
example: asc
tags:
- Info
responses:
'200':
description: List of unconfirmed transactions
content:
application/json:
schema:
$ref: '#/components/schemas/TxSearchResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/block_search:
get:
summary: Search for blocks by BeginBlock and EndBlock events
description: 'Search for blocks by BeginBlock and EndBlock events.
See /subscribe for the query syntax.
'
operationId: block_search
parameters:
- in: query
name: query
description: Query
required: true
schema:
type: string
example: block.height > 1000 AND valset.changed > 0
- in: query
name: page
description: Page number (1-based)
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: 'Number of entries per page (max: 100)'
required: false
schema:
type: integer
default: 30
example: 30
- in: query
name: order_by
description: Order in which blocks are sorted ("asc" or "desc"), by height. If empty, default sorting will be still applied.
required: false
schema:
type: string
default: desc
example: asc
tags:
- Info
responses:
'200':
description: List of paginated blocks matching the search criteria.
content:
application/json:
schema:
$ref: '#/components/schemas/BlockSearchResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/tx:
get:
summary: Get transactions by hash
operationId: tx
parameters:
- in: query
name: hash
description: hash of transaction to retrieve
required: true
schema:
type: string
example: '0xD70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED'
- in: query
name: prove
description: Include proofs of the transaction's inclusion in the block
required: false
schema:
type: boolean
example: true
default: false
tags:
- Info
description: 'Get a transaction
Upon success, the `Cache-Control` header will be set with the default
maximum age.
'
responses:
'200':
description: Get a transaction`
content:
application/json:
schema:
$ref: '#/components/schemas/TxResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/broadcast_evidence:
get:
summary: Broadcast evidence of the misbehavior.
operationId: broadcast_evidence
parameters:
- in: query
name: evidence
description: JSON evidence
required: true
schema:
type: string
example: JSON_EVIDENCE_encoded
tags:
- Info
description: 'Broadcast evidence of the misbehavior.
'
responses:
'200':
description: Broadcast evidence of the misbehavior.
content:
application/json:
schema:
$ref: '#/components/schemas/BroadcastEvidenceResponse'
'500':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ValidatorPriority:
type: object
properties:
address:
type: string
example: 000001E443FD237E4B616E2FA69DF4EE3D49A94F
pub_key:
required:
- type
- value
properties:
type:
type: string
example: tendermint/PubKeyEd25519
value:
type: string
example: 9tK9IT+FPdf2qm+5c2qaxi10sWP+3erWTKgftn2PaQM=
type: object
voting_power:
type: string
example: '239727'
proposer_priority:
type: string
example: '-11896414'
NetInfo:
type: object
properties:
listening:
type: boolean
example: true
listeners:
type: array
items:
type: string
example: Listener(@)
n_peers:
type: string
example: '1'
peers:
type: array
items:
$ref: '#/components/schemas/Peer'
TxSearchResponse:
type: object
required:
- jsonrpc
- id
- result
properties:
jsonrpc:
type: string
example: '2.0'
id:
type: integer
example: 0
result:
required:
- txs
- total_count
properties:
txs:
type: array
items:
type: object
properties:
hash:
type: string
example: D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED
height:
type: string
example: '1000'
index:
type: integer
example: 0
tx_result:
required:
- log
- gas_wanted
- gas_used
- tags
properties:
log:
type: string
example: '[{"msg_index":"0","success":true,"log":""}]'
gas_wanted:
type: string
example: '200000'
gas_used:
type: string
example: '28596'
tags:
$ref: '#/components/schemas/Event'
type: object
tx:
type: string
example: 5wHwYl3uCkaoo2GaChQmSIu8hxpJxLcCuIi8fiHN4TMwrRIU/Af1cEG7Rcs/6LjTl7YjRSymJfYaFAoFdWF0b20SCzE0OTk5OTk1MDAwEhMKDQoFdWF0b20SBDUwMDAQwJoMGmoKJuta6YchAwswBShaB1wkZBctLIhYqBC3JrAI28XGzxP+rVEticGEEkAc+khTkKL9CDE47aDvjEHvUNt+izJfT4KVF2v2JkC+bmlH9K08q3PqHeMI9Z5up+XMusnTqlP985KF+SI5J3ZOIhhNYWRlIGJ5IENpcmNsZSB3aXRoIGxvdmU=
proof:
required:
- RootHash
- Data
- Proof
properties:
RootHash:
type: string
example: 72FE6BF6D4109105357AECE0A82E99D0F6288854D16D8767C5E72C57F876A14D
Data:
type: string
example: 5wHwYl3uCkaoo2GaChQmSIu8hxpJxLcCuIi8fiHN4TMwrRIU/Af1cEG7Rcs/6LjTl7YjRSymJfYaFAoFdWF0b20SCzE0OTk5OTk1MDAwEhMKDQoFdWF0b20SBDUwMDAQwJoMGmoKJuta6YchAwswBShaB1wkZBctLIhYqBC3JrAI28XGzxP+rVEticGEEkAc+khTkKL9CDE47aDvjEHvUNt+izJfT4KVF2v2JkC+bmlH9K08q3PqHeMI9Z5up+XMusnTqlP985KF+SI5J3ZOIhhNYWRlIGJ5IENpcmNsZSB3aXRoIGxvdmU=
Proof:
required:
- total
- index
- leaf_hash
- aunts
properties:
total:
type: string
example: '2'
index:
type: string
example: '0'
leaf_hash:
type: string
example: eoJxKCzF3m72Xiwb/Q43vJ37/2Sx8sfNS9JKJohlsYI=
aunts:
type: array
items:
type: string
example:
- eWb+HG/eMmukrQj4vNGyFYb3nKQncAWacq4HF5eFzDY=
type: object
type: object
total_count:
type: string
example: '2'
type: object
Channel:
type: object
properties:
ID:
type: integer
example: 48
SendQueueCapacity:
type: string
example: '1'
SendQueueSize:
type: string
example: '0'
Priority:
type: string
example: '5'
RecentlySent:
type: string
example: '0'
CommitResponse:
type: object
required:
- jsonrpc
- id
- result
properties:
jsonrpc:
type: string
example: '2.0'
id:
type: integer
example: 0
result:
required:
- signed_header
- canonical
properties:
signed_header:
required:
- header
- commit
properties:
header:
$ref: '#/components/schemas/BlockHeader'
commit:
required:
- height
- round
- block_id
- signatures
properties:
height:
type: string
example: '1311801'
round:
type: integer
example: 0
block_id:
$ref: '#/components/schemas/BlockID'
signatures:
type: array
items:
type: object
properties:
block_id_flag:
type: integer
example: 2
validator_address:
type: string
example: 000001E443FD237E4B616E2FA69DF4EE3D49A94F
timestamp:
type: string
example: '2019-04-22T17:01:58.376629719Z'
signature:
type: string
example: 14jaTQXYRt8kbLKEhdHq7AXycrFImiLuZx50uOjs2+Zv+2i7RTG/jnObD07Jo2ubZ8xd7bNBJMqkgtkd0oQHAw==
type: object
type: object
canonical:
type: boolean
example: true
type: object
Evidence:
type: object
properties:
type:
type: string
height:
type: integer
time:
type: integer
total_voting_power:
type: integer
validator:
$ref: '#/components/schemas/Validator'
BlockComplete:
type: object
properties:
block_id:
$ref: '#/components/schemas/BlockID'
block:
$ref: '#/components/schemas/Block'
NetInfoResponse:
description: NetInfo Response
allOf:
- $ref: '#/components/schemas/JSONRPC'
- type: object
properties:
result:
$ref: '#/components/schemas/NetInfo'
BlockResultsResponse:
type: object
required:
- jsonrpc
- id
- result
properties:
jsonrpc:
type: string
example: '2.0'
id:
type: integer
example: 0
result:
type: object
required:
- height
properties:
height:
type: string
example: '12'
txs_results:
type: array
nullable: true
items:
type: object
properties:
code:
type: string
example: '0'
data:
type: string
example: ''
log:
type: string
example: not enough gas
info:
type: string
example: ''
gas_wanted:
type: string
example: '100'
gas_used:
type: string
example: '100'
events:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: app
attributes:
type: array
nullable: false
items:
$ref: '#/components/schemas/Event'
codespace:
type: string
example: ibc
begin_block_events:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: app
attributes:
type: array
nullable: false
items:
$ref: '#/components/schemas/Event'
end_block:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: app
attributes:
type: array
nullable: false
items:
$ref: '#/components/schemas/Event'
validator_updates:
type: array
nullable: true
items:
type: object
properties:
pub_key:
type: object
required:
- type
- value
properties:
type:
type: string
example: tendermint/PubKeyEd25519
value:
type: string
example: 9tK9IT+FPdf2qm+5c2qaxi10sWP+3erWTKgftn2PaQM=
power:
type: string
example: '300'
consensus_params_updates:
$ref: '#/components/schemas/ConsensusParams'
BlockMeta:
type: object
properties:
block_id:
$ref: '#/components/schemas/BlockID'
block_size:
type: integer
example: 1000000
header:
$ref: '#/components/schemas/BlockHeader'
num_txs:
type: string
example: '54'
Validator:
type: object
properties:
pub_key:
$ref: '#/components/schemas/PubKey'
voting_power:
type: integer
address:
type: string
ConsensusParamsResponse:
type: object
required:
- jsonrpc
- id
- result
properties:
jsonrpc:
type: string
example: '2.0'
id:
type: integer
example: 0
result:
type: object
required:
- block_height
- consensus_params
properties:
block_height:
type: string
example: '1'
consensus_params:
$ref: '#/components/schemas/ConsensusParams'
Block:
type: object
properties:
header:
$ref: '#/components/
# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tendermint/refs/heads/main/openapi/tendermint-info-api-openapi.yml