Moralis NFT API
The NFT API from Moralis — 28 operation(s) for nft.
The NFT API from Moralis — 28 operation(s) for nft.
openapi: 3.0.0
info:
title: EVM Balance NFT API
version: '2.2'
servers:
- url: https://deep-index.moralis.io/api/v2.2
security:
- ApiKeyAuth: []
tags:
- name: NFT
paths:
/{address}/nft:
get:
security:
- ApiKeyAuth: []
summary: Get NFTs by wallet address
description: Fetch all NFTs held by a specified wallet address. Use `token_addresses` to filter by one or many specific contract(s). Each NFT returned includes on-chain metadata as well as off-chain metadata, floor prices, rarity and more where available.
tags:
- NFT
x-mcp-prompt: Enter the wallet address to retrieve its NFTs. Optionally, include `token_addresses` query parameter to filter by specific collections. Use this when users ask for a list of NFTs owned by a wallet or want to check NFT holdings for a given wallet address.
x-tag-sdk: nft
operationId: getWalletNFTs
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the wallet
required: true
schema:
type: string
example: '0xcB1C1FdE09f811B294172696404e88E658659905'
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: exclude_spam
description: Should spam NFTs be excluded from the result?
required: false
schema:
type: boolean
default: false
- in: query
name: token_addresses
description: The addresses to get balances for (optional)
required: false
schema:
type: array
maxItems: 10
items:
type: string
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
- in: query
name: normalizeMetadata
description: Should normalized metadata be returned?
required: false
schema:
type: boolean
default: true
- in: query
name: media_items
description: Should preview media data be returned?
required: false
schema:
type: boolean
default: false
- in: query
name: include_prices
description: Should NFT last sale prices be included in the result?
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Returns a collection of NFT owners
content:
application/json:
schema:
$ref: '#/components/schemas/nftOwnerCollection'
/nft/getMultipleNFTs:
post:
security:
- ApiKeyAuth: []
summary: Get Metadata for NFTs
description: Get NFT metadata for one or many NFTs. Accepts an array of up to 25 `tokens`, each requiring `token_address` and `token_id`. Each NFT returned includes on-chain metadata as well as off-chain metadata, floor prices, rarity and more where available.
tags:
- NFT
x-mcp-prompt: Provide up to 25 NFT token IDs and their `token_address` to fetch details. Use this when users request metadata or details for one or many NFTs across one or more collections.
x-tag-sdk: nft
operationId: getMultipleNFTs
requestBody:
description: Body
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetMultipleNftsDto'
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
responses:
'200':
description: Returns a collection of NFT owners
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/nftOwner'
/{address}/nft/transfers:
get:
security:
- ApiKeyAuth: []
summary: Get NFT Transfers by wallet address
description: Get NFT transfers for a wallet, with filters like `contract_addresses` and other parameters. Supports ERC-721, ERC-1155 as well as custom contracts such as CryptoPunks and CryptoKitties.
tags:
- NFT
x-mcp-prompt: Input the wallet address for NFT transfer history. Add filters like `contract_addresses` or date ranges if needed. Use this when users ask about a wallet’s NFT transaction history or want to track NFT movements.
x-tag-sdk: nft
operationId: getWalletNFTTransfers
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The wallet address of the sender or recipient of the transfers
required: true
schema:
type: string
example: '0xcB1C1FdE09f811B294172696404e88E658659905'
- in: query
name: contract_addresses
description: List of contract addresses of transfers
required: false
schema:
type: array
items:
type: string
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: from_block
description: 'The minimum block number from which to get the transfers
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: integer
minimum: 0
- in: query
name: to_block
description: To get the reserves at this block number
required: false
schema:
type: string
- in: query
name: from_date
description: 'The date from where to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: to_date
description: 'Get transfers up until this date (format in seconds or datestring accepted by momentjs)
* Provide the param ''to_block'' or ''to_date''
* If ''to_date'' and ''to_block'' are provided, ''to_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: include_prices
description: Should NFT last sale prices be included in the result?
required: false
schema:
type: boolean
default: false
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: order
description: The order of the result, in ascending (ASC) or descending (DESC)
required: false
schema:
$ref: '#/components/schemas/orderList'
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
responses:
'200':
description: Returns a collection of NFT transfers
content:
application/json:
schema:
$ref: '#/components/schemas/nftTransferCollection'
/{address}/nft/collections:
get:
security:
- ApiKeyAuth: []
summary: Get NFT collections by wallet address
description: Fetch all NFT Collections held by a specified wallet address. Each Collection returned includes on-chain metadata as well as off-chain metadata, floor prices and more where available.
tags:
- NFT
x-mcp-prompt: Submit the wallet address to view its NFT collections. Use this when users want to see all NFT collections a wallet holds or explore a wallet’s NFT portfolio.
x-tag-sdk: nft
operationId: getWalletNFTCollections
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The wallet address of the owner of NFTs in the collections
required: true
schema:
type: string
example: '0xcB1C1FdE09f811B294172696404e88E658659905'
- in: query
name: include_prices
description: Should NFT last sale prices be included in the result?
required: false
schema:
type: boolean
default: false
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: exclude_spam
description: Should spam NFTs be excluded from the result?
required: false
schema:
type: boolean
default: false
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
- in: query
name: token_counts
description: Should token counts per collection be included in the response?
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Returns the NFT collections owned by a wallet
content:
application/json:
schema:
$ref: '#/components/schemas/nftWalletCollections'
/nft/{address}:
get:
security:
- ApiKeyAuth: []
summary: Get NFTs by contract address
description: Fetch all NFTs for a given collection. Each NFT returned includes on-chain metadata as well as off-chain metadata, floor prices, rarity and more where available.
tags:
- NFT
x-mcp-prompt: Provide the contract address to fetch its NFTs. Include pagination settings like `limit` or `cursor` if desired. Use this when users ask for all NFTs in a specific collection or need metadata for a contract’s tokens.
x-tag-sdk: nft
operationId: getContractNFTs
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x306b1ea3ecdf94aB739F1910bbda052Ed4A9f949'
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: totalRanges
description: The number of subranges to split the results into
required: false
schema:
type: integer
minimum: 1
- in: query
name: range
description: The desired subrange to query
required: false
schema:
type: integer
minimum: 1
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
- in: query
name: normalizeMetadata
description: Should normalized metadata be returned?
required: false
schema:
type: boolean
default: true
- in: query
name: media_items
description: Should preview media data be returned?
required: false
schema:
type: boolean
default: false
- in: query
name: include_prices
description: Should NFT last sale prices be included in the result?
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Returns a collection of NFTs
content:
application/json:
schema:
$ref: '#/components/schemas/nftCollection'
/nft/{address}/unique-owners:
get:
security:
- ApiKeyAuth: []
summary: Get unique wallet addresses owning NFTs from a contract.
description: Get unique wallet addresses owning NFTs from a contract.
tags:
- NFT
x-tag-sdk: nft
operationId: getUniqueOwnersByCollection
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949'
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
responses:
'200':
description: Returns a collection of unique NFT owners
content:
application/json:
schema:
$ref: '#/components/schemas/uniqueOwnersByCollection'
x-mcp-prompt: Enter the contract address to list its unique NFT owners. Use this when users want to know how many unique wallets own NFTs.
/nft/{address}/owners:
get:
security:
- ApiKeyAuth: []
summary: Get NFT owners by contract address
description: Identify wallets owning NFTs from a specific contract.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTOwners
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949'
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
- in: query
name: normalizeMetadata
description: Should normalized metadata be returned?
required: false
schema:
type: boolean
default: false
- in: query
name: media_items
description: Should preview media data be returned?
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Returns a collection of NFT owners
content:
application/json:
schema:
$ref: '#/components/schemas/nftOwnerCollection'
x-mcp-prompt: Enter the contract address to list its NFT owners. Use this when users want to know who owns NFTs in a collection or are analyzing ownership distribution.
/nft/{address}/transfers:
get:
security:
- ApiKeyAuth: []
summary: Get NFT transfers by contract address
description: Get NFT transfers for a contract, with options to filter by date, token, or other parameters.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTContractTransfers
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: query
name: from_block
description: 'The minimum block number from where to get the transfers
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: integer
minimum: 0
- in: query
name: to_block
description: 'The maximum block number from where to get the transfers.
* Provide the param ''to_block'' or ''to_date''
* If ''to_date'' and ''to_block'' are provided, ''to_block'' will be used.
'
required: false
schema:
type: integer
minimum: 0
- in: query
name: from_date
description: 'The date from where to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: to_date
description: 'Get transfers up until this date (format in seconds or datestring accepted by momentjs)
* Provide the param ''to_block'' or ''to_date''
* If ''to_date'' and ''to_block'' are provided, ''to_block'' will be used.
'
required: false
schema:
type: string
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949'
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: include_prices
description: Should NFT last sale prices be included in the result?
required: false
schema:
type: boolean
default: false
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: order
description: The order of the result, in ascending (ASC) or descending (DESC)
required: false
schema:
$ref: '#/components/schemas/orderList'
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
responses:
'200':
description: Returns a collection of NFT transfers
content:
application/json:
schema:
$ref: '#/components/schemas/nftTransferCollection'
x-mcp-prompt: Input the contract address for NFT transfer data. Specify filters like date or token ID if needed. Use this when users request transfer history for a specific NFT collection or want to monitor trading activity.
/nft/{address}/nfts-by-traits:
post:
security:
- ApiKeyAuth: []
summary: Get NFTs by traits
description: Find NFTs in a contract matching specific traits, perfect for attribute-based searches.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTByContractTraits
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x524cab2ec69124574082676e6f654a18df49a048'
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 1
default: 100
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
schema:
type: string
- in: query
name: format
description: The format of the token ID
required: false
schema:
type: string
example: decimal
default: decimal
enum:
- decimal
- hex
- in: query
name: normalizeMetadata
description: Should normalized metadata be returned?
required: false
schema:
type: boolean
default: false
- in: query
name: media_items
description: Should preview media data be returned?
required: false
schema:
type: boolean
default: false
requestBody:
description: Body
required: true
content:
application/json:
schema:
type: object
properties:
traits:
type: object
minItems: 1
maxItems: 25
example:
traits:
Legendary: Astronaut
required:
- traits
responses:
'200':
description: Returns a collection of NFTs
content:
application/json:
schema:
$ref: '#/components/schemas/nftCollection'
x-mcp-prompt: Provide the contract address and trait filters to find matching NFTs. Use this when users ask for NFTs with specific attributes (e.g., rare traits) or are searching for unique items in a collection.
/nft/{address}/traits:
get:
security:
- ApiKeyAuth: []
summary: Get NFT traits by collection
description: Explore the distinct traits of NFTs in a contract, showcasing their unique attributes.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTTraitsByCollection
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x524cab2ec69124574082676e6f654a18df49a048'
responses:
'200':
description: Returns the traits
content:
application/json:
schema:
$ref: '#/components/schemas/groupedTraitCollection'
x-mcp-prompt: Enter the contract address to retrieve its NFT traits. Use this when users want to understand the trait distribution of a collection or analyze NFT characteristics.
/nft/{address}/traits/paginate:
get:
security:
- ApiKeyAuth: []
summary: Get NFT traits by collection paginate
description: Fetch NFT traits for a contract with pagination for efficient navigation of large collections.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTTraitsByCollectionPaginate
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x524cab2ec69124574082676e6f654a18df49a048'
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
required: false
schema:
type: string
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: order
description: The order of the result, in ascending (ASC) or descending (DESC)
required: false
schema:
$ref: '#/components/schemas/orderList'
responses:
'200':
description: Returns the traits
content:
application/json:
schema:
$ref: '#/components/schemas/traitCollection'
x-mcp-prompt: Submit the contract address and pagination settings like `limit` or `cursor` for NFT traits. Use this when users need paginated trait data for large NFT collections or are building trait-based analytics.
/nft/{address}/traits/resync:
get:
security:
- ApiKeyAuth: []
summary: Resync NFT Trait
description: Refresh trait and rarity data for NFTs in a contract to ensure accuracy.
tags:
- NFT
x-tag-sdk: nft
operationId: resyncNFTRarity
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x524cab2ec69124574082676e6f654a18df49a048'
responses:
'202':
description: The resync request was received and will be executed.
content:
application/json:
schema:
$ref: '#/components/schemas/metadataResync'
x-mcp-prompt: Provide the contract address to resync its NFT trait data. Use this when users report outdated rarity data or want to ensure the latest trait information for a collection.
/nft/{address}/trades:
get:
security:
- ApiKeyAuth: []
summary: Get NFT trades by collection
description: Get NFT trades for a given contract with the ability to filter by marketplace.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTTrades
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: query
name: from_block
description: 'The minimum block number from which to get the transfers
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: integer
minimum: 0
- in: query
name: to_block
description: The block number to get the trades from
required: false
schema:
type: string
- in: query
name: from_date
description: 'The start date from which to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: to_date
description: 'The end date from which to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''to_block'' or ''to_date''
* If ''to_date'' and ''to_block'' are provided, ''to_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: marketplace
description: Marketplace from which to get the trades. See [supported Marketplaces](https://docs.moralis.io/web3-data-api/evm/nft-marketplaces).
example: opensea
required: false
schema:
type: string
example: opensea
default: opensea
enum:
- opensea
- blur
- looksrare
- x2y2
- 0xprotocol
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
required: false
schema:
type: string
- in: query
name: limit
description: The desired page size of the result.
required: false
schema:
type: integer
minimum: 0
- in: query
name: nft_metadata
description: Include the NFT Metadata of the NFT Token
required: false
schema:
type: boolean
default: true
- in: path
name: address
description: The address of the NFT contract
required: true
schema:
type: string
example: '0x524cab2ec69124574082676e6f654a18df49a048'
responses:
'200':
description: Returns the trades
content:
application/json:
schema:
$ref: '#/components/schemas/tradeCollection'
x-mcp-prompt: Enter the contract address to fetch NFT trade data. Optionally, include a marketplace filter. Use this when users ask for trading history of a collection or want to analyze marketplace activity.
/nft/{address}/{token_id}/trades:
get:
security:
- ApiKeyAuth: []
summary: Get NFT trades by token
description: Get NFT trades for a specific NFT by specifying a contract addres and token ID.
tags:
- NFT
x-tag-sdk: nft
operationId: getNFTTradesByToken
parameters:
- in: query
name: chain
description: The chain to query
required: false
schema:
$ref: '#/components/schemas/chainList'
- in: query
name: from_block
description: 'The minimum block number from which to get the transfers
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: integer
minimum: 0
- in: query
name: to_block
description: The block number to get the trades from
required: false
schema:
type: string
- in: query
name: from_date
description: 'The start date from which to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''from_block'' or ''from_date''
* If ''from_date'' and ''from_block'' are provided, ''from_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: to_date
description: 'The end date from which to get the transfers (format in seconds or datestring accepted by momentjs)
* Provide the param ''to_block'' or ''to_date''
* If ''to_date'' and ''to_block'' are provided, ''to_block'' will be used.
'
required: false
schema:
type: string
- in: query
name: cursor
description: The cursor returned in the previous response (used for getting the next page).
# --- truncated at 32 KB (117 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moralis/refs/heads/main/openapi/moralis-nft-api-openapi.yml