# Claiming NFTs through Passes

### Overview

This feature extends the current Hedera capability by adding the concept of relationships between NFTs, a NFT pass can be a parent, while child NFTs can be linked for distribution to any holder. While the ledger automatically keeps state with no off-chain storage.

Or as a user story...

> As a project with an NFT pass, I want to be able to generate future NFTs that my community may be able to claim.

Or for an art project...

> As an artist I want to have an NFT pass to build a community with so I can reward my pass owners with future peridoic drops.

### How it works

There is a fair bit of logic to make this work, we rely on Mirrornodes to read currently minted NFTs and respective holders.

* Check that an account owns an NFT, or many.
* Check that the minted and supply of the child NFT matches the parent NFT pass.
* Check that a child NFT has been fully pre-minted.
* Check that the child NFT serial is held by treasury
* Attempt to send, or receive a generic association failure error.

<mark style="color:green;">`POST`</mark> `https://hedera-serverless-consensus.vercel.app/api/nft/claim`

Enable an account to claim an NFT through a pass they own.

#### Headers

| Name                                        | Type   | Description                                                       |
| ------------------------------------------- | ------ | ----------------------------------------------------------------- |
| x-api-key<mark style="color:red;">\*</mark> | String | The **API\_SECRET\_KEY** from the client's environment variables. |

#### Request Body

| Name                                                   | Type   | Description                       |
| ------------------------------------------------------ | ------ | --------------------------------- |
| token\_id<mark style="color:red;">\*</mark>            | String | Hedera token id to send           |
| receiver\_id<mark style="color:red;">\*</mark>         | String | Hedera account to send the NFT to |
| serial\_number<mark style="color:red;">\*</mark>       | String | Serial number of the NFT to send  |
| nft\_pass\_token\_id<mark style="color:red;">\*</mark> | String | Hedera token id of pass to send   |

{% tabs %}
{% tab title="200: OK NFT sent to account, you may check a mirrornode/explorer after 5- 10 seconds." %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="422: Unprocessable Entity Missing params, NFT or required treasury state for transfer" %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="401: Unauthorized Header Auth Missing/invalid" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}


---

# 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.trust.enterprises/rest-api/nft-ecosystem/claiming-nfts-through-passes.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.
