# Withdraw a NFT from Sale

The following sample will show you how to withdraw a NFT for sale and transfer back the NFT to the seller account.

## Prerequisites: <a href="#pre-requisites" id="pre-requisites"></a>

{% content-ref url="/pages/-Mi0oowEwFgVkngBRMJ8" %}
[Sell a NFT](/xact/sdk/javascript/sell-a-nft.md)
{% endcontent-ref %}

## Step 1: Import the following modules <a href="#step-1-import-de-following-modules" id="step-1-import-de-following-modules"></a>

Let's continue building on the *index.js* from the previous example ([Environment Set-up](/xact/sdk/javascript/getting-started.md#step-1-set-up-your-node-js-environment)) and add the following modules:

```javascript
const { Client, CategoryNFT } = require("@xact-wallet-sdk/client");
require("dotenv").config();
```

## Step 2: Initializing withdraw NFT from sale

When withdrawing a NFT from sale, a request will be sent to the end user

```typescript
/* Update the fields with your informations */
const tokenId = '0.0.123456'; /* token Id of the NFT */
const nftIds = ['1@0.0.123456']; /* array of the nftIds to withdraw */

await client.deleteNFTFromSale({tokenId, nftIds});
```

## Step 3: Listen for the NFT's removal <a href="#step-3-listen-for-the-token-transfer" id="step-3-listen-for-the-token-transfer"></a>

Finally get notified when your NFT has been successfully withdrawn from sale!

```javascript
/* Subscribe to new sale NFT Validation */
client.deleteSellNFTValidation().subscribe(nft => {
    console.log('NFT successfully removed from sale', nft);
});
```

## Code Check ✅ <a href="#code-check" id="code-check"></a>

Your *index.js* file should look like this:

```javascript
const { Client, CategoryNFT } = require("@xact-wallet-sdk/client");
require("dotenv").config();

async function removeNFTFromSale() {

    //Grab your api key from your .env file
    const apiKey = process.env.API_KEY;


    // If we weren't able to grab it, we should throw a new error
    if (apiKey == null) {
        throw new Error("Environment variables API_KEY must be present");
    }
    /* Create a new instance of Client */
    const client = new Client({apiKey});
    
    /* Init the connexion */
    await client.initConnexion();
    
    /* Update the fields with your informations */
    const tokenId = '0.0.123456'; /* token Id of the NFT */
    const nftIds = ['1@0.0.123456']; /* array of the nftIds to withdraw */
    
    await client.deleteNFTFromSale({tokenId, nftIds});
    
    /* Subscribe to new sale NFT Validation */
    client.deleteSellNFTValidation().subscribe(nft => {
        console.log('NFT successfully removed from sale', nft);
    });
}

removeNFTFromSale();
```


---

# 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://xact.gitbook.io/xact/sdk/javascript/remove-nft-from-sale.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.
