post https://api.tatum.io/v3/subscription
Tip: To create Notifications on the mainnet or testnet you can use your respective keys from the Dashboard.
50 credits per sent Notification + 50 credits per day per subscription
For Free plans, there is a monthly limit of sent webhooks, which is 1000.
If the webhook is sent unsuccessfully, it will be retried. The number of retries depends on the plan.
- Free Plan - 3 retries
- Paid plans - 10 retries
Create a subscription as an HTTP web hook.
The following subscription types are available:
- ADDRESS_TRANSACTION - Enable HTTP POST JSON notifications for any blockchain transaction (both incoming and outgoing) at a specified address. This notification applies to transactions in the native blockchain currency or with any type of blockchain tokens.
- For EVM-based blockchains (ETH), this web hook might be first invoked when a transaction appears in the mempool. In that case the webhook has a field "mempool" set to "true". Then it is invoked again once the transaction is added to a block.
- For the other blockchains, this webhook is invoked when a transaction is added to a block.
Free community plans can monitor up to 10 addresses per plan.
The following table describes the availability of this notification type on different blockchains and the credit consumption:
The request body of the POST request is a JSON object with the following structure:Chain Testnet/Mainnet Token assets support Plan limitation Solana Yes/Yes SOL, SPL and NFTs Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Polygon Yes/Yes MATIC, ERC20, ERC721, ERC1155 Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Bitcoin Yes/Yes BTC Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Litecoin Yes/Yes LTC Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Bitcoin Cash Yes/Yes BCH, only incoming transactions Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Dogecoin Yes/Yes DOGE, only incoming transactions Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Tron Yes/Yes Tron, TRC10/TRC20 Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Binance Smart Chain Yes/Yes BSC, BEP20, ERC721, ERC1155 Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains Other chains Yes/Yes NATIVE, ERC20, ERC721, ERC1155 Free plans - 10 addresses across all blockchains, Paid plans - unlimited addresses across all blockchains
{ "address": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ", // the address on which the transaction occurs; for EVM-based chains, this is the sender's address "txId": "2rdy3YCZHSwvpWtuDom1d4Jjy5UU9STLxF3ffXau6GToReDkfw8wEgX541fvzvh6btVC5D8iNapcKTXfPsoDBk7A", // the transaction ID "blockNumber": 110827114, // the block number; does not appear if the transaction is in the mempool (for EVM-based blockchains) "asset": "3gUeeR3BfVhukYJMwtHownRtRkGcf1bvwiV8TbKMZBVz", // the asset of the transaction: for token assets, this is the token address; for native blochckain assets, this is the name of the asset (for example, SOL) "amount": "1", // the amount of the asset that was credited to (+) or debited from (-) the address; for EVM-based chains, when "counterAddress" is present, the amount is always positive "tokenId": "1", // (ERC-721 / ERC-1155 only) the ID of the transferred token "type": "token", // the type of the transaction; can be either "native" or "token" "mempool": true, // (EVM-based blockchains only) if appears and set to "true", the transaction is in the mempool; if set to "false" or does not appear at all, the transaction has been added to a block "counterAddress": undefined // an optional counter party address of the transaction; for EVM-based blockchains, this is the recipient's address // UTXO based chains return without this parameter, since UTXO is many-to-many by design. "addressesRiskRatio": [ // (optional, subject to change; for Solana mainnet only) risk levels assigned to the addresses with which the address communicated within the transaction; the addresses are assessed using the AML/CFT solution by blockmate.io, see https://docs.blockmate.io/docs/risk-API/sources {"vTEfAhXTmvgFmepgfhzBbRrJ4EtUP9adbMJjpzLsDMk": 0}, {"zBbRrJ4EtUP9adbMJjpzLsDMkvTEfAhXTmvgFmepgfh": 100} ] }
- CONTRACT_NFT_TXS_PER_BLOCK - Enable HTTP POST JSON notifications for any event of minting, transferring, or burning an NFT that was emitted from any smart contract. This notification is fired as a batch notification per block: it includes all NFT minting, transferring, or burning events from all smart contracts that got recorded into a block.
Free community plans can monitor 1 event across all blockchains per plan.
The request body of the POST request is a JSON object with the following structure:
{ "events": [ { "timestamp": 1661961758000, "from": "0x0000000000000000000000000000000000000000", "to": "0xfa4e7035b34294407e5df1603215983d65e5a773", "tokenId": "14671", "txId": "0x916fcf878656f7a3772317697e6d2740ac8b1b7dbe6d029aa79592fd72f3fb0b", "contractAddress": "0x55a2430e32dcebc3649120f26f917d1f0686f74c", "type": "erc721", "amount": "1", "logIndex": 578, "metadataURI": "https://graphigo.prd.galaxy.eco/metadata/0x55a2430e32dcebc3649120f26f917d1f0686f74c/14671.json" } ], "blockNumber": 32522207, "chain": "polygon-mainnet", "subscriptionType": "CONTRACT_NFT_TXS_PER_BLOCK" }
- CONTRACT_MULTITOKEN_TXS_PER_BLOCK - Enable HTTP POST JSON notifications for any event of minting, transferring, or burning a Multi-Token that was emitted from any smart contract. This notification is fired as a batch notification per block: it includes all Multi Token minting, transferring, or burning events from all smart contracts that got recorded into a block.
Free community plans can monitor 1 event across all blockchains per plan.
The request body of the POST request is a JSON object with the following structure:
{ "events": [ { "timestamp": 1661961758000, "from": "0x85bd970cf0e49acd572f9c2d608713bc55b5ee0e", "to": "0x9ab31230d5413e4af01af9bb697651a3c70c95c9", "tokenId": "1450000023306", "txId": "0x565b9ca6b7b5ff1b1ce0725acd785dbf5ff0930d5ff547bad044c0960291555f", "contractAddress": "0xdb6290f355a528a7284bdd528b05a78fb05226ca", "type": "erc1155", "amount": "1", "logIndex": 571, "metadataURI": "https://touhao.bj.bcebos.com/nft/metadata/1450000023306.json" } ], "blockNumber": 32522207, "chain": "polygon-mainnet", "subscriptionType": "CONTRACT_MULTITOKEN_TXS_PER_BLOCK" }
- CONTRACT_LOG_EVENT - Enable HTTP POST JSON notifications for any event that was emitted from any smart contract. This notification is fired as a batch notification per block: it includes all events from all smart contracts that got recorded into a block.
Free community plans can monitor 1 event across all blockchains per plan.
The request body of the POST request is a JSON object with the following structure:
{ "events": [ { "txId": "0xc98307f09ed527d5cff8305e8f65226b790e3317ded10b9e58f6f07286dcf8f1", "logIndex": 326, "timestamp": 1661774265000, "address": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", "topic_0": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "topic_1": "0x000000000000000000000000a91ab7d77892a559d2a95baaf1d748fc97c65d29", "topic_2": "0x0000000000000000000000009b08288c3be4f62bbf8d1c20ac9c5e6f9467d8b7", "topic_3": null, "data": "0x0000000000000000000000000000000000000000000000000000000002c9e3e4" } ], "blockNumber": 32447538, "chain": "polygon-amoy", "subscriptionType": "CONTRACT_LOG_EVENT" }
- ACCOUNT_INCOMING_BLOCKCHAIN_TRANSACTION - Enable HTTP POST JSON notifications about incoming blockchain transactions on virtual accounts.
This web hook is invoked when an incoming transaction is reflected on the balance of the virtual account (the balance is credited with the transaction amount). This happens when the transaction has the sufficient number of blockchain confirmations: two confirmations for BTC, LTC, BCH, and DOGE, and one confirmation for the other blockchains.
The request body of the POST request is a JSON object with the following structure:{ "date": 1619176527481, "amount": "0.005", "currency": "BTC", "subscriptionType":"ACCOUNT_INCOMING_BLOCKCHAIN_TRANSACTION", "accountId": "6082ab462936b4478117c6a0", "reference: "c9875708-4ba3-41c9-a4cd-271048b41b9a", // the reference of the transaction in the virtual account "txId": "45af182a0ffab58e5ba32fee57b297b2260c6e23a1de5ddc76c7ee22d72dea99", "blockHash": "45af182a0ffab58e5ba32fee57b297b2260c6e23a1de5ddc76c7ee22d72dea99", // the hash of the block, might not be present every time "blockHeight": 12345, "from": "SENDER_ADDRESS", // might not be present every time; not present for UTXO-based blockchains "to": "RECIPIENT_ADDRESS_CONNECTED_TO_LEDGER_ACCOUNT", // the blockchain address of the recipient "index": 5 // for UTXO-based blockchains (BCH, BTC, DOGE, LTC), this is the index of the output in the transaction }
- ACCOUNT_PENDING_BLOCKCHAIN_TRANSACTION - Enable HTTP POST JSON notifications about incoming blockchain transactions on virtual accounts.
This web hook is supported only for BCH, BTC, DOGE, ETH, and LTC accounts.
- For BTC-based blockchains (BCH, BTC, DOGE, and LTC), this web hook is invoked when an incoming transaction appears in a block for the first time. At that time, the transaction has one confirmation but this is not enough for the transaction to be reflected on the balance of the virtual account yet. Instead, a deposit corresponding to the pending transaction with a status of "in progress" appears on the virtual account. Once the transaction is added to the block, the deposit's status changes to "done", and the account balance gets updated.
- For EVM-based blockchains (ETH), this web hook is invoked when an incoming transaction appears in the mempool. The virtual account balance is not updated until the transaction is added to a block. Instead, a deposit corresponding to the pending transaction with a status of "in progress" appears on the virtual account. Once the transaction is added to the block, the deposit's status changes to "done", and the account balance gets updated.
The request body of the POST request is a JSON object with the following structure:
{ "date": 1619176527481, "amount": "0.005", "currency": "BTC", "accountId": "6082ab462936b4478117c6a0", "reference: "c9875708-4ba3-41c9-a4cd-271048b41b9a", // the reference of the transaction in the virtual account "txId": "45af182a0ffab58e5ba32fee57b297b2260c6e23a1de5ddc76c7ee22d72dea99", "blockHash": "45af182a0ffab58e5ba32fee57b297b2260c6e23a1de5ddc76c7ee22d72dea99", // the hash of the block, might not be present every time; if set to "null", the transaction is in the mempool (for EVM-based blockchains) "blockHeight": 12345, // if set to "null", the transaction is in the mempool (for EVM-based blockchains) "from": "SENDER_ADDRESS", // might not be present every time; not present for UTXO-based blockchains (BCH, BTC, DOGE, LTC) "to": "RECIPIENT_ADDRESS_CONNECTED_TO_LEDGER_ACCOUNT", // the blockchain address of the recipient "index": 5 // for UTXO-based blockchains (BCH, BTC, DOGE, LTC), this is the index of the output in the transaction }
- CUSTOMER_TRADE_MATCH - Enable HTTP POST JSON notifications on closed trade, which occurs on any customer account.
This web hook will be invoked, when the open trade is filled and closed. Works also for the Trade Futures. If is triggered by the futures, bool field expiredWithoutMatch is present.
Request body of the POST request will be JSON object with attributes:
{ "created": 1619176527481, "amount": "0.005", "price": "0.02", "type": "SELL", "pair": "VC_CHF/VC_CHF3", "id": "6082ab462936b4478117c6a0", // id of the trade "currency1AccountId": "6082ab462936b4478117c6a0", "currency2AccountId": "6082ab512936b4478117c6a2", "fee": null, "feeAccountId": null, "isMaker": true, "expiredWithoutMatch": false }
- CUSTOMER_PARTIAL_TRADE_MATCH - Enable HTTP POST JSON notifications on partialy filled trade, which occurs on any customer account.
This web hook will be invoked, when the open trade is partialy filled.
Request body of the POST request will be JSON object with attributes:
{ "created": 1619176527481, "amount": "0.005", "orderAmount": "0.1", "price": "0.02", "type": "SELL", "pair": "VC_CHF/VC_CHF3", "id": "6082ab462936b4478117c6a0", // id of the trade "currency1AccountId": "6082ab462936b4478117c6a0", "currency2AccountId": "6082ab512936b4478117c6a2", "fee": null, "feeAccountId": null, "isMaker": true, "expiredWithoutMatch": false }
- TRANSACTION_IN_THE_BLOCK - Enable HTTP POST JSON notifications on ledger => blockchain transaction, when transaction is included in the block.
This web hook will be invoked, when the outgoing transaction is included in the block.
Request body of the POST request will be JSON object with attributes:
{ "txId": "0x026f4f05b972c09279111da13dfd20d8df04eff436d7f604cd97b9ffaa690567", "reference": "90270634-5b07-4fad-b17b-f82899953533", "accountId": "6086ed0744c45b24d4fbd039", "currency": "BSC", "withdrawalId": "608fe5b73a893234ba379ab2", "address": "0x8ce4e40889a13971681391AAd29E88eFAF91f784", "amount": "0.1", "blockHeight": 8517664 }
- KMS_FAILED_TX - Enable HTTP POST JSON notifications on error during KMS signature process.
This web hook will be invoked, when the Tatum KMS receives error during processing transactions.
Request body of the POST request will be JSON object with attributes:
{ "signatureId": "6082ab462936b4478117c6a0", "error": "Error message from the KMS" }
- KMS_COMPLETED_TX - Enable HTTP POST JSON notifications on successful completion of KMS signature process.
This web hook will be invoked, when the Tatum KMS successfully completes the signature during processing transactions.
Request body of the POST request will be JSON object with attributes:
{ "signatureId": "6082ab462936b4478117c6a0", "txId": "0x7bb7d3b90567e89f999f2e3d263bc3738a018dbbcfa9f5397678cf17cdf0235f" }
Result of the operation is subscription ID, which can be used to cancel subscription or obtain additional data connected to it like reports.