One endpoint, one round trip. The indexer keeps a denormalised view of objects, owners, listings and activity, rebuilt from the object roots on every block.
| field | arguments | notes |
|---|---|---|
| block(height) | height: Int! | header, txs, object root |
| object(slug, tokenId) | slug: String!, tokenId: Int! | traits, owner, provenance |
| objects(where, first, after) | ObjectFilter | filter by trait, owner, price, burned |
| collection(slug) | slug: String! | stats, traits, holders |
| wallet(address) | address: String! | holdings and activity |
| activity(where, first) | ActivityFilter | mints, sales, transfers, burns |
| subscription objectEvents | slug: String | live stream over websocket |
Depth is capped at 8 and complexity at 2000 points. A holdings query that also pulls full provenance for each object will be rejected, page it instead.
query Whale($addr: String!) {
wallet(address: $addr) {
objectCount
estimatedValue
holdings(first: 5, orderBy: RARITY_RANK) {
key
name
rarityRank
collection { name floor }
}
}
}