@tatumio/nft-connector
Version:
NFT Connector for Tatum API
1,211 lines (1,197 loc) • 171 kB
YAML
openapi: 3.0.0
servers:
- url: 'https://api-eu1.tatum.io'
info:
version: 1.0.1
title: Tatum NFT Abstraction API
tags:
- description: |
<p>NFT stands for "non-fungible token." Non-fungible means that each token is unique and irreplaceable. This principle gives NFTs their value and gives rise to a wide range of interesting potential use cases.<br/>
NFTs can be used for nearly any digital asset or good to ensure authenticity and scarcity. The possibilities are endless, but here are a few example use cases:
<ul>
<li><b>In-game assets</b> - NFTs can be used to create unique collectibles in the form of characters, weapons, skins, or other equipment. Players can resell or trade assets directly as they choose, and their authenticity is easily verifiable. No more eBay, no more scammers.</li>
<li><b>Music and other digital media</b> - NFTs can be used to create rare and unique collectible digital releases. Similarly, NFTs can be used to sell videos, art, or any other type of digital media. Collectors can own digital originals of their favorite songs, movies, or virtually anything else you can imagine.</li>
<li><b>Digital sports merch</b> - Trading cards, memorabilia, classic moments in sports history, and one-of-a-kind experiences can also be sold as NFTs, opening up a world of possibilities for sports leagues and teams worldwide. The NBA Top Shot website sells collectible “moments” from the league’s history, and at the time of writing, the website is completely sold out and closed for new sign-ups.</li>
<br/>
These endpoints wraps up standard NFT implementation and operations, which can be done with them. Endpoints are blockchain agnostic, the only differentatior is the <b>chain</b> parameter in the URL path.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Flow</b></li>
<li><b>Binance Smart Chain</b></li>
<li><b>Algorand</b></li>
</ul>
</p>
name: Blockchain / NFT
paths:
/v3/nft/deploy:
post:
description: |
<h4>100 credits per API call on FLOW, 2 credits on another chains. Tatum covers the fee connected to the transaction costs in subscription credits for FLOW. This operation can be done on mainnet only for paid plans.</h4><br/>
<p>Deploy NFT Smart Contract. This method creates new ERC721 Smart Contract (Non-Fungible Tokens) on the blockchain. Smart contract is standardized and audited.
It is possible to mint, burn and transfer tokens. It is also possible to mint multiple tokens at once.<br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Flow</b></li>
<li><b>Tron</b></li>
<li><b>Binance Smart Chain</b></li>
</ul>
It is possible to see the code of the deployed contract <a href="https://github.com/tatumio/smart-contracts/tree/master/contracts/tatum" target="_blank">for EVM chains here</a>
or here <a href="https://github.com/tatumio/flow-contracts" target="_blank">for Flow</a>.<br/><br/>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
</p>
operationId: NftDeployErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/DeployNftCelo"
- $ref: "#/components/schemas/DeployNftCeloKMS"
- $ref: "#/components/schemas/DeployNftTron"
- $ref: "#/components/schemas/DeployNftTronKMS"
- $ref: "#/components/schemas/DeployNft"
- $ref: "#/components/schemas/DeployNftKMS"
- $ref: "#/components/schemas/DeployNftFlowPK"
- $ref: "#/components/schemas/DeployNftFlowMnemonic"
- $ref: "#/components/schemas/DeployNftFlowKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/SignatureId"
description: OK
400: &API400
content:
application/json:
schema:
$ref: "#/components/schemas/Error400"
description: Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.
401: &API401
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error401NotActive"
- $ref: "#/components/schemas/Error401Invalid"
description: Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
403: &API403
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403"
500: &API500
content:
application/json:
schema:
$ref: "#/components/schemas/Error500"
description: Internal server error. There was an error on the server during the processing of the request.
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Deploy NFT Smart Contract.
tags:
- Blockchain / NFT
/v3/nft/mint:
post:
description: |
<h4>100 credits per API call on FLOW, 2 credits on another chains. Tatum covers the fee connected to the transaction costs in subscription credits for FLOW. This operation can be done on mainnet only for paid plans.</h4><br/>
<p>Create one NFT Token and transfer it to destination account. Create and transfer any NFT token from smart contract defined in contractAddress.
It is possible to add URL to the created token with a more detailed information about it.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Solana</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Flow</b></li>
<li><b>Binance Smart Chain</b></li>
</ul>
<br/>
For Solana, NFTs are not deployed, only minted right away. Newly created NFT creates new address on the blockchain and owner of the NFT owns with it's private key the account of the NFT.
<br/>
This operation works in two modes.
First mode works just like other NFT endpoints. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
Second mode works without private key or signature id.
Mint NFT requests use built-in smart contract, private key and token id which are provided by Tatum.
You dont need to provide fromPrivateKey (or signatureId), contractAddress and tokenId fields to perform the mint NFT request.
Performed request without fromPrivateKey or signatureId fields will be populated with following attributes:
<ul>
<li><b>fromPrivateKey</b> - a built-in private key connected to the address from which will be NFT transaction fees paid.</li>
<li><b>tokenId</b> - a counter which starts from 0 and is increased for each NFT mint request by 1. The tokenId is provided per each chain and mainnet/testnet version of network.</li>
<li><b>contractAddress</b> - represents Tatum built in smart contract address of the minted NFT.</li>
</ul>
The blockchain fee of the performed transaction is paid from the address connected with built-in private key and is debitted in form of credits. The credits are debitted only if NFT mint requests are performed with paid API key plan.
We transform fee to the credits in accordance to the rates provided by the Tatum.
It means if you perform mint NFT request with following body:
<pre>{
"chain": "CELO",
"to": "0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F",
"url": "ipfs://QmXJJ6UF5WkF4WTJvsdhiA1etGwBLfpva7Vr9AudGMe3pj"
}</pre>
The fields contractAddress, fromPrivateKey and tokenId will be internally filled in following way:
<pre>{
"chain": "CELO",
"to": "0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F",
"url": "ipfs://QmXJJ6UF5WkF4WTJvsdhiA1etGwBLfpva7Vr9AudGMe3pj",
"fromPrivateKey": "{tatumBuiltInPrivateKey}",
"tokenId": "{tatumBuiltInTokenId + 1}",
"contractAddress": "0x45871ED5F15203C0ce791eFE5f4B5044833aE10e"
}</pre>
Keep in mind that your credit amount will be debitted accordingly to the rate of the selected blockchain and cost of transaction fees.
We have prepared following smart contracts for minting without private key:
<table>
<tr>
<th>Chain</th>
<th>Testnet/Mainnet</th>
<th>Address</th>
<th>Smart contract address</th>
</tr>
<tr>
<td>MATIC</td>
<td>Testnet</td>
<td>0x542b9ac4945a3836fd12ad98acbc76a0c8b743f5</td>
<td>0xCd2AdA00c48A27FAa5Cc67F9A1ed55B89dDf7F77</td>
</tr>
<tr>
<td>BSC</td>
<td>Testnet</td>
<td>0xc16ae5e8c985b906935a0cadf4e24f0400531883</td>
<td>0xF73075aa67561791352fbEe8278115487Fd90ab6</td>
</tr>
<tr>
<td>ONE</td>
<td>Testnet</td>
<td>0x8906f62d40293ddca77fdf6714c3f63265deddf0</td>
<td>0x427ddbe3ad5e1e77e010c02e61e9bdef82dcaeea</td>
</tr>
<tr>
<td>ETH</td>
<td>Testnet</td>
<td>0x51abC4c9e7BFfaA99bBE4dDC33d75067EBD0384F</td>
<td>0xAe7D8842D0295B1f24a8842cBd5eB83Ae2fd0946</td>
</tr>
<tr>
<td>CELO</td>
<td>Testnet</td>
<td>0xBC2eBA680EE50d685cc4Fe65f102AA70AfB27D3F</td>
<td>0x45871ED5F15203C0ce791eFE5f4B5044833aE10e</td>
</tr>
<tr>
<td>MATIC</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x6709bdda623af7eb152cb2fe2562ab7e031e564f</td>
</tr>
<tr>
<td>KCS</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x6709bdda623af7eb152cb2fe2562ab7e031e564f</td>
</tr>
<tr>
<td>BSC</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x6709bdda623af7eb152cb2fe2562ab7e031e564f</td>
</tr>
<tr>
<td>ETH</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x789c00ed7ddd72a806dbac40df926df32fde3c2f</td>
</tr>
<tr>
<td>ONE</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x6709bdda623af7eb152cb2fe2562ab7e031e564f</td>
</tr>
<tr>
<td>CELO</td>
<td>Mainnet</td>
<td>0xcf9e127455d28e7362380aec1b92ddee8200b295</td>
<td>0x6709bdda623af7eb152cb2fe2562ab7e031e564f</td>
</tr>
</table>
To add ETH mainnet smart contract contact sales@tatum.io.
If there will be a low amount of coins on any testnet address you are free to send coins to the address. In future we will provide also addresses and smart contracts for the mainnet version. </p>
operationId: NftMintErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/MintNftCelo"
- $ref: "#/components/schemas/MintNftKMSCelo"
- $ref: "#/components/schemas/MintNftTron"
- $ref: "#/components/schemas/MintNftKMSTron"
- $ref: "#/components/schemas/MintNft"
- $ref: "#/components/schemas/MintNftKMS"
- $ref: "#/components/schemas/MintNftSolana"
- $ref: "#/components/schemas/MintNftSolanaKMS"
- $ref: "#/components/schemas/MintNftFlowPK"
- $ref: "#/components/schemas/MintNftFlowMnemonic"
- $ref: "#/components/schemas/MintNftFlowKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/FlowMintedResult"
- $ref: "#/components/schemas/SolanaMintedResult"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Mint NFT
tags:
- Blockchain / NFT
/v3/nft/transaction:
post:
description: |
<h4>100 credits per API call on FLOW, 2 credits on another chains. Tatum covers the fee connected to the transaction costs in subscription credits for FLOW. This operation can be done on mainnet only for paid plans.</h4><br/>
<p>Transfer NFT Tokens from account to account. Transfer any NFT token from smart contract defined in contractAddress.
Only 1 specific token with specified tokenId can be transfered. This method invokes ERC721 method safeTransfer() to transfer the token in case of ETH, Celo and BSC.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Flow</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Binance Smart Chain</b></li>
<li><b>Algorand</b></li>
<li><b>Solana</b></li>
</ul>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
Algorand is unique a way that the receiving account should be ready before sending the NFT asset.
To perform this, the receiving account should transfer the NFT asset with 0 amount to itself.
During the process, it's using the same API as the main transaction: the only difference is that the "fromPrivateKey" should be the privateKey of the receiving account.
</p>
operationId: NftTransferErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransferNft"
- $ref: "#/components/schemas/TransferNftCelo"
- $ref: "#/components/schemas/TransferNftTron"
- $ref: "#/components/schemas/TransferNftSolana"
- $ref: "#/components/schemas/TransferNftFlowPK"
- $ref: "#/components/schemas/TransferNftFlowMnemonic"
- $ref: "#/components/schemas/TransferNftKMS"
- $ref: "#/components/schemas/TransferNftKMSCelo"
- $ref: "#/components/schemas/TransferNftKMSTron"
- $ref: "#/components/schemas/TransferNftSolanaKMS"
- $ref: "#/components/schemas/TransferNftFlowKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Transfer NFT Token
tags:
- Blockchain / NFT
/v3/nft/mint/batch:
post:
description: |
<h4>100 credits per API call on FLOW, 2 credits on another chains. Tatum covers the fee connected to the transaction costs in subscription credits for FLOW. This operation can be done on mainnet only for paid plans.</h4><br/>
<p>Create multiple NFT Tokens and transfer them to destination account. Create and transfer any NFT tokens from smart contract defined in contractAddress.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Flow</b></li>
<li><b>Binance Smart Chain</b></li>
</ul>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
</p>
operationId: NftMintMultipleErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/MintMultipleNftCelo"
- $ref: "#/components/schemas/MintMultipleNftKMSCelo"
- $ref: "#/components/schemas/MintMultipleNftTron"
- $ref: "#/components/schemas/MintMultipleNftKMSTron"
- $ref: "#/components/schemas/MintMultipleNft"
- $ref: "#/components/schemas/MintMultipleNftKMS"
- $ref: "#/components/schemas/MintMultipleNftFlowPK"
- $ref: "#/components/schemas/MintMultipleNftFlowMnemonic"
- $ref: "#/components/schemas/MintMultipleNftFlowKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/FlowMintedMultipleResult"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Mint NFT Multiple Tokens
tags:
- Blockchain / NFT
/v3/nft/burn:
post:
description: |
<h4>100 credits per API call on FLOW, 2 credits on another chains. Tatum covers the fee connected to the transaction costs in subscription credits for FLOW. This operation can be done on mainnet only for paid plans.</h4><br/>
<p>Burn one NFT Token. This method destroys any NFT token from smart contract defined in contractAddress.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Flow</b></li>
<li><b>Binance Smart Chain</b></li>
<li><b>Algorand</b></li>
</ul>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
</p>
operationId: NftBurnErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/BurnNftCelo"
- $ref: "#/components/schemas/BurnNftKMSCelo"
- $ref: "#/components/schemas/BurnNftTron"
- $ref: "#/components/schemas/BurnNftKMSTron"
- $ref: "#/components/schemas/BurnNft"
- $ref: "#/components/schemas/BurnNftKMS"
- $ref: "#/components/schemas/BurnNftFlowPK"
- $ref: "#/components/schemas/BurnNftFlowMnemonic"
- $ref: "#/components/schemas/BurnNftFlowKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Burn NFT
tags:
- Blockchain / NFT
/v3/nft/mint/add:
post:
description: |
<h4>2 credits.</h4><br/>
<p>Add new minter of NFT Tokens. This method adds minter permission to new minter address.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Binance Smart Chain</b></li>
</ul>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
</p>
operationId: NftAddMinter
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/AddNftMinter"
- $ref: "#/components/schemas/AddNftMinterKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Add NFT Minter
tags:
- Blockchain / NFT
/v3/nft/royalty:
put:
description: |
<h4>2 credits per API call.</h4><br/>
<p>Update royalty cashback value for one NFT Token. This method updates the first royalty value of specific author for 1 token.
If royalty value is set to 0, it will disable the royalty system for the token. Only from author's address of the royalty can change it's royalty value, not the owner of the token.<br/><br/>
Tatum now supports NFT these blockchains:<br/>
<ul>
<li><b>Ethereum</b></li>
<li><b>Polygon (Matic)</b></li>
<li><b>Kcs (KCS)</b></li>
<li><b>Celo</b></li>
<li><b>Harmony.ONE</b></li>
<li><b>Tron</b></li>
<li><b>Binance Smart Chain</b></li>
</ul>
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key.
No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and loss of funds. In this method, it is possible to enter privateKey
or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production,
<a href="https://github.com/tatumio/tatum-kms" target="_blank">Tatum KMS</a> should be used for the highest security standards, and signatureId should be present in the request.
Alternatively, using the Tatum client library for supported languages.
</p>
operationId: NftUpdateCashbackErc721
parameters:
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNftCelo"
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNftKMSCelo"
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNftTron"
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNftKMSTron"
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNft"
- $ref: "#/components/schemas/UpdateCashbackValueForAuthorNftKMS"
required: true
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/TransactionHashKMS"
- $ref: "#/components/schemas/SignatureId"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Update Royalty NFT
tags:
- Blockchain / NFT
/v3/nft/transaction/{chain}/{address}/{tokenAddress}:
get:
description: "<h4>1 credit per API call.</h4><br/><p>Get NFT transactions by address. This includes incoming and outgoing transactions for the address.</p>"
operationId: NftGetTransactionByAddress
parameters:
- description: "Blockchain to work with"
in: path
name: chain
required: true
schema:
type: string
enum:
- CELO
- ETH
- MATIC
example: CELO
- description: "Account address"
in: path
name: address
required: true
schema:
type: string
example: "0x8ce4e40889a13971681391aad29e88efaf91f784"
- description: "Token address"
in: path
name: tokenAddress
required: true
schema:
type: string
example: "0x1ce4e40889a13971681391aad29e88efaf91f784"
- description: Max number of items per page is 50.
in: query
name: pageSize
schema:
type: number
example: 10
maximum: 50
minimum: 1
required: true
- description: Offset to obtain next page of the data.
in: query
name: offset
schema:
type: number
example: 0
- description: Transactions from this block onwords will be included.
in: query
name: from
schema:
type: number
minimum: 0
example: 1087623
- description: Transactions up to this block will be included.
in: query
name: to
schema:
type: number
minimum: 0
example: 1087823
responses:
200:
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: "#/components/schemas/NftTx"
description: OK
400:
<<: *API400
401:
<<: *API401
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get NFT transactions by address
tags:
- Blockchain / NFT
/v3/nft/transaction/tokenId/{chain}/{tokenAddress}/{tokenId}:
get:
description: "<h4>1 credit per API call.</h4><br/><p>Get NFT transactions by token. This includes incoming and outgoing transactions for the token.</p>"
operationId: NftGetTransactionByToken
parameters:
- description: "Blockchain to work with"
in: path
name: chain
required: true
schema:
type: string
enum:
- CELO
- ETH
- MATIC
example: CELO
- description: "NFT Token ID"
in: path
name: tokenId
required: true
schema:
type: integer
minimum: 0
example: 1
- description: "Token address"
in: path
name: tokenAddress
required: true
schema:
type: string
example: "0x1ce4e40889a13971681391aad29e88efaf91f784"
- description: Max number of items per page is 50.
in: query
name: pageSize
schema:
type: number
example: 10
maximum: 50
minimum: 1
required: true
- description: Offset to obtain next page of the data.
in: query
name: offset
schema:
type: number
example: 0
- description: Transactions from this block onwords will be included.
in: query
name: from
schema:
type: number
minimum: 0
example: 1087623
- description: Transactions up to this block will be included.
in: query
name: to
schema:
type: number
minimum: 0
example: 1087823
responses:
200:
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: "#/components/schemas/NftTx"
description: OK
400:
<<: *API400
401:
<<: *API401
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get NFT transactions by token
tags:
- Blockchain / NFT
/v3/nft/address/{chain}/{hash}:
get:
description: |
<h4>1 credit per API call.</h4><br/>
<p>Get NFT contract address from deploy transaction. This method is deprecated, use <a href="#operation/SCGetContractAddress">Get contract address</a> instead.</p>
deprecated: true
operationId: NftGetContractAddress
parameters:
- description: Blockchain to work with
in: path
name: chain
required: true
schema:
type: string
enum:
- ETH
- ONE
- CELO
- TRON
- FLOW
- MATIC
- KCS
- BSC
- description: "Transaction hash"
in: path
name: hash
required: true
schema:
type: string
example: "0xe6e7340394958674cdf8606936d292f565e4ecc476aaa8b258ec8a141f7c75d7"
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
responses:
200:
content:
application/json:
schema:
type: object
properties:
contractAddress:
type: string
description: Address of the NFT token.
example: "0xc21C81ef03f98898Fb155E00C364e8a7b9D158b8"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403TxNotFound"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get contract address from transaction
tags:
- Blockchain / NFT
/v3/nft/transaction/{chain}/{hash}:
get:
description: "<h4>1 credit per API call.</h4><br/><p>Get NFT transaction by transaction hash.</p>"
operationId: NftGetTransactErc721
parameters:
- description: Blockchain to work with
in: path
name: chain
required: true
schema:
type: string
enum:
- ETH
- MATIC
- KCS
- ONE
- CELO
- TRON
- FLOW
- BSC
- description: "Transaction hash"
in: path
name: hash
required: true
schema:
type: string
example: "0xe6e7340394958674cdf8606936d292f565e4ecc476aaa8b258ec8a141f7c75d7"
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
responses:
200:
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/CeloTx"
- $ref: "#/components/schemas/EthTx"
- $ref: "#/components/schemas/FlowTx"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/Error403TxNotFound"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get Transaction
tags:
- Blockchain / NFT
/v3/nft/address/balance/{chain}/{address}:
get:
description: |
<h4>1 credit per API call + 5 credits for each owned token.</h4><br/><p>Get NFTs on address. Returns all NFTs this address holds.</p>
operationId: NftGetTokensByAddressErc721
parameters:
- description: Blockchain to work with
in: path
name: chain
required: true
schema:
type: string
example: ETH
enum:
- ALGO
- CELO
- MATIC
- ETH
- description: "Account address"
in: path
name: address
required: true
schema:
type: string
example: "NTAESFCB3WOD7SAOL42KSPVARLB3JFA3MNX3AESWHYVT2RMYDVZI6YLG4Y"
responses:
200:
content:
application/json:
schema:
type: array
items:
type: object
required:
- contractAddress
- balances
properties:
contractAddress:
type: string
example: "43821281"
description: Contract address of the NFT. In Algorand case, it will be asset-id..
balances:
type: array
items:
type: string
description: Amount of tokens available. It is always 1 or 0 for NFTs on Algorand, tokenId for EVM based chains like CELO or MATIC.
example: "1"
metadata:
type: array
items:
type: object
required:
- tokenID
properties:
tokenId:
description: TokenID of the NFT token owned by this address.
example: "1"
type: string
url:
description: Metadata URL of the TokenID. This data don't have to be present, safest way (if not present) is to obtain them from the NFT Contract.tokenURI() method call.
example: "ipfs://QmXFpaS3S7CkLZvihLFA9JbawKdqhjg8dJeDkPntmkD2Pc"
type: string
metadata:
type: object
description: Metadata scheme obtained from the url. This data don't have to be present, safest way (if not present) is to obtain them from the NFT Contract.tokenURI() method call.
example: {"name": "Example NFT name",
"description": "Example NFT description",
"image": "ipfs://QmP4R7ACZ7JRQ6sLdmnPHqjWEXxzdnPvhAV2f6RnQ8uxJ6"}
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
$ref: "#/components/schemas/Error403"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get NFT tokens for address
tags:
- Blockchain / NFT
/v3/nft/balance/{chain}/{contractAddress}/{address}:
get:
description: |
<h4>1 credit per API call.</h4><br/><p>Get NFTs on Account. Returns tokenIDs of tokens Account holds. This method is valid only for tokens deplyed using Tatum API - it reads data from the smart contract.</p>
operationId: NftGetBalanceErc721
parameters:
- description: Blockchain to work with
in: path
name: chain
required: true
schema:
type: string
enum:
- ETH
- MATIC
- KCS
- ONE
- CELO
- TRON
- FLOW
- BSC
- description: "Account address"
in: path
name: address
required: true
schema:
type: string
example: "0x3223AEB8404C7525FcAA6C512f91e287AE9FfE7B"
- description: "NFT contract address"
in: path
name: contractAddress
required: true
schema:
type: string
example: "0x94Ce79B9F001E25BBEbE7C01998A78F7B27D1326"
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema:
default: ethereum-ropsten
type: string
enum:
- ethereum-ropsten
- ethereum-rinkeby
responses:
200:
content:
application/json:
schema:
type: array
items:
type: string
description: Token ID.
example: "10"
description: OK
400:
<<: *API400
401:
<<: *API401
403:
description: Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
$ref: "#/components/schemas/Error403Celo"
500:
<<: *API500
security:
- X-Api-Key: [ ]
x-code-samples:
summary: Get NFT Account balance
tags:
- Blockchain / NFT
/v3/nft/provenance/{chain}/{contractAddress}/{tokenId}:
get:
description: "<h4>1 credit per API call.</h4><br/><p>Get NFT token provenance data, valid only for provenance contract.</p>"
operationId: NftGetProvenanceDataErc721
parameters:
- description: Blockchain to work with
in: path
name: chain
required: true
schema:
type: string
enum:
- ETH
- MATIC
- KCS
- ONE
- CELO
- BSC
- description: "Token ID"
in: path
name: tokenId
required: true
schema:
type: string
example: "1"
maxLength: 32
- description: "NFT contract address"
in: path
name: contractAddress
required: true
schema:
type: string
example: "0x94Ce79B9F001E25BBEbE7C01998A78F7B27D1326"
- description: "Type of Ethereum testnet. Defaults to ropsten. Valid only for ETH invocations."
in: header
name: x-testnet-type
required: false
schema: