Display Items Reference
Display items are structured data objects that represent different types of entities in a consistent, type-safe way. They are used throughout the API to represent everything from tokens and NFTs to network information and numeric values.
To learn more about how this can be used within an application, read the documentation on the transactionHistory
endpoint.
Overview
All display items share a common type
field that identifies their specific type. The API uses a union type ActivityFeedDisplayItem
that encompasses all possible display item types:
union ActivityFeedDisplayItem =
| ActorDisplayItem
| AppDisplayItem
| AppContractNetworkDisplayItem
| ChatChannelDisplayItem
| CompositeDisplayItem
| ImageDisplayItem
| NetworkDisplayItem
| NFTCollectionDisplayItem
| NFTDisplayItem
| NumberDisplayItem
| ProposalDisplayItemObject
| StringDisplayItem
| TokenContractDisplayItem
| TokenDisplayItem
| TransactionDisplayItem
Display Item Types
ActorDisplayItem
Represents a blockchain actor such as a user, wallet, or smart contract. Useful for displaying information about addresses involved in transactions.
type ActorDisplayItem {
type: String! # Always "actor"
address: Address! # The blockchain address
account: Account! { # Detailed account information
address
displayName {
value # ENS name or formatted address
source # Source of the display name (ENS, LENS, etc.)
}
avatar {
value {
url # Avatar image URL
}
}
farcasterProfile {
username
fid # Farcaster ID
}
description {
value # Account description if available
}
socialLinks { # Associated social media links
name # e.g. TWITTER, GITHUB
url
}
}
}
Example usage:
query {
descriptionDisplayItems {
... on ActorDisplayItem {
type
address
account {
displayName {
value
}
avatar {
value {
url
}
}
}
}
}
}
TokenDisplayItem
Represents a specific amount of a token. Essential for displaying token transfers and balances.
type TokenDisplayItem {
type: String! # Always "token"
network: Network! # The blockchain network
tokenAddress: Address! # Token contract address
amountRaw: String! # Raw token amount (needs decimal adjustment)
tokenV2: FungibleToken {
address
symbol # Token symbol (e.g., "ETH")
decimals # Number of decimals for the token
name # Full token name
imageUrl # Token icon URL
onchainMarketData {
price(currency: USD)
priceChange24h
marketCap
}
}
}
To convert amountRaw
to a human-readable amount:
const amount = BigNumber(amountRaw).div(10 ** decimals).toString()
For example, if amountRaw
is "1000000000000000000" and decimals
is 18, the actual amount is 1.0.
NFTDisplayItem
Represents a specific NFT token. Used for displaying NFT transfers and holdings.
type NFTDisplayItem {
type: String! # Always "nft"
network: Network! # The blockchain network
collectionAddress: Address! # Collection contract address
tokenId: String! # Token identifier
quantity: Float # Optional quantity for ERC1155 tokens
nftToken: NftToken { # Detailed token information
name
description
collection {
name
address
}
mediasV3 { # NFT media assets
images {
edges {
node {
url
mimeType
width
height
}
}
}
}
}
isMint: Boolean # Whether this is a mint transaction
isBurn: Boolean # Whether this is a burn transaction
}
NFTCollectionDisplayItem
Represents an entire NFT collection. Useful for collection-wide operations and displays.
type NFTCollectionDisplayItem {
type: String! # Always "nftCollection"
network: Network! # The blockchain network
collectionAddress: Address! # Collection contract address
quantity: Float # Optional quantity of NFTs
nftCollection: NftCollection {
displayName
description
floorPrice { # Current floor price
valueUsd
valueWithDenomination
}
medias {
logo {
thumbnail # Collection logo URL
}
}
supply # Total supply of the collection
holdersCount # Number of unique holders
}
}
AppDisplayItem
Represents a decentralized application (dApp).
type AppDisplayItem {
type: String! # Always "app"
id: ID! # Unique identifier
network: Network! # The blockchain network
app: ActivityFeedApp {
slug # Unique app identifier
name # Display name
imgUrl # App logo URL
description # App description
url # App website
tags # Categories/tags for the app
}
}
NetworkDisplayItem
Represents a blockchain network.
type NetworkDisplayItem {
type: String! # Always "network"
chainId: Float! # Network chain ID
networkType: NetworkIndexerType! # Type of network indexer
networkMetadata: NetworkMetadata {
name # Network name
url # Network URL
chainId # Chain ID
}
}
StringDisplayItem
Represents a simple text string.
type StringDisplayItem {
type: String! # Always "string"
stringValue: String! # The text value
}
NumberDisplayItem
Represents a numeric value.
type NumberDisplayItem {
type: String! # Always "number"
numberValue: Float! # The numeric value
}
TokenContractDisplayItem
Represents a token contract without a specific amount.
type TokenContractDisplayItem {
type: String! # Always "tokenContract"
network: Network! # The blockchain network
address: Address! # Token contract address
token: FungibleToken {
symbol
decimals
name
imageUrl
}
}
AppContractNetworkDisplayItem
Represents a specific contract deployment of an app on a network.
type AppContractNetworkDisplayItem {
type: String! # Always "appContractNetwork"
address: String! # Contract address
network: Network! # The blockchain network
app: ActivityFeedApp # Associated application details
}
ChatChannelDisplayItem
Represents a chat channel.
type ChatChannelDisplayItem {
type: String! # Always "chatChannel"
channelId: String! # Unique channel identifier
}
ProposalDisplayItemObject
Represents a governance proposal.
type ProposalDisplayItemObject {
type: String! # Always "proposal"
id: ID! # Unique identifier
network: Network! # The blockchain network
platform: String! # Governance platform name
}
TransactionDisplayItem
Represents a blockchain transaction with its full event data.
type TransactionDisplayItem {
type: String! # Always "transaction"
event: ActivityEvent! {
key # Unique transaction identifier
network # Network where transaction occurred
timestamp # Transaction timestamp
transaction { # Detailed transaction information
hash
from
to
value
}
}
}
Best Practices
-
Fragments: Use GraphQL fragments to request specific fields for each display item type:
-
Handling Missing Data: Some fields might be null, especially for pending or failed transactions. Always implement proper null checks:
-
Amount Formatting: For TokenDisplayItem, always format amounts using the token's decimals.