NFT model

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