Skip to main content

Chain activity reads

Read queries on POST /info. The endpoint, the request envelope, the number planes and the error shape are on that page and apply to every query here.

Chain activity query types

Recent blocks and recent order-lifecycle events, served by the gateway from the standalone history archive. They are the replacement for the removed explorer_block / explorer_txs WS channels — see Ids and wire shapes for why a validator no longer pushes that firehose.

Both answer in the standard /info envelope, with type inside data. The history-archive lane differs in its rejection shape only. A gateway with no archive configured answers an empty array with a flag, never an error.

Recent committed blocks

Request

{ "type": "recent_blocks", "limit": 100 }
FieldTypeRequiredMeaning
limituint32noCap on rows returned, newest first

Response

{
"data": {
"type": "recent_blocks",
"blocks": [
{ "height": 26616908,
"block_hash": "0x3bbcfeea4bcebded111b4407fe46ea2fbda57457fad926e27de9012eceabd583",
"ts_ms": 1788169351971,
"action_count": 0,
"fill_count": 0 }
]
}
}
FieldTypeMeaning
blocks[*].heightuint64Committed block height. Each committed block advances exactly one consensus round
blocks[*].block_hashhex string | nullBlock hash
blocks[*].ts_msuint64Block timestamp (consensus ms)
blocks[*].action_countuint32Signed actions committed in the block
blocks[*].fill_countuint32Fills settled in the block

There is no proposer. The removed WS header carried the proposing validator index; the archive record does not. Nothing else serves it today.

Size a poll so it cannot gap. The block cadence is about 100 ms, so 100 rows span roughly 10 seconds of chain and a 2-second poll always overlaps. Measure the cadence rather than trusting that figure — it moves between releases.

Recent order-lifecycle events

One row per order TRANSITION, not per order. A single order emits several rows (placed, then filled, then cancelled), so oid repeats and cannot key a list.

Request

{ "type": "recent_transactions", "limit": 100 }
FieldTypeRequiredMeaning
limituint32noCap on rows returned, newest first

Response

{
"data": {
"type": "recent_transactions",
"txns": [
{ "oid": "34143530",
"user": "0x0c4ec1cba7310669b08145f17a29b1048d9196ab",
"coin": "PUMP",
"action": "resting",
"status": 1,
"side": 0,
"time": 1788169342234 }
]
}
}
FieldTypeMeaning
txns[*].oiddecimal-digit stringOrder id. Not unique across rows — one order emits one row per transition
txns[*].userhex addressActing account
txns[*].coinstringMarket symbol or spot pair name
txns[*].actionstringReadable lifecycle label ("resting" / "filled" / "canceled" …). Treat it as an open set
txns[*].statusuint8The raw status code behind action
txns[*].sideuint80 = bid, 1 = ask
txns[*].timeuint64Event timestamp (consensus ms)

There is no hash. The removed WS row carried the originating action hash, and /exchange pointed at it as the hash-keyed way to check a submitted action. Correlate by cloid instead, or read action_outcome.