The SimpleHash API returns NFT data in a standard format. The following are the fields included in the response (or as a list of NFT objects).
<th style={{ textAlign: "left" }}>
Description
</th>
<th style={{ textAlign: "left" }}>
Type(s)
</th>
</tr>
<td style={{ textAlign: "left" }}>
Unique identifier for an NFT (chain.contract\_address.token\_id for EVM chains & Flow, chain.mint\_address for Solana, chain.inscription\_id for Bitcoin)
</td>
<td style={{ textAlign: "left" }}>
`string`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
chain
</td>
<td style={{ textAlign: "left" }}>
Name of the blockchain (e.g., `ethereum`)
</td>
<td style={{ textAlign: "left" }}>
`string`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
contract\_address
</td>
<td style={{ textAlign: "left" }}>
Address of the NFT's contract (hex format for EVM compatible chains). For Solana, this is a Base58-encoded string uniquely representing the NFT itself. For Bitcoin, this is the inscription ID.
</td>
<td style={{ textAlign: "left" }}>
`string`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
token\_id
</td>
<td style={{ textAlign: "left" }}>
Token ID (usually numeric) of the NFT on its contract. Will be `null` for Solana and Bitcoin NFTs, which are identified by contract\_address
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
name
</td>
<td style={{ textAlign: "left" }}>
Name of the NFT derived from its metadata
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
description
</td>
<td style={{ textAlign: "left" }}>
Description of the NFT derived from its metadata
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
previews
</td>
<td style={{ textAlign: "left" }}>
Set of URLs to resized preview images of the media, including an [opengraph](https://ogp.me/) image, and [blurhash](https://blurha.sh/), where available. Previews are sized to fit the maximum dimension in pixels as follows: (small: 250px, medium: 512px, large: 1000px).
These may be derived from images, videos, or 3D models.
</td>
<td style={{ textAlign: "left" }}>
\{\
`image_small_url`:`string / null`,\
`image_medium_url`:`string / null`,\
`image_large_url`:`string / null`,\
`image_opengraph_url`:`string / null`,\
`blurhash`: `string / null`,\
`predominant_color`: `string / null`,\
}
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
image\_url
</td>
<td style={{ textAlign: "left" }}>
URL to cached image file on the SimpleHash CDN if available
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
image\_properties
</td>
<td style={{ textAlign: "left" }}>
Image properties if available
</td>
<td style={{ textAlign: "left" }}>
\{\
`width`:`int / null`,\
`height`: `int / null`,\
`size` : `int / null`,\
`mime_type`: `str / null`,\
`exif_orientation`: `int / null`,\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
video\_url
</td>
<td style={{ textAlign: "left" }}>
URL to cached video file on the SimpleHash CDN if available
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
video\_properties
</td>
<td style={{ textAlign: "left" }}>
Video properties if available
</td>
<td style={{ textAlign: "left" }}>
\{\
`width`: `int / null`,\
`height`: `int / null`,\
`duration`: `float / null`,\
`video_coding`: `str / null`,\
`audio_coding`: `str / null`,\
`size`: `int / null`,\
`mime_type`: `str / null`,\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
audio\_url
</td>
<td style={{ textAlign: "left" }}>
URL to cached audio file on the SimpleHash CDN if available
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
audio\_properties
</td>
<td style={{ textAlign: "left" }}>
Audio properties if available
</td>
<td style={{ textAlign: "left" }}>
\{\
`duration`: `float / null`,\
`audio_coding`: `str / null`,\
`size`: `int / null`,\
`mime_type`: `str / null`,\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
model\_url
</td>
<td style={{ textAlign: "left" }}>
URL to cached 3D model file on the SimpleHash CDN if available
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
model\_properties
</td>
<td style={{ textAlign: "left" }}>
Model properties if available
</td>
<td style={{ textAlign: "left" }}>
\{\
`size`: `int / null`,\
`mime_type`: `str / null`,\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
other\_url
</td>
<td style={{ textAlign: "left" }}>
URL to cached file on the SimpleHash CDN if available for other media types such as PDFs
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
other\_properties
</td>
<td style={{ textAlign: "left" }}>
File properties if available
</td>
<td style={{ textAlign: "left" }}>
\{\
`size`: `int / null`,\
`mime_type`: `str / null`,\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
background\_color
</td>
<td style={{ textAlign: "left" }}>
Background color of the NFT derived from its metadata
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
external\_url
</td>
<td style={{ textAlign: "left" }}>
External URL derived from the NFT's metadata, often with more information (such as about the project), where available
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
created\_date
</td>
<td style={{ textAlign: "left" }}>
NFT minting datetime if known in timestamp format (e.g., `2021-07-03T23:45:00`)
</td>
<td style={{ textAlign: "left" }}>
`string / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
status
</td>
<td style={{ textAlign: "left" }}>
NFT status, one of `lazy-minted`, `minted`, or `burned`. Items that are `lazy-minted` will switch to `minted` status upon the first on-chain transfer or sale.
</td>
<td style={{ textAlign: "left" }}>
`string`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
token\_count
</td>
<td style={{ textAlign: "left" }}>
Known quantity of this NFT
</td>
<td style={{ textAlign: "left" }}>
`int / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
owner\_count
</td>
<td style={{ textAlign: "left" }}>
Known number of owners of this NFT
</td>
<td style={{ textAlign: "left" }}>
`int / null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
owners
</td>
<td style={{ textAlign: "left" }}>
Array of 0-50 top owners of this NFT (sorted by quantity desc). Dates are supplied in the `yyyy-MM-dd'T'HH:mm:ss` format
</td>
<td style={{ textAlign: "left" }}>
\[\{\
`owner_address`:`string`,\
`quantity`: `int`,\
`quantity_string`: `string`,\
`first_acquired_date`: `string / null`,\
`last_acquired_date`: `string`\
}]
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
last\_sale
</td>
<td style={{ textAlign: "left" }}>
Detail on the most recent sale involving this NFT
</td>
<td style={{ textAlign: "left" }}>
[last\_sale](https://simplehash.readme.io/reference/sale-model) / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
primary\_sale
</td>
<td style={{ textAlign: "left" }}>
Detail on the original sale (during the mint) for this NFT
</td>
<td style={{ textAlign: "left" }}>
[primary\_sale](https://simplehash.readme.io/reference/sale-model) / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
first\_created
</td>
<td style={{ textAlign: "left" }}>
First creation NFT details
</td>
<td style={{ textAlign: "left" }}>
\{\
`minted_to`: `string / null`,\
`quantity`: `int / null`,\
`quantity_string`: `string / null`,\
`timestamp`: `string / null`,\
`block_number`: `int / null`,\
`transaction`: `string / null`,\
`transaction_initiator`: `string / null`\
} / `null`
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
contract
</td>
<td style={{ textAlign: "left" }}>
Contract type info for this NFT (type is usually the standard for the contract, such as `ERC721`)
</td>
<td style={{ textAlign: "left" }}>
\{\
`type`:`string`,\
`name`:`string / null`,\
`symbol`:`string / null`\
`deployed_by`: `string / null`\
`deployed_via_contract`: `string / null`,\
`owned_by`: `string / null`,\
`has_multiple_collections`: `bool`\
}
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
collection
</td>
<td style={{ textAlign: "left" }}>
The associated collection information for this NFT
</td>
<td style={{ textAlign: "left" }}>
[Collection model](https://simplehash.readme.io/reference/collection-model)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
rarity
</td>
<td style={{ textAlign: "left" }}>
The associated rarity information for this NFT
</td>
<td style={{ textAlign: "left" }}>
[Rarity model](https://docs.simplehash.com/reference/rarity-models)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
royalty
</td>
<td style={{ textAlign: "left" }}>
Array of 0 or more royalty details, by source. Different marketplaces allow for different royalty amounts, so we show a list of the available information. When there are multiple sources, we list them from highest to lowest `total_creator_fee_basis_points`.
Current sources are: `opensea`, `metaplex`, `erc2981`
The list of recipients can have 0 or more wallets, as applicable. Amounts are shown in both `basis_points` (adding up to `total_creator_fee_basis_points`) and `percentage`, which is the share of this wallet's fees compared to other recipients.
Note that for the recipients list, OpenSea natively uses `basis_points` while Metaplex uses `percentage`, so if you need very precise amounts (i.e. no possibility of rounding), use `basis_points` for OpenSea & ERC2981 and `percentage` for Metaplex.
</td>
<td style={{ textAlign: "left" }}>
\[\{\
`source`: `string`,\
`total_creator_fee_basis_points`: `int`,\
`recipients`: [\{\
`address`: `string`,\
`percentage`: `float`,\
`basis_points`: `int`\
}][{
\`address`: `string`,
\`percentage`: `float`,
\`basis_points`: `int`
}]\
}]
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
extra\_metadata
</td>
<td style={{ textAlign: "left" }}>
JSON field containing the additional custom metadata fields for the NFT added by the creator. Includes the `image_original_url` and `animation_original_url` links to the original media source (where available), and passes through other fields not standardized above (such as attributes or traits)
</td>
<td style={{ textAlign: "left" }}>
\{\
`attributes`: [\{\
`trait_type`:`string / null`,\
`value`:`string`,\
`display_type`:`string / null`\
}][{
\`trait_type`:`string / null`,
\`value`:`string`,
\`display_type`:`string / null`
}],\
`...`,\
`image_original_url`:`string / null`,\
`animation_original_url`:`string / null`,\
`metadata_original_url`:`string / null`\
}
</td>
</tr>
Field |
---|
nft\_id |