Skip to content
—
QuantascanAlpha
Browse API groups

Transactions & Mempool API

Transaction listings, lookups, whale transfers, revert reasons and the QRL 2.0 pending-transaction pool.
GET/api/v1/{chain}/transactions/QRL 2.0QRL (PoW)

Get Transactions

Cursor-paginated transaction list (live feed — newest first).

Includes QRL coinbase transactions (block rewards) unless a method filter says otherwise (method=sent leaves them out).

Pass cursor from the previous response to get older transactions. No offset/page params — transactions arrive at the head continuously and offset paging would skip or duplicate rows between page-clicks.

Query parameters

  • cursoroptional
    string | null

    Opaque pagination token from a previous response's `next_cursor`. Omit to start at the chain head (newest). Do not decode/construct.

  • limitoptional
    integermin 1 · max 100default 25

    Items per page (1-100).

  • fromoptional
    string | null

    Filter: sender address

  • tooptional
    string | null

    Filter: recipient address

  • tx_typeoptional
    string | null

    Filter: tx_type (transfer/coinbase/slave/...)

  • statusoptional
    integer | null

    Filter: 1=success, 0=reverted

  • min_valueoptional
    string | null

    Filter: value >= (decimal UInt256 string)

  • max_valueoptional
    string | null

    Filter: value <= (decimal UInt256 string)

  • time_fromoptional
    integer | null

    Filter: timestamp >= Unix seconds

  • time_tooptional
    integer | null

    Filter: timestamp < Unix seconds

  • methodoptional
    string | null

    High-level method filter for the chip-bar UI. Valid values: sent | coinbase | transfer | token_transfer | multi_recipient | slave | message | token_creation | other | contract_call | contract_creation | failed. Omit for every transaction, block rewards included. `sent` = everything except the QRL coinbase (block reward); `coinbase` = only block rewards. `sent`, `coinbase`, `multi_recipient`, `slave`, `message`, `token_creation` and `other` (multisig, lattice keys and any other subtype) are qrl-only; `contract_call`, `contract_creation` and `failed` are qrl2-only. `token_transfer` maps to the QRC-20 transfer() call on qrl2 and the transfer_token subtype on qrl. Counts per value: `/transactions/type-counts`.

Response 200 · PaginatedCursor_TransactionDetail_

▸
itemsTransactionDetail[]required
chainstringrequired
networkstringrequired
tx_hashstringrequired
heightinteger | null
timestampstring | null
from_addrstring | null
to_addrstring | null
confirmationsinteger | nullIndexed tip height - block height + 1 (0 = block not yet fully indexed).
finalizedboolean | nullQRL 2.0: block is at/below the Casper-FFG finalized checkpoint. Null on QRL legacy (PoW, no finality) or when unknown.
limitintegerrequiredMaximum number of items in this page
next_cursorstring | nullOpaque pagination token for the next page; null when the current page is the last one. Pass back unchanged in ?cursor=.
has_morebooleanrequiredTrue when at least one more page is available.

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0x7757ba180d74a02a33350b143bca0c8ee5a55c912ce8e359cfc24646baf85e2c",
      "height": 173934,
      "timestamp": "2026-07-30T19:22:36",
      "from_addr": "Qedc109a7e31a982023b91f8e2fb46c34ca524f7d",
      "to_addr": null,
      "block_hash": "0x5d75e7647a07da30953d158c8a36961a61a393f7e58bde4c5b952a365f9c7270",
      "tx_index": 0,
      "recipient_index": 0,
      "value": "0",
      "fee": "442563003097941",
      "nonce": 2,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 600000,
      "gas_used": 442563,
      "gas_price": "1000000007",
      "effective_gas_price": "1000000007",
      "contract_address": "Q8fb8928dd86629fc6ea9ca41975dbb28a511d2d0",
      "status": 1,
      "master_addr": null,
      "input_data": "0x60806040"
    },
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0xe981de6f7f770ac5d5d5b5a076e7994f6690dbd7554fd2308e2790634a05b8f0",
      "height": 171359,
      "timestamp": "2026-07-29T00:27:36",
      "from_addr": "Q6153d37fa4da7193e6219dcbd2bbe62fa12905b1",
      "to_addr": "Qbb2cdffb66221359edf62cb8b0d1c18c3b4ee4fb",
      "block_hash": "0x8e094066bf7635e4d0aac1accf65bf7ff724930ba36e235bc8f9f92141b6c7b1",
      "tx_index": 0,
      "recipient_index": 0,
      "value": "10000000000000000000",
      "fee": "21000000294000",
      "nonce": 83,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 21000,
      "gas_used": 21000,
      "gas_price": "1000000014",
      "effective_gas_price": "1000000014",
      "contract_address": null,
      "status": 1,
      "master_addr": null,
      "input_data": "0x"
    },
    "… (23 more)"
  ],
  "limit": 25,
  "next_cursor": "eyJhZnRlcl9oZWlnaHQiOjE2MTQzOCwiYWZ0ZXJfcmVjaXBpZW50X2luZGV4IjowLCJhZnRlcl90eF9pbmRleCI6MH0",
  "has_more": true
}
GET/api/v1/{chain}/transactions/{tx_hash}QRL 2.0QRL (PoW)

Get Transaction By Hash

One transaction by hash, all recipients flattened into recipients[].

confirmations = indexed tip − block height + 1 (the including block counts as one; 0 while the block is not yet fully indexed). finalized (QRL 2.0 only) is true once the block is at or below the latest Casper-FFG finalized checkpoint — irreversible, not just deep. It is null on QRL legacy (Proof-of-Work has no finality: judge by confirmations) and when finality data is unavailable.

Path parameters

  • tx_hashrequired
    string

Response 200 · TransactionDetailResponse

chainstringrequired
networkstringrequired
tx_hashstringrequired
heightinteger | null
block_hashstring | null
confirmationsinteger | nullIndexed tip height - block height + 1 (the including block counts as 1; 0 = block not yet fully indexed).
finalizedboolean | nullQRL 2.0 only: true once the block is at/below the latest Casper-FFG finalized checkpoint (irreversible). Null on QRL legacy (Proof-of-Work has no finality) or when finality data is unavailable.
indexed_tip_heightinteger | nullIndexed tip height `confirmations` was computed against.
tx_indexinteger | null
recipient_indexinteger | null
from_addrstring | null
to_addrstring | null
valuestring | null
feestring | null
nonceinteger | null
tx_typestring | null
statusinteger | null
timestampstring | null
master_addrstring | null
transaction_typestring | null
public_keystring | null
payload_jsonstring | null
gasinteger | null
gas_usedinteger | null
cumulative_gas_usedinteger | null
gas_pricestring | null
effective_gas_pricestring | null
max_fee_per_gasstring | null
max_priority_fee_per_gasstring | null
tx_type_evminteger | null
access_liststring | null
contract_addressstring | null
input_datastring | null
recipientsobject[] | null
recipient_countinteger | null
logsobject[] | null
internal_transfersobject[] | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/<tx_hash>" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "chain": "qrl2",
  "network": "testnet",
  "tx_hash": "0x7757ba180d74a02a33350b143bca0c8ee5a55c912ce8e359cfc24646baf85e2c",
  "height": 173934,
  "block_hash": "0x5d75e7647a07da30953d158c8a36961a61a393f7e58bde4c5b952a365f9c7270",
  "tx_index": 0,
  "recipient_index": 0,
  "from_addr": "Qedc109a7e31a982023b91f8e2fb46c34ca524f7d",
  "to_addr": null,
  "value": "0",
  "fee": "442563003097941",
  "nonce": 2,
  "tx_type": null,
  "status": 1,
  "timestamp": "2026-07-30T19:22:36",
  "master_addr": null,
  "transaction_type": null,
  "public_key": null,
  "payload_json": null,
  "gas": 600000,
  "gas_used": 442563,
  "cumulative_gas_used": 442563,
  "gas_price": "1000000007",
  "effective_gas_price": "1000000007",
  "max_fee_per_gas": "2000000000",
  "max_priority_fee_per_gas": "1000000000",
  "tx_type_evm": 2,
  "access_list": null,
  "contract_address": "Q8fb8928dd86629fc6ea9ca41975dbb28a511d2d0",
  "input_data": "0x608060405234801561000f575f80fd5b506040516106c93803806106c983398101604081905261002e9161007d565b5f81815533808252600160209081526040808420859055518481529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163…",
  "recipients": [
    {
      "recipient_index": 0,
      "to_addr": null,
      "value": "0"
    }
  ],
  "recipient_count": 1,
  "logs": [
    {
      "log_index": 0,
      "address": "Q8fb8928dd86629fc6ea9ca41975dbb28a511d2d0",
      "topic0": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
      "topic1": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "topic2": "0x000000000000000000000000edc109a7e31a982023b91f8e2fb46c34ca524f7d",
      "topic3": null,
      "data": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000"
    }
  ],
  "internal_transfers": [],
  "qrl_ots_index": null,
  "qrl_sig_size": null,
  "raw_ref_hint": "",
  "ingested_at": "2026-07-30T19:22:48.599000"
}
GET/api/v1/{chain}/transactions/block/{block_height}QRL 2.0QRL (PoW)

Get Transactions By Block

Path parameters

  • block_heightrequired
    integermin 0

Response 200 · BlockTransactionsList

▸
itemsTransactionDetailResponse[]
chainstringrequired
networkstringrequired
tx_hashstringrequired
heightinteger | null
block_hashstring | null
confirmationsinteger | nullIndexed tip height - block height + 1 (the including block counts as 1; 0 = block not yet fully indexed).
finalizedboolean | nullQRL 2.0 only: true once the block is at/below the latest Casper-FFG finalized checkpoint (irreversible). Null on QRL legacy (Proof-of-Work has no finality) or when finality data is unavailable.
indexed_tip_heightinteger | nullIndexed tip height `confirmations` was computed against.
tx_indexinteger | null
recipient_indexinteger | null
from_addrstring | null
to_addrstring | null
valuestring | null
feestring | null
nonceinteger | null
tx_typestring | null
statusinteger | null
timestampstring | null
master_addrstring | null
transaction_typestring | null
public_keystring | null
payload_jsonstring | null
gasinteger | null
gas_usedinteger | null
cumulative_gas_usedinteger | null
gas_pricestring | null
effective_gas_pricestring | null
max_fee_per_gasstring | null
max_priority_fee_per_gasstring | null
tx_type_evminteger | null
access_liststring | null
contract_addressstring | null
input_datastring | null
recipientsobject[] | null
recipient_countinteger | null
logsobject[] | null
internal_transfersobject[] | null
totalinteger | null
block_heightinteger | null
chainstring | null
networkstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/block/100" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [],
  "total": 0,
  "block_height": 174935,
  "chain": "qrl2",
  "network": "testnet"
}
GET/api/v1/{chain}/transactions/failedQRL 2.0QRL (PoW)

Get Failed Transactions

Reverted transactions feed (status=0).

Wrapper over /transactions/?status=0. QRL2-only in practice — QRL PoW txs don't have an EVM revert concept (status hardcoded to "success" in canonical_schema).

Query parameters

  • cursoroptional
    string | null

    Opaque pagination token from a previous response's `next_cursor`.

  • limitoptional
    integermin 1 · max 100default 25

    Items per page (1-100).

Response 200 · PaginatedCursor_TransactionDetail_

▸
itemsTransactionDetail[]required
chainstringrequired
networkstringrequired
tx_hashstringrequired
heightinteger | null
timestampstring | null
from_addrstring | null
to_addrstring | null
confirmationsinteger | nullIndexed tip height - block height + 1 (0 = block not yet fully indexed).
finalizedboolean | nullQRL 2.0: block is at/below the Casper-FFG finalized checkpoint. Null on QRL legacy (PoW, no finality) or when unknown.
limitintegerrequiredMaximum number of items in this page
next_cursorstring | nullOpaque pagination token for the next page; null when the current page is the last one. Pass back unchanged in ?cursor=.
has_morebooleanrequiredTrue when at least one more page is available.

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/failed" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0x9ece5bb8ae83d11a5b744eab76a0d5d4b58bed62ab578aabba3bdc24173719df",
      "height": 156771,
      "timestamp": "2026-07-18T21:19:36",
      "from_addr": "Qc2ad78a527f1038df0e54cece9656bf8160bcb14",
      "to_addr": "Q8c6cac02c31fefb6d34be3d66a444206e000f67f",
      "block_hash": "0xa4d9e477083bb5aa1464ac027dfe2a93681345d513fd7a13b492ffc9c24bc057",
      "tx_index": 1,
      "recipient_index": 0,
      "value": "0",
      "fee": "29823000208761",
      "nonce": 172,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 350000,
      "gas_used": 29823,
      "gas_price": "1000000007",
      "effective_gas_price": "1000000007",
      "contract_address": null,
      "status": 0,
      "master_addr": null,
      "input_data": "0xe769a0b9"
    },
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0x2b7a79306678b9a40a26a1871bfb468ac24977d9fc7d725df389df3397919c20",
      "height": 142189,
      "timestamp": "2026-07-08T18:17:36",
      "from_addr": "Q79b662ce3d663643df4454a8ba3f532c0de6887f",
      "to_addr": "Q94cd8e406d2bb4ea251dce3f0558941f2ac056ee",
      "block_hash": "0xb80200c58aaed2af0caaf62d295919e51237f2c3c1b1c6c21cd45e1bf594d0ad",
      "tx_index": 0,
      "recipient_index": 0,
      "value": "1000000000000000000",
      "fee": "90000000630000",
      "nonce": 56,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 90000,
      "gas_used": 90000,
      "gas_price": "1000000007",
      "effective_gas_price": "1000000007",
      "contract_address": null,
      "status": 0,
      "master_addr": null,
      "input_data": "0xad4c2381"
    },
    "… (12 more)"
  ],
  "limit": 25,
  "next_cursor": null,
  "has_more": false
}
GET/api/v1/{chain}/transactions/type-countsQRL 2.0QRL (PoW)

Get Transaction Type Counts

How many transactions match each method filter of the list endpoint.

all counts every transaction including QRL block rewards (coinbase). On QRL, counts.sent + counts.coinbase == all; the type counts do not add up to all because multi_recipient is a subset of transfer. Exact counts, refreshed every 10 minutes. available is false when a part could not be computed; the missing numbers are then left out.

Response 200 · TransactionTypeCounts

chainstringrequired
networkstringrequired
allinteger | nullEvery transaction, QRL block rewards (coinbase) included.
countsobjectPer `method` value (sent, coinbase, transfer, token_transfer, multi_recipient, slave, message, token_creation, other on QRL; transfer, token_transfer, contract_call, contract_creation, failed on QRL 2.0). multi_recipient is a subset of transfer.
availablebooleanFalse when part of the counts failed.

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/type-counts" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "chain": "qrl",
  "network": "mainnet",
  "all": 6355656,
  "counts": {
    "sent": 1969086,
    "coinbase": 4386570,
    "transfer": 1787220,
    "token_transfer": 383,
    "multi_recipient": 207576,
    "slave": 177177,
    "message": 3572,
    "token_creation": 666,
    "other": 82
  },
  "available": true
}
GET/api/v1/{chain}/transactions/whalesQRL 2.0QRL (PoW)

Get Whale Transactions

Recent transactions above a value threshold ("whale alert" feed).

Thin wrapper over /transactions/ with a sensible per-chain default threshold. Frontend can render a dedicated "Whale moves" widget without hardcoding the threshold itself.

Query parameters

  • cursoroptional
    string | null

    Opaque pagination token from a previous response's `next_cursor`.

  • limitoptional
    integermin 1 · max 100default 25

    Items per page (1-100).

  • min_valueoptional
    string | null

    Threshold (decimal UInt256 string). Default per-chain: 10k QRL for qrl, 1k QRL2 for qrl2.

Response 200 · PaginatedCursor_TransactionDetail_

▸
itemsTransactionDetail[]required
chainstringrequired
networkstringrequired
tx_hashstringrequired
heightinteger | null
timestampstring | null
from_addrstring | null
to_addrstring | null
confirmationsinteger | nullIndexed tip height - block height + 1 (0 = block not yet fully indexed).
finalizedboolean | nullQRL 2.0: block is at/below the Casper-FFG finalized checkpoint. Null on QRL legacy (PoW, no finality) or when unknown.
limitintegerrequiredMaximum number of items in this page
next_cursorstring | nullOpaque pagination token for the next page; null when the current page is the last one. Pass back unchanged in ?cursor=.
has_morebooleanrequiredTrue when at least one more page is available.

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/whales" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0x8b04340287736d21b4b0a4fea7eeeab63ac131aae2fe4da64a48715bfc1240c8",
      "height": 145935,
      "timestamp": "2026-07-11T08:43:36",
      "from_addr": "Q6153d37fa4da7193e6219dcbd2bbe62fa12905b1",
      "to_addr": "Q79b662ce3d663643df4454a8ba3f532c0de6887f",
      "block_hash": "0x78353c808b667fa3839a5ea119e786bc0142f08e8f1032deb56a62b0ee51411f",
      "tx_index": 0,
      "recipient_index": 0,
      "value": "1337000000000000000000",
      "fee": "21000000147000",
      "nonce": 65,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 21000,
      "gas_used": 21000,
      "gas_price": "1000000007",
      "effective_gas_price": "1000000007",
      "contract_address": null,
      "status": 1,
      "master_addr": null,
      "input_data": "0x"
    },
    {
      "chain": "qrl2",
      "network": "testnet",
      "tx_hash": "0x97bce9de8eccb1d600815e739c202fb68d5ca43db52ab8f04851a40426e6f00d",
      "height": 144363,
      "timestamp": "2026-07-10T06:31:36",
      "from_addr": "Q79b662ce3d663643df4454a8ba3f532c0de6887f",
      "to_addr": "Q1eac444b009226fc68586a1ddaf5227b7ff653d4",
      "block_hash": "0xcc66681b12e5fc725c66b733c45fb54fd00cc38bd0695674272c9ff1dfe8793e",
      "tx_index": 0,
      "recipient_index": 0,
      "value": "1500009999999999934464",
      "fee": "21000000147000",
      "nonce": 66,
      "tx_type": null,
      "tx_type_evm": 2,
      "gas": 21000,
      "gas_used": 21000,
      "gas_price": "1000000007",
      "effective_gas_price": "1000000007",
      "contract_address": null,
      "status": 1,
      "master_addr": null,
      "input_data": "0x"
    },
    "… (23 more)"
  ],
  "limit": 25,
  "next_cursor": "eyJhZnRlcl9oZWlnaHQiOjI4OTg0LCJhZnRlcl9yZWNpcGllbnRfaW5kZXgiOjAsImFmdGVyX3R4X2luZGV4IjowfQ",
  "has_more": true
}
GET/api/v1/qrl2/mempoolQRL 2.0

List Pending

Pending qrl2 transactions (mempool view).

Wave 8: cursor-only pagination. The mempool churns constantly (txs enter, get confirmed, get evicted), so offset paging is meaningless. Cursor anchors to the seen_at timestamp of the last row returned.

The view auto-excludes pending txs that have already landed in a block within the last hour, so the result is "actually still pending" rather than "ever-seen". Sort: most-recently-seen first.

Query parameters

  • cursoroptional
    string | null

    Opaque pagination token from a previous response's `next_cursor`. Omit to start at the mempool head (most-recently-seen).

  • limitoptional
    integermin 1 · max 200default 50

    Items per page (1-200).

Response 200 · GenericListResponse

itemsobject[]
totalinteger | null
limitinteger | null
offsetinteger | null
pageinteger | null
has_nextboolean | null
has_prevboolean | null
next_cursorstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/mempool" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [],
  "limit": 50,
  "next_cursor": null,
  "has_more": false,
  "network": "testnet"
}
GET/api/v1/qrl2/transactions/{tx_hash}/revert-reasonQRL 2.0

Decoded EVM revert reason for a reverted QRL2 transaction

Return the decoded revert reason for a failed QRL2 transaction.

Flow:

  1. Verify the tx exists and has status=0 (avoid wasting RPC on success txs).
  2. Hit debug_traceTransaction(callTracer) against the qrl2 node.
  3. Decode the top-level frame's output (Error(string) / Panic(uint256) / custom).
  4. Cache the result for 24h in Redis (or in-memory if Redis is down).

QRL2 (EVM) only — mounted under /api/v1/qrl2/transactions/, no chain selection needed.

Path parameters

  • tx_hashrequired
    string

Response 200 · RevertReasonResponse

tx_hashstringrequired
chainstringrequired
networkstringrequired
kindstringrequired
decodedstringrequired
raw_outputstring
tracer_errorstring
sourcestring

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/transactions/<tx_hash>/revert-reason" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "tx_hash": "0x9ece5bb8ae83d11a5b744eab76a0d5d4b58bed62ab578aabba3bdc24173719df",
  "chain": "qrl2",
  "network": "testnet",
  "kind": "custom_error",
  "decoded": "Custom error (selector 0xb0ec289d)",
  "raw_output": "0xb0ec289d45447675f06f017f6779204e3784c3799ad34a621a3736e790e6161b137d3015",
  "tracer_error": "execution reverted",
  "source": "persisted"
}

All endpoints verified against a live indexer. Need the raw spec? See openapi.json or the API overview.