> For the complete documentation index, see [llms.txt](https://dev.plyr.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.plyr.network/api-reference/assets/nfts-erc-721/check-nft-holding.md).

# Check NFT Holding

{% hint style="info" %}
Checks if a user is holding a specific NFT and returns the count of tokens held.
{% endhint %}

**Endpoint:** `/game/nft/count`\
**Method:** GET

{% tabs %}
{% tab title="Request Parameters" %}

```typescript
{
    plyrId: string;        // The PLYR ID of the user
    nft: string;           // The NFT contract address to check
    chainId?: string;      // Optional chain ID
    gameId?: string;       // Optional game ID
}
```

{% endtab %}

{% tab title="Success Response" %}

```typescript
{
	count: number; // The number of tokens the user holds from this NFT contract
	isHolding: boolean; // Whether the user holds any tokens from this NFT contract
}
```

{% endtab %}

{% tab title="Error Response" %}

```typescript
{
  error: string;
  details?: any;
}
```

{% endtab %}
{% endtabs %}

## Example Usage

```javascript
// Setup request parameters
const timestamp = Date.now().toString();
const plyrId = 'player123';
const nftAddress = '0x1234567890123456789012345678901234567890';
const chainId = '43114'; // Avalanche C-Chain
const gameId = 'game456'; // Optional

// For GET requests with no body, pass null as the body for HMAC
const hmac = generateHmacSignature(timestamp, null, secretKey);

// Make the API request
let url = apiEndpoint + `/game/nft/count?plyrId=${plyrId}&nft=${nftAddress}&chainId=${chainId}&gameId=${gameId}`;

const response = await axios.get(url, {
	headers: {
		apikey: apiKey,
		signature: hmac,
		timestamp: timestamp
	}
});

// Process the response
if (response.data.isHolding) {
	console.log(`User is holding ${response.data.count} tokens from this NFT contract`);
} else {
	console.log('User is not holding any tokens from this NFT contract');
}
```
