> For the complete documentation index, see [llms.txt](https://docs.underdogprotocol.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.underdogprotocol.com/resources/projects/non-transferable-projects.md).

# Non-Transferable Projects

{% hint style="warning" %}
For Non-Transferable Projects, the `:transferable` path param is set to `n`
{% endhint %}

This guide will walk through the process of setting up a Non-Transferable Project, minting NFTs that are part of the Project, and claiming the NFT.&#x20;

## Create a Non-Transferable Project

<figure><img src="/files/vJJ010QpEiwcPIDkMbiA" alt=""><figcaption><p>From the V2 dashboard, you'll head to <strong>Create a Project</strong></p></figcaption></figure>

Besides passing in the Project's name and image, you'll need to set the `transferable` to `false` in the request body.&#x20;

{% code title="Example Request Body" %}

```json
{
    "name": "Project #420",
    "image": "https://hatrabbits.com/wp-content/uploads/2017/01/random-word-1.jpg",
    "transferable": false
}
```

{% endcode %}

### API Reference

{% content-ref url="/pages/OIvuYeysFkcYabt0b0QR" %}
[Create a Project](/resources/projects/methods/create-a-project.md)
{% endcontent-ref %}

## Mint a Non-Transferable NFT

<figure><img src="/files/QoqQzmopckocbnlJe00l" alt=""><figcaption><p>You can set custom attributes and specify a claimer for your NFT</p></figcaption></figure>

Non-Transferable NFTs are lazily minted. When you create an NFT through the API or the Underdog dashboard, the metadata is prepared to be minted and then minted on-chain when it is claimed.

{% hint style="info" %}
Non-Transferable NFTs can be updated before they are actually minted through the [update](https://docs.underdogprotocol.com/resources/v2/projects/nfts/update-an-nft#update-an-nft) and [partial update](https://docs.underdogprotocol.com/resources/v2/projects/nfts/update-an-nft#partial-update-an-nft) endpoints.&#x20;
{% endhint %}

The claimer is determined by the optional `claimerAddress` in the request body.&#x20;

### Setting a Claimer

When the `receiverAddress` is set in the request body, only the specified address can mint and claim the NFT.&#x20;

When you know the claimer address ahead of time, this ensures that the Non-Transferable NFT is claimed by the right claimer. Only a wallet with the specified `receiverAddress` can sign the transaction to claim the NFT.&#x20;

### Without a Claimer Address

If you don't know the `receiverAddress` ahead of time, you can exclude it from the request body. This generate a one-time password (OTP) that can be used to claim the NFT.&#x20;

The OTP must be passed in along with the claimer address to generate the claim transaction for the Non-Transferable NFT. This will be covered in more detail in the next section.&#x20;

### API Reference

{% content-ref url="/pages/QLihY5NN86TVp0os2lJU" %}
[Create an NFT](/resources/projects/nfts/create-an-nft.md)
{% endcontent-ref %}

## Claim a Non-Transferable NFT

<figure><img src="/files/bKJvFmrFFvfB8rDXNtWA" alt=""><figcaption><p>The claim page for the Non-Transferable NFT</p></figcaption></figure>

Once you've created your NFT, you can send the claim link to your desired claimer. The claim page sends a POST request to the API that generate a transaction the claimer can sign to mint & claim the NFT.&#x20;

{% hint style="info" %}
Claiming the NFT requires the claimer to sign the transaction. The claimer pays the rent and networks fees to mint the NFT.&#x20;
{% endhint %}

### API Reference

{% content-ref url="/pages/Xxysl85tyZEi8mcweTCs" %}
[Generate Claim Link](/resources/projects/nfts/generate-claim-link.md)
{% endcontent-ref %}

{% content-ref url="/pages/LGaSRCgWfDZCeq52JpOD" %}
[Generate Claim Transaction](/resources/nfts/generate-claim-transaction.md)
{% endcontent-ref %}
