Browse API groups
NFTs API
/api/v1/qrl2/addresses/{address}/nftsQRL 2.0QRC-721 / QRC-1155 tokens held by an address
Every NFT the address holds right now, one row per (collection,
token id): balance is 1 for QRC-721 and the unit count for QRC-1155.
Derived from the raw Transfer / TransferSingle / TransferBatch
events (batch transfers included), so it works for any standards-
compliant contract whether or not its metadata is indexed. Sorted by
collection, then token id.
Path parameters
addressrequiredstringQRL 2.0 address (Q + 40 or 128 hex).
Query parameters
standardoptionalstring | nullOnly QRC-721 or only QRC-1155 positions.
contractoptionalstring | nullOnly positions in this collection.
pageoptionalintegermin 1default 1page_sizeoptionalintegermin 1 · max 200default 50
Response 200 · NftHoldingsResponse
chainstringrequirednetworkstringrequiredaddressstringrequiredstandardstring | null▸itemsNftHoldingItem[]required
itemsNftHoldingItem[]requiredcontractstringrequiredCollection (token contract) address.standardstringrequiredQRC-721 or QRC-1155.token_idstringrequiredToken id as a decimal string (uint256).balancestringrequiredUnits held: always '1' for QRC-721, the amount for QRC-1155.namestring | nullCollection name from token metadata, if indexed.symbolstring | nullCollection symbol from token metadata, if indexed.last_transfer_blockinteger | nullBlock of the latest transfer of this token involving the address.item_namestring | nullItem name from the token's metadata JSON (tokenURI / uri), if indexed.imagestring | nullImage URL from the metadata JSON, as text. Quantascan does not fetch or host it.pageintegerrequiredpage_sizeintegerrequiredtotalintegerrequiredDistinct (contract, token_id) positions held.total_pagesintegerrequiredindexed_tip_heightinteger | nullRequest examples
curl -s "https://quantascan.io/api/v1/qrl2/addresses/<address>/nfts" \
-H "Authorization: Bearer qs_YOUR_API_KEY"/api/v1/qrl2/nft/{contract}/{token_id}/historyQRL 2.0Get Nft History
Provenance of one NFT: every transfer oldest-first (mint first),
owners (QRC-721: the owner; QRC-1155: every holder with quantity),
current_owner + is_burned for QRC-721, and metadata (tokenURI JSON:
name, description, image URL, attributes — or its fetch status).
404 when the id never moved.
Path parameters
contractrequiredstringtoken_idrequiredstringToken id (decimal uint256).
Response 200 · GenericObject
Variable shape. See the example response below.
Request examples
curl -s "https://quantascan.io/api/v1/qrl2/nft/<contract>/<token_id>/history" \
-H "Authorization: Bearer qs_YOUR_API_KEY"/api/v1/qrl2/nft/{contract}/ownersQRL 2.0List Nft Owners
Current holders of a collection, one row per (token id, holder):
QRC-721 = the owner of each id, QRC-1155 = every holder of an id with its
quantity (balance). Newest acquisition first; burned items excluded.
Each row: token_id, owner, balance, acquired_tx, acquired_block,
acquired_at, transfer_count (of that id), item_name, image (URL text).
Path parameters
contractrequiredstring
Query parameters
pageoptionalintegermin 1default 1page_sizeoptionalintegermin 1 · max 200default 50
Response 200 · GenericListResponse
itemsobject[]totalinteger | nulllimitinteger | nulloffsetinteger | nullpageinteger | nullhas_nextboolean | nullhas_prevboolean | nullnext_cursorstring | nullRequest examples
curl -s "https://quantascan.io/api/v1/qrl2/nft/<contract>/owners" \
-H "Authorization: Bearer qs_YOUR_API_KEY"/api/v1/qrl2/nft/mints/summaryQRL 2.0Nft Mints Summary
Hero metrics for the /nft-mints page: all-time mints + 7d/30d pulse,
minting collections, unique minters, the QRC-721 vs QRC-1155 split, the
most-minted collection and the latest mint. mints_24h is returned for
completeness (the UI omits it on the sparse testnet).
Declared BEFORE /{contract}/owners so the literal mints segment is
not captured as a {contract} path param. Zero-filled on a missing view.
Response 200 · NftMintsSummary
networkstringrequiredtotal_mintsintegermints_24hintegermints_7dintegermints_30dintegercollections_mintingintegerunique_mintersintegerqrc721_countintegerqrc1155_countinteger▸top_collectionNftTopCollection | null
top_collectionNftTopCollection | nulltoken_contractstringrequiredmintsintegerrequiredtoken_symbolstring | nulltoken_namestring | nulllatest_mintstring | nullRequest examples
curl -s "https://quantascan.io/api/v1/qrl2/nft/mints/summary" \
-H "Authorization: Bearer qs_YOUR_API_KEY"Example response
{
"network": "testnet",
"total_mints": 696,
"mints_24h": 0,
"mints_7d": 0,
"mints_30d": 0,
"collections_minting": 38,
"unique_minters": 16,
"qrc721_count": 637,
"qrc1155_count": 59,
"top_collection": {
"token_contract": "Q11c1f68c269103cfebc13a9a4af62fc5651a9eff",
"mints": 99,
"token_symbol": "M2",
"token_name": "Matka2"
},
"latest_mint": "2026-06-12T15:36:36"
}/api/v1/qrl2/nft/top-mintsQRL 2.0List Top Mints
Top NFT collections by mint count in the look-back window.
A mint is a QRC-721 / QRC-1155 (single or batch) transfer from the zero address. Symbol/name come from the contract metadata (null when its fetch failed — the frontend falls back to a short address).
Query parameters
limitoptionalintegermin 1 · max 50default 10Top-N collections to return
windowoptionalstringdefault 24hSliding window for the top-mints leaderboard (D4 duration). Default 24h. Examples: 1h, 24h, 7d, 30d.
Response 200 · GenericListResponse
itemsobject[]totalinteger | nulllimitinteger | nulloffsetinteger | nullpageinteger | nullhas_nextboolean | nullhas_prevboolean | nullnext_cursorstring | nullRequest examples
curl -s "https://quantascan.io/api/v1/qrl2/nft/top-mints" \
-H "Authorization: Bearer qs_YOUR_API_KEY"Example response
{
"items": [],
"count": 0,
"network": "testnet",
"window_hours": 24,
"limit": 10
}All endpoints verified against a live indexer. Need the raw spec? See openapi.json or the API overview.