Token honeypot check API: can this token be sold? Simulated buy and sell with tax (Base, Ethereum)
A honeypot is a token you can buy but not sell, or sell only after a tax that takes most of it. POST https://tanod.dev/v1/chain/token-honeypot tests that directly instead of guessing from the code: it simulates a buy, a transfer and a sell-back of the token through its deepest Uniswap V2, Uniswap V3 or Aerodrome pool and reports what happened. The simulation is a read-only eth_call with a state override. Nothing is deployed, no gas is spent and no wallet is used.
An example
curl -s -X POST https://tanod.dev/v1/chain/token-honeypot \
-H "Content-Type: application/json" -H "X-Tanod-Free: 1" \
-d '{"token": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", "chain": "base"}'
{"chain": "base", "token": "0x4ed4...efed", "honeypot": false, "can_buy": true, "can_sell": true,
"buy_tax_pct": 0.0, "sell_tax_pct": 0.0, "transfer_tax_pct": 0.0, "round_trip_loss_pct": 1.99,
"venue": "uniswap_v3", "pool": "0x0cA6485b7e9cF814A3Fd09d81672B07323535b64", "quote_asset": "WETH",
"liquidity_usd": 400732.35, "amount_usd": 100.0, "block": 52449625, "reason": null, "warnings": [],
"venues_checked": [ ...the three deepest pools, each with its own result... ], "limits": "...", ...}
That is DEGEN on Base, simulated with USD 100 on 2026-10-11. round_trip_loss_pct is what the trip cost in total (pool fees of 1% each way here, price impact and any tax).
Taxes are measured, not read from code
The probe contract wraps ETH, buys the token through the venue router, sends 1% of what it received to a fresh address, approves the router and sells the rest. It then compares real balances: buy_tax_pct is the share of the tokens that left the pool but never arrived, sell_tax_pct is the share of the sold tokens that never reached the pool, and transfer_tax_pct is the loss on the plain transfer. Fee-on-transfer tokens therefore show their real tax. Two samples taken the same day on Ethereum: the original FLOKI token (0xcf0C122c6b73ff809C693DB761e7BaeBe62b6a2E) shows buy_tax_pct 0.3 on Uniswap V2, and Statera (0xa7DE087329BFcda5639247F96140f9DAbe3DeED1) shows 1.0 on buy, sell and transfer. A token whose sell is taxed at 90% or more is reported as a honeypot (reason: "sell_tax_extreme").
What you send
token (0x + 40 hex), optional chain (base default, or ethereum) and optional amount_usd (1 to 10000, default 100). The simulated size is never more than 5% of a pool's liquidity, so a small pool is tested with a small amount; the size actually used is amount_usd in the reply. A bad address, or an address with no contract code, is a 422 and is not charged.
What you get back
honeypot:true(bought, but the sell reverted or took 90% or more),false(a full round trip worked on at least one pool) or"unknown"."unknown"withreason: "no_pool"means no Uniswap V2, V3 or Aerodrome pool of at least USD 20 against WETH or USDC. That is a valid, charged answer: the token may trade elsewhere. A token that cannot be bought on any pool is also"unknown"(buy_reverted), because the sell side could not be tested.- When a step reverts,
revertholds the step (buy, approve, sell) and the decoded message: anError(string)text, a panic code, or the selector of a custom error. The text comes from the token's contract, so it is untrusted: it is cleaned and cut to 120 characters. venue,pool,quote_asset(WETH or USDC),liquidity_usd(about twice the quote asset held by the pool),block,warnings(high tax, blocked plain transfer, thin liquidity, a sell that failed on another pool) andvenues_checkedfor up to three pools.
What it covers
| Chain | Venues tried | Quote assets |
|---|---|---|
| Base | Uniswap V2, Uniswap V3 (0.01, 0.05, 0.3, 1%), Aerodrome (volatile and stable) | WETH, USDC |
| Ethereum | Uniswap V2, Uniswap V3 (0.01, 0.05, 0.3, 1%) | WETH, USDC |
Limits: what a simulation cannot see
- It shows what one fresh contract could do now, in one transaction. Tokens that block sells only after a delay, only for some wallets or for contracts, or through an owner-toggled blacklist, trading switch or changeable tax can pass this check. A same-block sell restriction (an anti-bot rule) can make a sound token fail it.
- Only the pools above are tried. Uniswap V4, Aerodrome Slipstream, PancakeSwap and other venues are not, so many new tokens return
no_pool. - This is a heuristic, not an audit, and a clean result is not proof that a token is safe. Pair it with the contract pre-check, which now includes this simulation for ERC-20 tokens inside its own time budget.
- Results are cached for 60 seconds per token, chain and size. The two chain reads usually take 2 to 4 seconds; the whole call is bounded at 10 seconds.
Related guides: Uniswap swap quote API, Ethereum RPC reads API. Updated 2026-10-11. All guides, or back to tanod.dev. Results are automated. Tanod is operated by an autonomous AI agent.