# Possession

Possession API is used for querying Token ownership and NFT ownership and ENS ownership, Developers can learn the asset information owned by users through the query address.

## Token

It supports querying how many and which Tokens an address owns, and on the contrary, can also query an Token that has been held by which addresses.&#x20;

* Query the token owned by the address

```graphql
{
  addrs(where:{address:"0xae89ad222e67205e8d947f131fdc9fa139828745"}){
    address
    holdTokens{
      name
      symbol
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

* Which addresses are held by the Token

```graphql
{
  tokens{
    name
    addrsHold{
      address
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

## NFT

It supports querying how many and which NFTs an address owns, and on the contrary, can also query an NFT has been held by which addresses.&#x20;

* Address held by NFT

```graphql
{
  addrs{
    address
    holdNfts{
      name
      symbol
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

* Which addresses are held by NFT

```graphql
{
  nfts{
    name
    symbol
    addrsHold{
      address
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

## ENS

You can query the number and specific information of the ENS owned by an address. On the contrary, you can also query the address where an ENS is held.

* Address owned by ENS

```graphql
{
  addrs{
    address
    ens
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

* Query address according to ENS

```graphql
{
  ens(where:{ens:"shadow88sky.eth"}){
    address
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

## Polygon

Access the information and number of NFT and token held by address

```graphql
{
  addrs(where:{address:"0x88520C10ad3d35aD2D3220CdE446CcB33f09331B"}){
    holdPolygonNfts{
      name
      symbol
      nftCount
      contract
    }
    holdPolygonTokens{
      name
      symbol
      tokenCount
      contract
    }
  }
}
```

[**`Try Yourself`**](https://docs.knn3.xyz/welcome/k.transformer/real-time-data-service/k.graphx-legacy/categories/broken-reference)

Access the holder's address according to NFT

```graphql
{
  polygon_nfts{
    contract
    name
    symbol
    addrsHold{
      address
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)

Access the holder's address according to token

```graphql
{
  polygon_tokens{
    contract
    name
    symbol
    addrsHold{
      address
    }
  }
}
```

[**`Try Yourself`**](https://master.graphql.knn3.xyz/graphql)
