# Set the NFT royalty

Ternoa provides you with many NFT features. Not only creating an NFT can be done in just a few lines of code but we also cover many NFT basic use cases: Ternoa allows you to easily create functions to delegate, transfer, burn an NFT, or even set the NFT royalty without using any smart contracts.

### Prerequisites

Before getting started, make sure you have the following ready:

1. [Create a Ternoa](https://docs.ternoa.network/getting-started/wallets/ternoa-wallet) account with [Alphanet CAPS](https://docs.ternoa.network/build-1/javascript/nft-features-and-pallets/basics-nft-and-collections/nft/broken-reference)
2. Install and set up your editor of choice (we will use Visual Studio Code \[VSC] in this tutorial)
3. Install [NodeJS v.14+](https://nodejs.org/en/download/) & NPM
4. [Install & initialize Ternoa-JS](https://docs.ternoa.network/build-1/javascript/ternoa-js-library-utilities/installation-and-initialization)

### How to set an NFT royalty using Ternoa-JS

This function sets the NFT royalty on the Ternoa chain. It returns an object promise containing the NFTRoyaltySetEvent provided by the Ternoa blockchain. Use your own account by updating the //TernoaTestAccount with your account seed when retrieving the keyring from the example below. **Replace the NFT\_ID, and royalty variables** with the ID you want to set the royalty and the royalty amount.

```typescript
import {
	setRoyalty,
	initializeApi,
	getKeyringFromSeed,
	WaitUntil,
} from "ternoa-js";

const delegateNFT = async () => {
	try {
		await initializeApi();
		const keyring = await getKeyringFromSeed("//TernoaTestAccount");
		const NFT_ID = 1; // the NFT id to update the royalty
		const royalty = 10;
		const nftData = await setRoyalty(
			NFT_ID,
			royalty,
			keyring,
			WaitUntil.BlockInclusion
		);
		console.log(`NFT ${nftData.nftId} undelegated`);
	} catch (e) {
		console.error(e);
	}
};
```

#### The expected params

```markdown
`id`: The ID of the NFT to update the royalty.
`amount`: The new royalty value.
`keyring`: the provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil defines at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.
```

#### Response

The response provided from the blockchain event includes all the information below according to the parameters provided when updating the NFT's royalty.

```markdown
`nftId`: ID of the updated NFT.
`royalty`: The new royalty amount as a number.
```

### Support

If you face any trouble, feel free to reach out to our community engineers in our [Discord](https://discord.gg/fUmBkPpnRu).
