Compute Unit (CU)
This document covers Compute Unit (CU) and Throughput — the metrics Nodit uses to measure API usage — along with plan-based limits and per-API CU costs. It begins with an explanation of how usage is measured and how plan limits are structured, followed by CU costs broken down by API type.
Overview
Compute Unit (CU) is the unit that measures the computing resources consumed when using Nodit services. CU gives you a precise way to track and calculate the computing resources and costs consumed by your projects, enabling flexible pricing management.
CU Allocation by Plan
Nodit applies either a daily or monthly CU limit depending on your plan. The Starter plan uses a daily CU limit, while all paid plans use a monthly CU limit. CU allocations by plan are shown in the table below. CUs are automatically refreshed at 00:00 UTC daily (for daily limits) or on the 1st of each month at 00:00 UTC (for monthly limits). Unused CUs do not roll over. The CU limit for the Enterprise plan is set separately based on contract terms.
| Spec | Starter | Starter Plus | Developer | Business | Enterprise |
|---|---|---|---|---|---|
| Daily CUs | 1,000,000 | - | - | - | Contract-based |
| Monthly CUs | - | 100,000,000 | 450,000,000 | 1,600,000,000 | Contract-based |
Auto-scaling
On Starter Plus and higher paid plans, Auto-scaling keeps API calls processing even after all CUs are exhausted. For details on enabling and disabling Auto-scaling, refer to the Auto-scaling guide.
Throughput
Throughput is the volume of operations a project can process per second. It is measured in CUPS (Compute Units Per Second), and the allowed limit varies by plan. Requests that exceed the Throughput limit configured for a project may be rate-limited.
Throughput by Plan
| Spec | Starter | Starter Plus | Developer | Business | Enterprise |
|---|---|---|---|---|---|
| Throughput (CU/s) | 300 | 400 | 600 | 3,000 | Custom |
Compute Unit(CU) Costs
The CU cost of each API call is determined by the API type and the complexity of the data being processed. The table below lists the CU cost for each API.
Web3 Data APIs
| Category | Method | CU |
|---|---|---|
| NFT API | Get NFT Contract Metadata by Contracts | 150 |
| Get NFT Contracts by Account | 150 | |
| Get NFT Holders by Contract | 150 | |
| Get NFT Holders by Token ID | 80 | |
| Get NFT Metadata by Contract | 150 | |
| Get NFT Metadata by Token IDs | 150 | |
| Get NFT Transfers by Account | 150 | |
| Get NFT Transfers by Contract | 150 | |
| Get NFT Transfers by TokenId | 150 | |
| Get NFT Transfers Within Range | 150 | |
| Get NFTs Owned by Account | 150 | |
| Search NFT Contract Metadata by Keyword | 500 | |
| Sync NFT Metadata | 80 | |
| Token API | Get Native Balance by Account | 30 |
| Get Native Token Balance by Account | 150 | |
| Get Native Token Transfer by Account | 150 | |
| Get Native Transfers By Account | 150 | |
| Get Native Transfers Within Range | 150 | |
| Get Token Allowance | 30 | |
| Get Token Contract Metadata by Contracts | 150 | |
| Get Token Holders by Contract | 150 | |
| Get Token Prices by Contracts | 350 | |
| Get Token Transfers by Account | 150 | |
| Get Token Transfers by Contract | 150 | |
| Get Token Transfers Within Range | 150 | |
| Get Tokens Owned by Account | 150 | |
| Search Token Contract Metadata by Keyword | 500 | |
| Blockchain API | Get Block by Hash or Number | 30 |
| Get Total Transaction Count By Account | 150 | |
| Get Blocks Within Range | 150 | |
| Get Gas Price | 80 | |
| Get Internal Transactions by Account | 500 | |
| Get Internal Transactions by Transaction Hash | 150 | |
| Get Next Nonce by Account | 30 | |
| Get Transaction by Hash | 80 | |
| Get Transaction By Transaction ID | 80 | |
| Get Transactions by Account | 150 | |
| Get Transactions by Hashes | 500 | |
| Get Transactions By Transaction IDs | 500 | |
| Get Transactions In Block | 150 | |
| Get Unspent Transaction Outputs By Account | 150 | |
| Is Contract | 30 | |
| Search Events | 350 | |
| Statistics API | Get Account Stats | 150 |
| Get Daily Active Accounts Stats | 150 | |
| Get Daily Active Accounts Stats By Contract | 150 | |
| Get Daily Transactions Stats | 150 | |
| Get Daily Transactions Stats By Contract | 150 | |
| Get Hourly Active Accounts Stats | 150 | |
| Get Hourly Active Accounts Stats By Contract | 150 | |
| Get Hourly Transactions Stats | 150 | |
| Get Hourly Transactions Stats By Contract | 150 | |
| ENS API | Get Address By ENS Name | 80 |
| Get ENS Name By Address | 80 | |
| Get ENS Record By Name | 150 | |
| Get ENS Records By Account | 150 | |
| Asset(TRC10) API | Get Asset(TRC10) Metadata by Issuer | 150 |
| Get Asset(TRC10) Metadata by IDs | 150 | |
| Search Asset(TRC10) Metadata by Keyword | 500 | |
| Get Asset(TRC10) Holders by ID | 150 | |
| Get Asset(TRC10) Transfers by ID | 150 | |
| Get Asset(TRC10) Transfers within Range | 150 | |
| Get Asset(TRC10) Transfers by Account | 150 | |
| Get Assets(TRC10) Owned by Account | 150 |
Multichain API
| Method | CU |
|---|---|
| Lookup Entities | 1000 |
Webhook and Websocket APIs
CU costs for Webhook and WebSocket subscriptions are calculated based on bandwidth — the amount of data delivered.
| Bandwidth | CU |
|---|---|
| 1 byte | 0.03 |
EVM Node API
| Namespace | Method | CU |
|---|---|---|
| eth | eth_blockNumber | 10 |
| eth_call | 23 | |
| eth_chainId | 0 | |
| eth_createAccessList | 22 | |
| eth_estimateGas | 20 | |
| eth_feeHistory | 10 | |
| eth_gasPrice | 10 | |
| eth_getBalance | 26 | |
| eth_getBlockByHash | 32 | |
| eth_getBlockByNumber | 31 | |
| eth_getBlockReceipts | 28 | |
| eth_getBlockTransactionCountByHash | 14 | |
| eth_getBlockTransactionCountByNumber | 13 | |
| eth_getCode | 30 | |
| eth_getFilterChanges | 18 | |
| eth_getFilterLogs | 69 | |
| eth_getLogs | 66 | |
| eth_getProof | 23 | |
| eth_getStorageAt | 26 | |
| eth_getTransactionByBlockHashAndIndex | 15 | |
| eth_getTransactionByBlockNumberAndIndex | 13 | |
| eth_getTransactionByHash | 15 | |
| eth_getTransactionCount | 21 | |
| eth_getTransactionReceipt | 16 | |
| eth_getUncleByBlockHashAndIndex | 19 | |
| eth_getUncleByBlockNumberAndIndex | 13 | |
| eth_getUncleCountByBlockHash | 16 | |
| eth_getUncleCountByBlockNumber | 13 | |
| eth_maxPriorityFeePerGas | 23 | |
| eth_newBlockFilter | 18 | |
| eth_newFilter | 18 | |
| eth_newPendingTransactionFilter | 18 | |
| eth_sendRawTransaction | 40 | |
| eth_subscribe | 10 | |
| eth_uninstallFilter | 10 | |
| eth_unsubscribe | 10 | |
| net | net_listening | 0 |
| net_version | 0 | |
| web3 | web3_clientVersion | 10 |
| web3_sha3 | 10 | |
| trace | trace_block | 113 |
| trace_call | 73 | |
| trace_filter | 73 | |
| trace_get | 68 | |
| trace_replayBlockTransactions | 119 | |
| trace_replayTransaction | 70 | |
| trace_transaction | 73 | |
| debug | debug_traceBlockByHash | 530 |
| debug_traceBlockByNumber | 530 | |
| debug_traceCall | 206 | |
| debug_traceTransaction | 206 | |
| bor | bor_getAuthor | 10 |
| bor_getCurrentProposer | 10 | |
| bor_getCurrentValidators | 10 | |
| bor_getSignersAtHash | 10 | |
| optimism | optimism_outputAtBlock | 10 |
| optimism_rollupConfig | 10 | |
| kaia | kaia_blockNumber | 10 |
| kaia_call | 23 | |
| kaia_chainId | 0 | |
| kaia_createAccessList | 22 | |
| kaia_estimateGas | 40 | |
| kaia_feeHistory | 10 | |
| kaia_gasPrice | 10 | |
| kaia_getBalance | 26 | |
| kaia_getBlockByHash | 32 | |
| kaia_getBlockByNumber | 31 | |
| kaia_getBlockReceipts | 28 | |
| kaia_getBlockTransactionCountByHash | 14 | |
| kaia_getBlockTransactionCountByNumber | 13 | |
| kaia_getCode | 30 | |
| kaia_getFilterChanges | 18 | |
| kaia_getFilterLogs | 69 | |
| kaia_getLogs | 66 | |
| kaia_getProof | 23 | |
| kaia_getStorageAt | 26 | |
| kaia_getTransactionByBlockHashAndIndex | 15 | |
| kaia_getTransactionByBlockNumberAndIndex | 13 | |
| kaia_getTransactionByHash | 15 | |
| kaia_getTransactionCount | 21 | |
| kaia_getTransactionReceipt | 16 | |
| kaia_maxPriorityFeePerGas | 23 | |
| kaia_newBlockFilter | 18 | |
| kaia_newFilter | 18 | |
| kaia_newPendingTransactionFilter | 18 | |
| kaia_sendRawTransaction | 40 | |
| kaia_subscribe | 10 | |
| kaia_uninstallFilter | 10 | |
| kaia_unsubscribe | 10 | |
| klay | klay_blockNumber | 10 |
| klay_call | 23 | |
| klay_chainId | 0 | |
| klay_createAccessList | 22 | |
| klay_estimateGas | 40 | |
| klay_feeHistory | 10 | |
| klay_gasPrice | 10 | |
| klay_getBalance | 26 | |
| klay_getBlockByHash | 32 | |
| klay_getBlockByNumber | 31 | |
| klay_getBlockReceipts | 28 | |
| klay_getBlockTransactionCountByHash | 14 | |
| klay_getBlockTransactionCountByNumber | 13 | |
| klay_getCode | 30 | |
| klay_getFilterChanges | 18 | |
| klay_getFilterLogs | 69 | |
| klay_getLogs | 66 | |
| klay_getProof | 23 | |
| klay_getStorageAt | 26 | |
| klay_getTransactionByBlockHashAndIndex | 15 | |
| klay_getTransactionByBlockNumberAndIndex | 13 | |
| klay_getTransactionByHash | 15 | |
| klay_getTransactionCount | 21 | |
| klay_getTransactionReceipt | 16 | |
| klay_maxPriorityFeePerGas | 23 | |
| klay_newBlockFilter | 18 | |
| klay_newFilter | 18 | |
| klay_newPendingTransactionFilter | 18 | |
| klay_sendRawTransaction | 40 | |
| klay_subscribe | 10 | |
| klay_uninstallFilter | 10 | |
| klay_unsubscribe | 10 |
Aptos Node API
| Category | Method | CU |
|---|---|---|
| Account | Get account | 13 |
| Get account resources | 13 | |
| Get account modules | 13 | |
| Get account resource | 13 | |
| Get account module | 13 | |
| Get account balance | 13 | |
| Blocks | Get blocks by height | 26 |
| Get blocks by version | 26 | |
| Events | Get events by creation number | 66 |
| Get events by event handle | 66 | |
| General | Get ledger info | 13 |
| Tables | Get table item | 13 |
| Get raw table item | 13 | |
| Transactions | Get transactions | 66 |
| Submit transaction | 13 | |
| Get transaction by hash | 13 | |
| Get transaction by version | 13 | |
| Get account transactions | 66 | |
| Get account transaction summaries | 26 | |
| Submit batch transactions | 26 | |
| Simulate transaction | 26 | |
| Encode submission | 13 | |
| Estimate gas price | 13 | |
| Wait For Transaction | 13 | |
| View | Execute view function of a module | 13 |
Aptos Indexer API
CU costs for the Aptos Indexer API are calculated based on the volume of data retrieved.
| Bandwidth | CU |
|---|---|
| 1 byte | 0.03 |
Sui Node API
| Namespace | Method | CU |
|---|---|---|
| sui | sui_devInspectTransactionBlock | 530 |
| sui_dryRunTransactionBlock | 530 | |
| sui_executeTransactionBlock | 229 | |
| sui_getChainIdentifier | 0 | |
| sui_getCheckpoint | 10 | |
| sui_getCheckpoints | 50 | |
| sui_getEvents | 50 | |
| sui_getLatestCheckpointSequenceNumber | 0 | |
| sui_getMoveFunctionArgTypes | 50 | |
| sui_getNormalizedMoveFunction | 50 | |
| sui_getNormalizedMoveModule | 50 | |
| sui_getNormalizedMoveModulesByPackage | 50 | |
| sui_getNormalizedMoveStruct | 50 | |
| sui_getObject | 20 | |
| sui_getProtocolConfig | 10 | |
| sui_getTotalTransactionBlocks | 10 | |
| sui_getTransactionBlock | 30 | |
| sui_multiGetObjects | 50 | |
| sui_multiGetTransactionBlocks | 100 | |
| sui_tryGetPastObject | 50 | |
| sui_tryMultiGetPastObjects | 100 | |
| sui_verifyZkLoginSignature | 250 | |
| suix | suix_getAllBalances | 30 |
| suix_getAllCoins | 50 | |
| suix_getBalance | 10 | |
| suix_getCoinMetadata | 10 | |
| suix_getCoins | 50 | |
| suix_getCommitteeInfo | 20 | |
| suix_getDynamicFieldObject | 50 | |
| suix_getDynamicFields | 50 | |
| suix_getLatestSuiSystemState | 20 | |
| suix_getOwnedObjects | 250 | |
| suix_getReferenceGasPrice | 10 | |
| suix_getStakes | 30 | |
| suix_getStakesByIds | 50 | |
| suix_getTotalSupply | 10 | |
| suix_getValidatorsApy | 30 | |
| suix_queryEvents | 350 | |
| suix_queryTransactionBlocks | 350 | |
| suix_resolveNameServiceAddress | 30 | |
| suix_resolveNameServiceNames | 30 | |
| suix_subscribeEvent | 10 | |
| suix_subscribeTransaction | 10 | |
| unsafe | unsafe_batchTransaction | 350 |
| unsafe_mergeCoins | 350 | |
| unsafe_moveCall | 150 | |
| unsafe_pay | 350 | |
| unsafe_payAllSui | 350 | |
| unsafe_paySui | 350 | |
| unsafe_publish | 100 | |
| unsafe_requestAddStake | 30 | |
| unsafe_requestWithdrawStake | 30 | |
| unsafe_splitCoin | 30 | |
| unsafe_splitCoinEqual | 30 | |
| unsafe_transferObject | 20 | |
| unsafe_transferSui | 20 |
Solana Node API
| Namespace | Method | CU |
|---|---|---|
| HTTP Methods | getAccountInfo | 20 |
| getBalance | 30 | |
| getBlock | 150 | |
| getBlockCommitment | 20 | |
| getBlockHeight | 10 | |
| getBlockProduction | 30 | |
| getBlocks | 30 | |
| getBlocksWithLimit | 30 | |
| getBlockTime | 10 | |
| getClusterNodes | 20 | |
| getEpochInfo | 10 | |
| getEpochSchedule | 10 | |
| getFeeForMessage | 20 | |
| getFirstAvailableBlock | 10 | |
| getGenesisHash | 10 | |
| getHealth | 0 | |
| getHighestSnapshotSlot | 10 | |
| getIdentity | 10 | |
| getInflationGovernor | 10 | |
| getInflationRate | 10 | |
| getInflationReward | 30 | |
| getLatestBlockhash | 10 | |
| getLeaderSchedule | 50 | |
| getMaxRetransmitSlot | 10 | |
| getMaxShredInsertSlot | 10 | |
| getMinimumBalanceForRentExemption | 10 | |
| getMultipleAccounts | 30 | |
| getProgramAccounts | 150 | |
| getRecentPerformanceSamples | 10 | |
| getRecentPrioritizationFees | 20 | |
| getSignaturesForAddress | 40 | |
| getSignatureStatuses | 20 | |
| getSlot | 10 | |
| getSlotLeader | 10 | |
| getSlotLeaders | 10 | |
| getStakeMinimumDelegation | 10 | |
| getSupply | 500 | |
| getTokenAccountBalance | 20 | |
| getTokenAccountsByOwner | 150 | |
| getTokenSupply | 20 | |
| getTransaction | 50 | |
| getTransactionCount | 20 | |
| getVersion | 10 | |
| getVoteAccounts | 20 | |
| isBlockhashValid | 20 | |
| minimumLedgerSlot | 10 | |
| sendTransaction | 20 | |
| simulateTransaction | 100 | |
| Websocket Methods | accountSubscribe | 10 |
| accountUnsubscribe | 10 | |
| logsSubscribe | 10 | |
| logsUnsubscribe | 10 | |
| programSubscribe | 10 | |
| programUnsubscribe | 10 | |
| signatureSubscribe | 10 | |
| signatureUnsubscribe | 10 | |
| slotSubscribe | 10 | |
| slotUnsubscribe | 10 | |
| slotsUpdatesSubscribe | 10 | |
| slotsUpdatesUnsubscribe | 10 |