This guide will walk you through the process of transferring NFTs from your wallet using the Crossmint transactions API.
Prerequisites
Ensure you have a wallet created. You can follow the Quickstart for server
wallets to prepare one. You will need:
- API Key: Ensure you have an API key with the scope:
wallets:transactions.create
- Wallet Address: The locator of the wallet you want to transfer the NFT from.
- NFT Details: The contract address and token ID of the NFT you want to transfer.
Sending the Transaction
We will use the Create Transaction API.
First, we need to prepare the transaction data that will encode the transferFrom
function call for the NFT contract:
import { encodeFunctionData } from 'viem';
const fromAddress = '0x...';
const toAddress = '0x...';
const tokenId = '1';
const data = encodeFunctionData({
abi: [{
name: 'transferFrom',
type: 'function',
inputs: [
{ name: 'from', type: 'address' },
{ name: 'to', type: 'address' },
{ name: 'tokenId', type: 'uint256' }
],
outputs: [],
stateMutability: 'nonpayable'
}],
args: [fromAddress, toAddress, tokenId]
});
console.log(data);
Now we can create the transaction using the encoded data:
const walletLocator = '0x...';
const apiKey = 'sk_staging...';
const signerAddress = '0x...';
async function sendTransaction() {
const response = await fetch(
`https://api.crossmint.com/2022-06-09/wallets/${walletLocator}/transactions`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': apiKey,
},
body: JSON.stringify({
params: {
calls: [{
to: nftContractAddress,
value: '0',
data: data
}],
chain: 'polygon-amoy',
},
}),
}
);
return await response.json();
}