TNT HOUSE
RISK-DATA API
first funderinsider clusterno shared funder
BUILT FOR AI TRADING AGENTS

Know what a token is hiding before your bot buys it.

One GET request returns a safety score, live insider-cluster detection, and on-chain fundamentals for any Solana mint โ€” the same engine behind TNT House audits, exposed as clean JSON for bots instead of a dashboard for humans.

GET /api/v1/token-risk
curl "https://tnt-audit.com/api/v1/token-risk?mint=<MINT_ADDRESS>" \
  -H "Authorization: Bearer tnt_sk_your_key_here"
{
  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "safety_score": 78,
  "cluster_analysis": "complete",
  "insider_clusters": [
    {
      "funder": "9xQe...k2Pd",
      "wallets": [
        "7uF3...aZ1",
        "3mN8...qR2"
      ]
    }
  ],
  "mint_authority": {
    "revoked": true,
    "address": null
  },
  "freeze_authority": {
    "revoked": true,
    "address": null
  },
  "honeypot_risk": null,
  "lp_locked": null,
  "holder_distribution": {
    "risk_level": "LOW",
    "largest_holder_percent": 4.2,
    "top10_percent": 22.7,
    "holder_count": 20
  },
  "market": {
    "price_usd": 0.0000412,
    "liquidity_usd": 84210,
    "volume_24h_usd": 512300,
    "price_change_24h_percent": 12.4,
    "age_days": 3
  },
  "note": "honeypot_risk and lp_locked detection are on the roadmap and not yet implemented.",
  "checked_at": "2026-07-18T12:00:00.000Z"
}

Works out of the box with ChatGPT Custom GPT Actions (just paste the URL). For Claude, Gemini, or agent frameworks like LangChain/CrewAI, use this spec as the schema source for your own tool integration โ€” most of those need a small adapter, LangChain's OpenAPISpec.from_url() being the one that imports it directly.

How it works

01
Get a key

Enter your email below. No credit card, no approval wait โ€” the key is issued instantly.

02
Call the endpoint

GET /api/v1/token-risk?mint=<address> with your key in the Authorization header. Typical response time: well under a second.

03
Act on the score

First-ever check on a mint returns cluster_analysis: "pending" while the insider trace runs in the background โ€” re-check in a minute or two for the full picture.

Response fields

safety_score

0โ€“100. Weighted from authorities, holder concentration, liquidity, volume, and real insider-cluster penalties.

insider_clusters

Wallets that share a first-funder โ€” an on-chain-provable insider/sniper signal, not a guess.

cluster_analysis

"pending" on a token's first-ever check (cluster trace runs in the background), "complete" after ~1โ€“2 minutes.

mint_authority / freeze_authority

Whether each authority is revoked, and its address if still active.

honeypot_risk / lp_locked

On the roadmap โ€” currently always null.

holder_distribution

Largest holder %, top-10 %, risk level, and holder_count โ€” the number of accounts in Solanaโ€™s top-20-largest-holders response (a real RPC limit, not a full holder count for widely-held tokens like BONK or USDC).

market

Live price, liquidity, 24h volume, 24h change, and token age from DexScreener.

Every response also includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers โ€” plus X-Credit-Balance-Usd once you have a paid tier or credit balance โ€” so your bot can track its quota without ever hitting a 429.

Webhooks for cluster_analysis completion are on the roadmap, not yet available โ€” for now, re-check the same mint after 1-2 minutes.

Rate Limiting

Every key gets 15 free requests per calendar day (UTC). Go over that with no call-credit balance and you get a 402, not a silent block โ€” top up or subscribe and the same key keeps working immediately.

X-RateLimit-Limit

Your daily quota. Empty on unlimited/admin-issued keys.

X-RateLimit-Remaining

Requests left before the free quota runs out today.

X-RateLimit-Reset

ISO timestamp of the next quota reset (next UTC midnight, or your subscription renewal date).

X-Credit-Balance-Usd

Your current call-credit balance, once you have one.

What happens over the limit

You get an HTTP 402 with a JSON body โ€” limit, used, reset_at, overage_rate_usd, and an upgrade_url. No retries needed: as soon as you top up credit or subscribe, the same key starts working again on the very next call.

HTTP/1.1 402 Payment Required
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2026-07-24T00:00:00.000Z

{
  "error": "Daily free-tier limit reached and call-credit balance is empty",
  "limit": 15,
  "used": 16,
  "reset_at": "2026-07-24T00:00:00.000Z",
  "overage_rate_usd": 0.07,
  "upgrade_url": "https://tnt-audit.com/risk-api#billing",
  "note": "Top up call credits or subscribe on the upgrade_url page โ€” overage is billed at $0.07/call once you have a balance."
}

Check X-RateLimit-Remaining before firing off a batch of calls โ€” reading a header costs nothing, a wasted 402 does not.

Versioning & Changelog

The API is versioned in the URL (/api/v1/...). Within v1, existing fields are never removed, renamed, or repurposed โ€” only added. Integrations should ignore fields they don't recognize rather than fail on them. A genuinely breaking change ships as /api/v2/..., with v1 kept running for a reasonable overlap period โ€” never a silent in-place break.

Changelog
v1.52026-07-23
  • โ€ข Published a ready-to-import Postman collection.
v1.42026-07-21
  • โ€ข Published a formal OpenAPI 3.0 spec at /openapi.json.
  • โ€ข Rebalanced upstream timeout budget for very large/liquid mints, further reducing false holder_distribution failures.
v1.32026-07-19
  • โ€ข Billing security hardening against invoice/payment-matching abuse โ€” no response schema change.
v1.22026-07-18
  • โ€ข Fixed timeouts on upstream calls that could occasionally return a raw 502 on slower, less-major tokens.
  • โ€ข Fixed holder_distribution occasionally reporting holder_count: 0 on high-volume tokens due to a swallowed RPC failure.
  • โ€ข Fixed implausible price_change_24h_percent values passed through from upstream market data.
v1.12026-07-18
  • โ€ข Added X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset headers, later joined by X-Credit-Balance-Usd.
v1.02026-07-18
  • โ€ข Public launch: GET /api/v1/token-risk โ€” safety_score, insider_clusters, mint/freeze authority, holder_distribution, market data.
  • โ€ข API-key auth, free tier + pay-per-call + subscription billing via Solana Pay.

No mailing list or webhooks yet for update announcements โ€” this page and the X / Telegram links in the footer are the way to stay current.

Limits & pricing

FREE
15 req/day
  • Full response schema
  • Insider-cluster detection
  • No credit card
PAY-PER-CALL
$0.07/call
  • Top up any amount $5โ€“$500
  • Only charged past the free 15/day
  • Drops to $0.03/call once subscribed
SUBSCRIPTION
$49/30 days
  • 1000 calls included
  • $0.03/call overage after that
  • Manual renewal โ€” no auto-charge

Paid in $MRDT / SOL / USDC via Solana Pay โ€” same payment flow as the rest of TNT House. Solana Pay can't auto-charge, so the subscription is a manual 30-day top-up, not a recurring subscription in the traditional sense.

Manage billing

Billing

Subscribe for 1000 calls/30 days, or top up pay-per-call credits. Paid in $MRDT / SOL / USDC via Solana Pay โ€” same flow as the rest of TNT House.

Don't have a key yet? Get one free above first.

Get your API key

Instant, free, no card required.

Free tier: 15 requests/day. No credit card. One key per email.