# Verify User Tokens Ownership

User verification process in brief:

1. **Obtain User's Wallet Address:**
   * The user logs in, and the system retrieves access to the user's cryptocurrency wallet address.
2. **Check Token Ownership:**
   * The system verifies whether the user owns a specific token in their collection.
3. **Use API Endpoint:**
   * Utilizing the relevant API Endpoint, the system sends a query to verify the user's possession of the specified token.
4. **Grant Access:**
   * If the API Endpoint's response confirms token ownership, the system grants the user access to the game, map, or other resources.

In this way, by combining information about the wallet address, checking for the ownership of a particular token in the user's collection, and using the appropriate API Endpoints, the system can effectively verify the user and provide them with access to specific in-game resources.

Before You Begin:

* Prepare the User's Address, Contract Address, and Token ID(s) used in your game.

Below, you will find the endpoint used to retrieve tokens for a specific user. To check whether a user possesses specific tokens, use the '**tokens\[contractAddress]**' parameter in the request object. By utilizing this request, you need to determine which tokens from a particular contract are of interest and then receive information about how many of these tokens the user owns. For example, you can use cURL to obtain information on whether a specific user has, and if so, which tokens they own from the collection of tokens from the Degen Yoku Game.

**NFT Service:** <https://api.metaproprotocol.com/ms/nft/docs/#/>

## Returns all tokens owned by specific User

<mark style="color:blue;">`GET`</mark> `../v1/user/{address}/tokens`

#### Query Parameters

| Name                                      | Type           | Description |
| ----------------------------------------- | -------------- | ----------- |
| skip                                      | number         |             |
| limit                                     | number         |             |
| contractAddress                           | string         |             |
| standard                                  | string         |             |
| protocol                                  | string         |             |
| network                                   | array\[string] |             |
| categoryIds                               | array\[number] |             |
| \_items                                   | boolean        |             |
| networks                                  | array\[string] |             |
| id                                        | number         |             |
| protocols                                 | array\[string] |             |
| sort                                      | object         |             |
| address<mark style="color:red;">\*</mark> | string         |             |
| toknes                                    | object         |             |
| skipTokens                                | String         |             |

{% tabs %}
{% tab title="200: OK " %}

```json
{
    "results": [
        {
            "_id": "63341a5e626025ac7c4511af",
            "address": "0xa293d68684be29540838dc8a0222de0c43c6b5b4",
            "createdBy": "0x62199ec934c1b4ae52dfa8064964f2332acbb0d5",
            "contractAddress": "0xa293d68684be29540838dc8a0222de0c43c6b5b4",
            "standard": "erc1155",
            "protocol": "metaprotocol",
            "network": "bnb-chain",
            "chainId": 56,
            "creationBlock": 21722028,
            "version": 0,
            "isListed": false,
            "isAsset": true,
            "createdAt": "2022-09-28T09:56:46.051Z",
            "__v": 0,
            "token": {
                "_id": "64a887b79832b155f2955b13",
                "_tokenId": 1182,
                "address": "0xa293d68684be29540838dc8a0222de0c43c6b5b4",
                "_quantity": 1977,
                "burn": false,
                "createdAt": "2023-07-07T21:46:31.159Z",
                "createdBy": "0x832735f45299c8b6f7263e758cadba766459cd21",
                "creationBlock": 29765675,
                "description": "Yo, what's crackin'? I'm Degen Youki, the baddest shiny cat with a massive dome in this galactic playground. Now, lemme school you on what sets me apart from the rest.\n\nDon't get it twisted, my name might sound like degenerate, but you've got it all wrong, my friend! Degen stands for decentralized generation. It's all about breaking free from the chains of the old ways and embracing the power of freedom, liberty, and independence. We're rockin' that crypto life, baby!\n\nForget about all that cute and sweet nonsense you see on the socials. The world ain't all milk and sugar, it's a wild and messed up place. That's where I come in, bringin' the raw truth and unfiltered realness.\n\nI'm the epitome of our culture, kickin' it with the big dogs like Frog, Apes, and the legendary Cryptopunks. Yeah, you know 'em well! We're a rowdy crew, carvin' our own path in this digital frontier.\n\nWe're always pushin' the envelope, exploring fresh ways to express ourselves and shatter the limits of this web3 universe we call home.\n\nSo, if you're ready to dive headfirst into this chaotic digital rollercoaster, join me on this wild ride. We're gonna rewrite the rules, smash through the norms, and redefine what it truly means to be a Degen in this vast universe.\n\nStrap yourself in, amigo, 'cause this journey is gonna be one hell of a bumpy, profanity-laden adventure!\n\nStay SAFU, stay Degen!",
                "extraFiles": [
                    "https://prdmetaassetfiles.blob.core.windows.net/02cc7ac4-502a-4ddb-b6e7-dadc9cb6d336/assets/a324344a-ebc5-45c4-bcde-0f9598d90b6f.mp4",
                    "https://prdmetaassetfiles.blob.core.windows.net/02cc7ac4-502a-4ddb-b6e7-dadc9cb6d336/assets/a9209bc6-b4df-4933-8b38-dceb4bb2ac0a.jpg",
                    "https://prdmetaassetfiles.blob.core.windows.net/02cc7ac4-502a-4ddb-b6e7-dadc9cb6d336/assets/ca6ebc36-bbf6-46f4-b3d9-8a27ea514328.jpg"
                ],
                "favorites": 27,
                "image": "https://gateway.metaproprotocol.com/0x049e/preview",
                "initialOwner": "0x832735f45299c8b6f7263e758cadba766459cd21",
                "minifiedImage": "https://gateway.metaproprotocol.com/0x049e/minified-preview",
                "owner": "0x832735f45299c8b6f7263e758cadba766459cd21",
                "properties": {},
                "tokenName": "Degen Youki OG",
                "transactionHash": "0x6be58cdc19cc9c1d5c0f21b4eaeda59a300a46b5ee562870a933407bc455576f",
                "updatedAt": "2023-10-19T16:37:31.934Z",
                "wishes": 6,
                "filesSpec": {
                    "item_experiance": [],
                    "common": {
                        "standard": [
                            {
                                "key": "asset_type",
                                "value": [
                                    "2D meta asset"
                                ],
                                "value_type": "string array"
                            },
                            {
                                "key": "asset_licence",
                                "value": "Royalty Free (RF)",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_restriction",
                                "value": "Public meta asset",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_tags",
                                "value": [
                                    "gaming asset",
                                    "character",
                                    "avatar"
                                ],
                                "value_type": "string array"
                            },
                            {
                                "key": "asset_tag_ids",
                                "value": [
                                    17,
                                    56,
                                    13
                                ],
                                "value_type": "integer array"
                            },
                            {
                                "key": "asset_category",
                                "value": "Avatars",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_subcategories",
                                "value": [
                                    "Body shape"
                                ],
                                "value_type": "string array"
                            },
                            {
                                "key": "asset_category_ids",
                                "value": [
                                    18,
                                    19
                                ],
                                "value_type": "integer array"
                            }
                        ],
                        "2d_spec": [
                            {
                                "key": "asset_height",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_width",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_layers",
                                "value": false,
                                "value_type": "boolean"
                            }
                        ],
                        "3d_spec": [
                            {
                                "key": "asset_geometry",
                                "value": "",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_polygons",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_vertices",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_materials",
                                "value": false,
                                "value_type": "boolean"
                            },
                            {
                                "key": "asset_textures",
                                "value": false,
                                "value_type": "boolean"
                            },
                            {
                                "key": "asset_uv_mapped",
                                "value": false,
                                "value_type": "boolean"
                            },
                            {
                                "key": "asset_animated",
                                "value": false,
                                "value_type": "boolean"
                            }
                        ],
                        "sound_spec": [
                            {
                                "key": "asset_bpm",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_sample_rate",
                                "value": "",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_bit_depth",
                                "value": 0,
                                "value_type": "integer"
                            },
                            {
                                "key": "asset_channels",
                                "value": "",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_duration",
                                "value": "",
                                "value_type": "string"
                            },
                            {
                                "key": "asset_isrc_code",
                                "value": "",
                                "value_type": "string"
                            }
                        ]
                    }
                }
            }
        }
    ],
    "count": 6
}
```

{% endtab %}

{% tab title="400: Bad Request " %}

```json
{
    "statusCode": 400,
    "messages": [
        "Some message"
    ],
    "error": "Bad Request"
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```json
{​
  "statusCode": 404,​
  "messages": [​
    "Not found!"​
  ],​
  "error": "Not Found"​
​}
```

{% endtab %}
{% endtabs %}

<details>

<summary>Example cURL </summary>

{% code overflow="wrap" fullWidth="false" %}

```bash
curl --location --globoff 'https://api.metaproprotocol.com/ms/nft/v1/user/0x832735f45299c8b6f7263e758cadba766459cd21/tokens?tokens%5B0xa293d68684be29540838dc8a0222de0c43c6b5b4%5D=[1182%2C1227%2C1229%2C1230%2C1228%2C1248]' \
--header 'accept: application/json'
```

{% endcode %}

</details>

***

For more information about the Endpoints from the NFT Service, use the documentation below&#x20;

{% content-ref url="/spaces/9QQIPimQeOGE3C1HbWxf/pages/RDBZRYOqAhBowQ7LZv0V" %}
[API](/metapro-protocol/api.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.metaproprotocol.com/developer-documentation/implementing-meta-assets-into-your-game/verify-user-tokens-ownership.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
