# Honeypot Token Safety API
> Live EVM token-safety checks — does this token let you sell, and what will it cost you? A "honeypot" is a token you can buy but cannot sell: the contract blocks the sell, traps your money or charges a punishing tax. This API detects it the only reliable way — by actually simulating a buy and a sell of the token against its real liquidity pool on-chain, right now (powered by honeypot.is), and reporting whether the sell went through, the live buy/sell/transfer tax, the gas cost and a plain risk summary. Beyond the honeypot verdict it returns the token's DEX trading pairs with their on-chain reserves and USD liquidity, the largest holders with the top-10 supply concentration (a top-heavy token can be dumped on you), and whether the contract source is verified/open and makes proxy calls. Covers Ethereum, BNB Chain, Base and other EVM chains. This is the EVM token-safety cut via live buy/sell simulation — distinct from the Solana rug-risk feed, which inspects SPL mint authorities on a different chain with a different method. A safety signal, not financial advice — always verify before trading.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/honeypot-api/..."
```

## Pricing
- **Free** (Free) — 10,000 calls/Mo, 2 req/s
- **Starter** ($29/Mo) — 160,000 calls/Mo, 6 req/s
- **Pro** ($84/Mo) — 700,000 calls/Mo, 16 req/s
- **Scale** ($235/Mo) — 3,400,000 calls/Mo, 40 req/s

## Endpoints

### Safety

#### `GET /v1/contract` — Source-verification and proxy-call analysis

**Parameters:**
- `address` (query, required, string) — Token contract address Example: `0x6982508145454Ce325dDbE47a25d4ec3d2311933`
- `chain` (query, optional, string) — EVM chain (default eth) Example: `eth`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/honeypot-api/v1/contract?address=0x6982508145454Ce325dDbE47a25d4ec3d2311933&chain=eth"
```

**Response:**
```json
{
    "data": {
        "note": "Whether an EVM token's contract is verified and open-source. is_open_source true means the code is published and auditable; has_proxy_calls true means the contract delegates to other contracts (logic can change — a risk). contracts_checked/contracts_open_source count how many of the contracts in the token's call graph are open-source. A closed-source token you cannot read is harder to trust. Pass address and chain. Live.",
        "chain": "Ethereum",
        "source": "honeypot.is public API (api.honeypot.is/v2/GetContractVerification), keyless",
        "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
        "chain_id": 1,
        "is_contract": true,
        "contract_calls": 0,
        "is_open_source": true,
        "has_proxy_calls": false,
        "root_open_source": true,
        "contracts_checked": 1,
        "full_check_performed": true,
        "contracts_open_source": 1
    },
    "meta": {
        "timestamp": "2026-06-13T04:41:56.251Z",
        "request_id": "3a7d39c0-2f3b-4b5b-bd2a-a2c36ea30785"
    },
    "status": "ok",
    "message": "Contract analysis retrieved successfully",
    "success": true
}
```

#### `GET /v1/scan` — Honeypot verdict + buy/sell tax + risk for a token

**Parameters:**
- `address` (query, required, string) — Token contract address (0x + 40 hex) Example: `0x6982508145454Ce325dDbE47a25d4ec3d2311933`
- `chain` (query, optional, string) — EVM chain (eth/bsc/base/polygon/arbitrum/avalanche/optimism or chainID; default eth) Example: `eth`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/honeypot-api/v1/scan?address=0x6982508145454Ce325dDbE47a25d4ec3d2311933&chain=eth"
```

**Response:**
```json
{
    "data": {
        "name": "Pepe",
        "note": "The live honeypot/safety check for an EVM token, simulated against its real liquidity pool right now. is_honeypot is true if the sell could not be completed (your money would be trapped) — honeypot_reason says why. buy_tax_pct/sell_tax_pct/transfer_tax_pct are the real taxes the contract charges (a high sell tax is a soft trap even when not a hard honeypot). risk/risk_level/flags are honeypot.is's plain summary. Pass address (token contract) and chain (Ethereum/Optimism/BNB Chain/Polygon/Base/Arbitrum/Avalanche or a numeric chainID; default Ethereum). This is a safety signal, not financial advice. Live.",
        "pair": {
            "name": "Uniswap V2: PEPE-WETH",
            "address": "0xA43fe16908251ee70EF74718545e4FE6C5cCEc9f",
            "liquidity_usd": 19805013.5
        },
        "risk": "low",
        "chain": "Ethereum",
        "flags": [],
        "source": "honeypot.is public API (api.honeypot.is/v2/IsHoneypot), keyless",
        "symbol": "PEPE",
        "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
        "buy_gas": 151216,
        "chain_id": 1,
        "decimals": 18,
        "is_proxy": false,
        "sell_gas": 105214,
        "risk_level": 1,
        "buy_tax_pct": 0,
        "is_honeypot": false,
        "open_source": true,
        "sell_tax_pct": 0,
        "total_holders": 556532,
        "honeypot_reason": null,
        "transfer_tax_pct": 0,
        "simulation_success": tru
…(truncated, see openapi.json for full schema)
```

### Market

#### `GET /v1/pairs` — DEX trading pairs with liquidity for a token

**Parameters:**
- `address` (query, required, string) — Token contract address Example: `0x6982508145454Ce325dDbE47a25d4ec3d2311933`
- `chain` (query, optional, string) — EVM chain (default eth) Example: `eth`
- `limit` (query, optional, string) — Max pairs (1-50) Example: `15`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/honeypot-api/v1/pairs?address=0x6982508145454Ce325dDbE47a25d4ec3d2311933&chain=eth&limit=15"
```

**Response:**
```json
{
    "data": {
        "note": "The DEX trading pairs for an EVM token — each with its pool address, the two paired tokens, on-chain reserves, USD liquidity and the router (which DEX). The deepest-liquidity pair is the one a honeypot check simulates against; thin liquidity is itself a risk. Pass address, chain and limit (1-50). Live.",
        "chain": "Ethereum",
        "count": 10,
        "pairs": [
            {
                "name": "Uniswap V2: PEPE-WETH",
                "router": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d",
                "tokens": [
                    "0x6982508145454ce325ddbe47a25d4ec3d2311933",
                    "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
                ],
                "address": "0xa43fe16908251ee70ef74718545e4fe6c5ccec9f",
                "chain_id": 1,
                "reserves": [
                    3.515708202591076e+30,
                    5.944880741518268e+21
                ],
                "liquidity_usd": 19805013.5
            },
            {
                "name": "Uniswap V3: PEPE-WETH",
                "router": "0xe592427a0aece92de3edee1f18e0157c05861564",
                "tokens": [
                    "0x6982508145454ce325ddbe47a25d4ec3d2311933",
                    "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
                ],
                "address": "0x11950d141ecb863f01007add7d1a342041227b58",
                "chain_id": 1,
                "reserves": [
                    5.35343365134
…(truncated, see openapi.json for full schema)
```

### Holders

#### `GET /v1/holders` — Largest holders + top-10 supply concentration

**Parameters:**
- `address` (query, required, string) — Token contract address Example: `0x6982508145454Ce325dDbE47a25d4ec3d2311933`
- `chain` (query, optional, string) — EVM chain (default eth) Example: `eth`
- `limit` (query, optional, string) — Max holders (1-50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/honeypot-api/v1/holders?address=0x6982508145454Ce325dDbE47a25d4ec3d2311933&chain=eth&limit=20"
```

**Response:**
```json
{
    "data": {
        "note": "The largest holders of an EVM token and how concentrated its supply is. top10_concentration_pct is the share of total supply held by the ten biggest wallets — a high figure means a few wallets could dump the token on you (note some top holders are the liquidity pool or known CEX wallets, flagged via alias/is_contract). supply_pct is each holder's share. balance is the raw on-chain amount (apply token decimals for a human figure). Pass address, chain and limit (1-50). Live.",
        "chain": "Ethereum",
        "count": 20,
        "source": "honeypot.is public API (api.honeypot.is/v1/TopHolders), keyless",
        "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
        "holders": [
            {
                "alias": null,
                "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
                "balance": "40000000000000000000000000000000",
                "supply_pct": 9.5082,
                "is_contract": false
            },
            {
                "alias": null,
                "address": "0x5a52e96bacdabb82fd05763e25335261b270efcb",
                "balance": "33141296548784849877378668900100",
                "supply_pct": 7.8778,
                "is_contract": false
            },
            {
                "alias": null,
                "address": "0x1d48963dd8fada6ab5c2c7b92eba81ecc5030270",
                "balance": "28424454468599944748790607839220",
                "supply_pct": 6.7566,
   
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/honeypot-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "scan/pairs/holders/contract all take address (the token contract, 0x + 40 hex) and chain (Ethereum/Optimism/BNB Chain/Polygon/Base/Arbitrum/Avalanche or a numeric EVM chainID; default Ethereum). pairs and holders also take limit (1-50). meta takes no parameters. Honeypot detection is a live on-chain simulation; results are a safety signal, not financial advice — always verify before trading.",
        "sample": {
            "symbol": "PEPE",
            "is_honeypot": false,
            "sell_tax_pct": 0
        },
        "source": "honeypot.is public API (api.honeypot.is), keyless, live",
        "service": "honeypot-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/scan": "Honeypot verdict + buy/sell tax + risk for a token (address=0x..., chain=eth).",
            "GET /v1/pairs": "DEX trading pairs with liquidity for a token.",
            "GET /v1/holders": "Largest holders + top-10 supply concentration.",
            "GET /v1/contract": "Source-verification and proxy-call analysis."
        },
        "description": "Live EVM token-safety checks from honeypot.is, keyless. A honeypot is a token you can buy but cannot sell; honeypot.is detects it by actually simulating a buy and a sell against the token's real liquidity pool on-chain. The scan endpoint returns the honeypot verdict, the live buy/sell/transfer tax, gas and a risk summary; pairs lists the token's DEX trading pairs with reserves
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/honeypot-api
OpenAPI spec: https://www.oanor.com/api/honeypot-api/openapi.json
