Default Token Information
Field Name | Description |
---|---|
message | Error message or "OK" if query succeeded. See API Response for response status codes other than 200. |
status | Status of the query: "ready" for successful response or "pending" for refresh in progress. If status="pending" then resubmit the query after 5 seconds until status="ready". This only applies when the token is analyzed for the first time or the include_metrics/include_tests flags are included and the results are due to be refreshed. To block the response until status="ready" (long-polling) set block_until_ready="true". |
chainId | The provided chain identifier |
address | The provided contract address |
name | The token name string |
symbol | The token symbol string |
total_supply | The token total supply |
decimals | The token decimals |
created_at | Milliseconds since epoch for when contract was deployed |
refreshed_at | Milliseconds since epoch for when the token data was last updated or null if not applicable (e.g. first update) |
deployer_addr | The deployer address of the contract |
is_flagged | Boolean flag indicating whether the token was flagged as a scam automatically or by a moderator. |
flagged_at | Milliseconds since epoch for when the contract was flagged as a scam, or NULL if not a scam. |
exploits | Array of exploit type strings such as "hidden mint" and "honeypot" from automated scam detection. For further details see Exploit Types . |
contract.is_source_verified | Boolean flag indicating whether the contract source code was verified on a scan site |
contract.has_mint | Boolean flag indicating whether a mint function was detected in the contract source code |
contract.has_fee_modifier | Boolean flag indicating whether a fee modifying function was detected in the contract source code |
contract.has_max_transaction_amount | Boolean flag indicating whether a maximum transaction amount modifying function was detected in the contract source code |
contract.has_blocklist | Boolean flag indicating whether a allowlist/blocklist function was detected in the contract source code |
contract.has_proxy | Boolean flag indicating whether proxy functionality was detected in the contract source code |
contract.has_pausable | Boolean flag indicating whether a function that can pause swapping was detected in the contract source code |
Metrics (include_metrics=true
)
include_metrics=true
)The metrics fields are present in the response when the include_metrics
query parameter is set to "true". They represent the raw data used to determine the Smell Test results
Field Name | Description |
---|---|
score | An estimation of the rug pull risk on a scale of 0 to 100 summarizing the Smell Test results. 0 is most risky and 100 is least risky. The score is always set to 0 for scam tokens (is_flagged=true). |
riskLevel | Description of the risk level based on the score ("low" for 85+, "medium" for 60+, "high" for less than 60) |
permissions.owner_address | Current value of the owner variable if present in the contract, otherwise null |
permissions.is_ownership_renounced | Boolean flag indicating whether ownership is renounced |
swap_simulation.is_sellable | Boolean flag indicating whether the token was sellable in a simulated swap. This result is only currently available for Ethereum and BNB Chain and requires an LP to exist. It will be null if the result cannot be determined. |
swap_simulation.buy_fee | Integer buy fee percentage determined from a simulated swap. This result is only currently available for Ethereum and BNB Chain and requires an LP to exist. It will be null if the result cannot be determined. |
swap_simulation.sell_fee | Integer sell fee percentage determined from a simulated swap. This result is only currently available for Ethereum and BNB Chain and requires an LP to exist. It will be null if the result cannot be determined. |
balances.burn_balance | Number of tokens burned (held by null/burn addresses) |
balances.lock_balance | Number of tokens locked in a locker contract |
balances.deployer_balance | Number of tokens held by contract deployer address |
balances.owner_balance | Number of tokens held by owner address (zero if ownership is renounced) |
balances.top_holders | Array of information on the top 20 token holders |
balances.top_holders.address | Holder address |
balances.top_holders.balance | Number of tokens held |
balances.top_holders.is_contract | Boolean flag indicating whether the address is a contract rather than an EOA |
pools | Array of information on the supported liquidity pools (see Supported Chains & DEXes for a full list) |
pools.address | Address of the LP contract |
pools.name | DEX name ("Uniswap v2", "PancakeSwap", etc) |
pools.base_symbol | Symbol of the other token in the pair ("ETH", "USDC", "USDT", "DAI") |
pools.base_address | Address of the other token in the pair |
pools.total_supply | Total supply of LP tokens |
pools.decimals | LP token decimals |
pools.base_reserve | Amount of liquidity in the pool in terms of the other token (ETH, for example) |
pools.initial_base_reserve | Initial amount of liquidity added soon after pool creation in terms of the other token (ETH, for example) |
pools.owner_balance | Number of LP tokens held by the owner address (zero if ownership is renounced) |
pools.deployer_balance | Number of LP tokens held by the deployer address |
pools.burn_balance | Number of LP tokens burned (held by null/burn addresses) |
pools.lock_balance | Number of LP tokens locked in locker contracts |
pools.top_holders | Array of information on the top 20 LP token holders |
pools.top_holders.address | Holder address |
pools.top_holders.balance | Number of tokens held |
pools.locks | Array of information on the support liquidity lockers |
pools.locks.address | Address of the LP locker contract |
pools.locks.name | Name of the LP locker product (e.g., "Unicrypt") |
pools.locks.url | URL of the LP locker product home page |
pools.locks.balance | Number of LP tokens held by the locker contract |
pools.locks.start_time | Unix time (seconds since epoch) of the start time of the LP lock if it could be determined, otherwise null if an error occurred |
pools.locks.end_time | Unix time (seconds since epoch) of the unlock time of the LP lock if it could be determined, otherwise null if an error occurred |
Smell Test Results (include_tests=true
)
include_tests=true
)The Smell Test results are present in the response when the include_tests
query parameter is set to "true".
Field name | Description |
---|---|
score | An estimation of the rug pull risk on a scale of 0 to 100 summarizing the Smell Test results. 0 is most risky and 100 is least risky. |
riskLevel | Description of the risk level based on the score ("low" for 85+, "medium" for 60+, "high" for less than 60) |
tests | Array of test descriptors |
tests.id | Unique string identifier for the test |
tests.description | String description of the test. Note: the test result pertains to the test identifier but the test description is stated as the inverse of the test identifier. For example for testForMissingSource with description "Verified contract source" the "result" value will be "false" when the source is verified and "true" for when the source is not verified. |
tests.result | Boolean flag indicating the result of the test |
Some test descriptors contain additional fields such as "value", "valuePct", and "data".
List of Tests in the Smell Test Results
Test ID | Test Description | Additional Fields |
---|---|---|
testForMissingSource | Verified contract source | None |
testForProxy | Source does not contain a proxy contract | None |
testForPausable | Source does not contain a pausable contract | None |
testForMint | Source does not contain a mint function | None |
testForRestoreOwnership | Source does not contain a function to restore ownership | None |
testForMaxTransactionAmount | Source does not contain a function to set maxiumum transation amount | None |
testForModifiableFee | Source does not contain a function to modify the fee | None |
testForBlacklist | Source does not contain a function to blacklist holders | None |
testForOwnershipNotRenounced | Ownership renounced or source does not contain an owner contract | None |
testForAuthorization | Creator not authorized for special permission | None |
testForTokensLockedOrBurned | Tokens locked/burned | value, valuePct |
testForHighCreatorTokenBalance | Creator wallet contains less than 5% of token supply | value, valuePct |
testForHighOwnerTokenBalance | Owner wallet contains less than 5% of token supply | value, valuePct |
testForHighWalletTokenBalance | All other wallets contain less than 5% of token supply | data |
testForBurnedBalanceExceedsSupply | Burned amount exceeds total token supply | None |
testForCombinedWalletsExceedSupply | All wallets combined contain less than 100% of token supply | None |
testForImpossibleWalletTokenBalance | All wallets contain less than 100% of token supply | None |
testForInadequateLiquidity | Adequate current liquidity | value, valuePct, currency ("ETH", etc) |
testForInadequateInitialLiquidity | Adequate initial liquidity | valuePct |
testForInadeqateLiquidityLockedOrBurned | At least 95% of liquidity locked/burned | value, valuePct |
testForHighCreatorLPBalance | Creator wallet contains less than 5% of liquidity | value, valuePct |
testForHighOwnerLPBalance | Owner wallet contains less than 5% of liquidity | value, valuePct |
testForUnableToSell | Token is sellable | None |
testForHighBuyFee | Buy fee is less than 5% | valuePct |
testForHighSellFee | Sell fee is less than 5% | valuePct |
testForExtremeFee | Buy/sell fee is less than 30% | None |
Similar Contracts (include_similar=true
)
include_similar=true
)The similar contracts results are present in the response when the include_similar
query parameter is set to "true". The returned similar
array contains items with the following fields:
Field name | Description |
---|---|
chainID | Chain identifier for similar contract |
address | Address of similar contract |
score | Similarity score from 0 to 100 with 100 representing an identical match. |