Skip to main content

Get Wallet NFTs

Retrieve wallet NFT information and calculated multipliers for a specific drop.

Endpoint

GET /api/v2/drop/{id}/walletNFTs

Authentication

This endpoint is public and does not require authentication.

Description

This endpoint retrieves NFT ownership information for a specific wallet address within a drop, including owned NFT counts by rarity, calculated multipliers, and user level. For drops with multiple contracts, a project ID may be required.

Path Parameters

ParameterTypeRequiredDescription
idstringYesUnique drop identifier

Query Parameters

ParameterTypeRequiredDescription
walletAddressstringYesWallet address to query for NFT ownership
projectIdstringNoProject identifier (required for drops with multiple contracts)

Note: The projectId parameter is only required for drops that have hasMultipleContracts: true.

Request Examples

Basic Request

GET /api/v2/drop/drop-123/walletNFTs?walletAddress=0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6

With Project ID (for multi-contract drops)

GET /api/v2/drop/drop-123/walletNFTs?walletAddress=0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6&projectId=project-456

Response

Success Response (200)

{
"drop": {
"id": "drop-123",
"name": "Gaming NFT Collection",
"isActive": true,
"startDate": 1704110400000,
"endDate": 1704715200000,
"contractAddress": "0x1234567890123456789012345678901234567890",
"hasMultipleContracts": false,
"isVIP": false,
"whitelistEnabled": true,
"chain": "ethereum",
"chainId": 1,
"network": "mainnet",
"description": "Exclusive gaming NFT collection",
"moreInfoUrl": "https://example.com/more-info",
"logo": "https://example.com/logo.jpg",
"numberOfRarities": 3,
"hasDailyCheckIn": false,
"magicEdenGoldTokenName": null,
"slug": "gaming-nft-collection",
"cards": [
{
"rarity": 1,
"image": "https://example.com/common.jpg",
"burnThreshold": 100,
"name": "Common Card",
"base": 50,
"stack": 10,
"maximum": 1000
},
{
"rarity": 2,
"image": "https://example.com/rare.jpg",
"burnThreshold": 200,
"name": "Rare Card",
"base": 20,
"stack": 5,
"maximum": 500
}
],
"marketplaces": [
{
"name": "OpenSea",
"url": "https://opensea.io/collection/gaming-nft",
"icon": "https://opensea.io/favicon.ico"
}
],
"phases": [
{
"name": "Public Sale",
"price": 0.1,
"currency": "ETH"
}
]
},
"cards": [
{
"count": 5,
"rarity": 1,
"image": "https://example.com/common.jpg",
"burnThreshold": 100,
"name": "Common Card",
"base": 50,
"stack": 10,
"maximum": 1000
},
{
"count": 2,
"rarity": 2,
"image": "https://example.com/rare.jpg",
"animation": "https://example.com/rare-animation.mp4",
"burnThreshold": 200,
"name": "Rare Card",
"base": 20,
"stack": 5,
"maximum": 500
}
],
"multiplier": 1.5,
"level": 3
}

Error Response (400)

{
"message": "Invalid wallet address",
"status": 400
}

Error Response (404)

{
"message": "Drop not found",
"status": 404
}

Response Fields

Main Response Fields

FieldTypeDescription
dropobjectComplete drop information
cardsarrayArray of owned NFT cards with counts
multipliernumberCalculated multiplier based on NFT ownership
levelnumberUser level based on NFT holdings

Drop Object Fields

FieldTypeDescription
drop.idstringUnique drop identifier
drop.namestringDrop name
drop.isActivebooleanWhether the drop is currently active
drop.startDatenumberDrop start date (Unix timestamp in ms)
drop.endDatenumberDrop end date (Unix timestamp in ms)
drop.contractAddressstringSmart contract address
drop.hasMultipleContractsbooleanWhether the drop has multiple contracts
drop.chainstringBlockchain network name
drop.chainIdnumberBlockchain network ID
drop.descriptionstringDrop description
drop.slugstringURL-friendly identifier

Cards Array Fields

FieldTypeDescription
cards[].countnumberNumber of NFTs owned for this rarity
cards[].raritynumberRarity level
cards[].imagestringCard image URL
cards[].animationstringCard animation URL (optional)
cards[].namestringCard name
cards[].burnThresholdnumberBurn threshold value
cards[].basenumberBase value
cards[].stacknumberStack value
cards[].maximumnumberMaximum value

Usage Example

Basic Usage

const response = await fetch(
"https://api.intraverse.io/api/v2/drop/drop-123/walletNFTs?walletAddress=0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
);

const result = await response.json();

console.log(`Drop: ${result.drop.name}`);
console.log(`Multiplier: ${result.multiplier}`);
console.log(`Level: ${result.level}`);

result.cards.forEach((card) => {
console.log(`${card.name}: ${card.count} owned (Rarity: ${card.rarity})`);
});

With Project ID (for multi-contract drops)

const response = await fetch(
"https://api.intraverse.io/api/v2/drop/drop-123/walletNFTs?walletAddress=0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6&projectId=project-456",
);

const result = await response.json();

console.log(`Project-specific data for ${result.drop.name}`);
console.log(`User multiplier: ${result.multiplier}`);
console.log(`Total card types owned: ${result.cards.length}`);

Multiple Contracts

Some drops have hasMultipleContracts: true, which means they span multiple projects or contracts. For these drops:

  • The projectId query parameter becomes required
  • Different project IDs may return different NFT counts and multipliers
  • Each project within the drop may have different rarity structures

Error Handling

ErrorDescriptionSolution
Invalid wallet addressWallet address format is invalidUse valid blockchain address
Drop not foundDrop ID doesn't existVerify the drop ID
Missing project IDProject ID required but missingAdd projectId for multi-contract drops

Next Steps