---
title: Token check: Lorg Check docs
description: POST /v1/check/token: is this token safe to buy? The request fields, the trade size, what is checked, and the token facts in the answer.
url: https://lorglabs.com/docs-token-check.html
---

# Token check

`POST /v1/check/token` answers **"is this token safe to buy?"** Use it before every swap into a token. About a second; $0.03 over x402.

## The request

```
{ "chain": "base", "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", "context": "swap", "amount_usd": 500 }
```

- **chain**: Required. `base` or `ethereum`. The chain ID (`8453`, `1`) or its CAIP-2 name (`eip155:8453`) works too.
- **address**: Required. The token's contract address: `0x` and 40 hex characters. If it mixes upper and lower case, the case must match its checksum (EIP-55), so a typo is refused instead of checked.
- **amount_usd**: Optional. The size of the trade you intend, in US dollars (0.01 to 1,000,000,000). The check then also tries a trade of that size: see below. Same price.
- **context**: Optional: `swap`, `pay` or `hold`. Sent back in the answer as you sent it; it doesn't change the checks.

The body is JSON, at most 2 KB. Fields we don't know are ignored, so you can send your own. A wallet's address sent here gets `422 NOT_A_CONTRACT`: use the [address check](https://lorglabs.com/docs-address-check.md).

## What is checked

- **A real trade**: We buy the token and sell it back in a simulation, through its deepest real pool (Uniswap V2, V3 and V4, Aerodrome and others). A sale that fails is a block; a tax on buying or selling is measured.
- **The contract**: What its owner can still do: mint, a mint hidden in transfers, pause, block addresses, set fees, replace the code. Whether that power sits with one wallet, a multisig or a timelock. Whether the source is verified.
- **The pool's money**: Who can withdraw the liquidity: burned, locked, or a wallet that can pull it at any time. How much a seller can actually reach.
- **Its creator**: Who deployed it, and who paid the creator first: a sanctioned address, a mixer, or a wallet that funded the creators of earlier rugs.
- **Its pool's hook**: On Uniswap V4, whether the hook is a copy of a known honeypot hook.
- **Holders and age**: How concentrated the supply is, and how new the token is.
- **Fakes and lists**: Whether it copies a major token's name or ticker. A ticker spelled with look-alike letters, or a fake of USDC, USDT, ETH and the like with no market, is a block that says plainly it is not the real token. And the sanctions and scam lists.

## The trade size

With `amount_usd`, the check also buys and sells that amount in the simulation. The answer gets `EXIT_LIQUIDITY_INSUFFICIENT` (never allow) when a buy of that size is priced 10% or more worse than a small one, is larger than all the money a seller can reach in the token's pools, can't be taken whole by the pool, or reverts where a small one goes through.

## The token facts in the answer

Beside the [usual fields](https://lorglabs.com/docs-answer.md), a token check returns `token`:

```
// AERO on Base, asked for a $2,500 trade (14 Oct 2026)
"token": {
  "name": "Aerodrome", "symbol": "AERO", "age_days": 1143.1, "launchpad": null,
  "main_pool": { "dex": "aerodrome", "quote": "USDC", "id": "0x6cdc…971d", "liquidity_usd": 42153532 },
  "simulation": { "buy_tax_pct": 0, "sell_tax_pct": 0, "round_trip_loss_pct": 0.6, "sold": true },
  "trade": { "amount_usd": 2500, "simulated_usd": 1687.82, "pools": 41, "exit_liquidity_usd": 31218967,
             "price_impact_pct": 0, "filled_pct": 100, "round_trip_loss_pct": 0.6, "bought": true, "sold": true }
}
```

- **main_pool**: The deepest pool we found, where the simulation traded. `null` when there is none.
- **simulation**: What a small buy and sell-back lost, in percent. `null` if it couldn't be simulated.
- **trade**: Only with `amount_usd`: what a trade of that size did. The order is split across the token's `pools` by depth, and `simulated_usd` is the main pool's share. `price_impact_pct` is how much worse than a small buy it was priced; `filled_pct` is under 100 when the pool couldn't take it all; `exit_liquidity_usd` is the money a seller can reach across the pools.

A token can be dangerous and still trade normally in the simulation: the trap may be in who controls it. That is why the answer weighs every finding, not the simulation alone.
