Developer API

Build with JettonGuard.

A typed REST API that returns the same <code>ScanResult</code> the web frontend renders. Use it to power your trading bot, alpha group, launchpad badge, or wallet integration.

Authentication

The public endpoints are unauthenticated and rate-limited (5 req/min per IP). Enterprise customers receive an API key that bypasses limits and exposes private endpoints.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.jettonguard.com/scan/EQAv…

Need a key? Email kirillgusejnov41@gmail.com.

Quick examples

Scan a jetton (one-line curl)

curl https://api.jettonguard.com/scan/EQAvDfWFG0XfoSDjqXX6IIm_PnAcs83KTbgFJ8AawvHKkNs1

Force a fresh scan (Python)

import httpx

resp = httpx.post(
    "https://api.jettonguard.com/scan",
    json={"address": "EQAv…", "bypass_cache": True},
    timeout=20,
)
data = resp.json()
print(data["verdict"], data["score"])
for flag in data["top_flags"]:
    print(f"  {flag['severity']}: {flag['title']}")

Score history for a chart (TypeScript)

type Point = { scanned_at: string; score: number };

const r = await fetch(
  `https://api.jettonguard.com/scan/${address}/history?limit=30`,
);
const history: Point[] = (await r.json()).map((s: any) => ({
  scanned_at: s.scanned_at,
  score: s.score,
}));

Endpoints

GET
/scan/{address}

Run a scan. Returns cached result if scanned within the last 10 minutes.

ScanResult
POST
/scan

Run a scan with options (force re-scan via bypass_cache).

ScanResult
GET
/scan/{address}/history

Previous scans for an address, newest first. Useful for trend charts.

ScanResult[]
GET
/healthz

Liveness probe. Returns service version.

{ status, version }

Full OpenAPI schema is auto-generated at /docs (Swagger UI) and /openapi.json.

Response shape

Every scan endpoint returns the same JSON. Full type definitions are in our open-source TS package.

interface ScanResult {
  address: string;                 // EQ...
  jetton: JettonInfo;
  scanned_at: string;              // ISO-8601
  score: number;                   // 0–100
  verdict: "safe" | "caution" | "high_risk" | "likely_rug";
  verdict_text: string;            // human one-liner
  summary: string;                 // LLM-generated, may be empty
  subscores: CategorySubscore[];   // 5 categories
  top_flags: RiskFlag[];           // most important findings
  metrics: TokenMetrics;           // mcap, price, liquidity, holders, age, change_24h
  holders_breakdown: HolderGroup[];// donut-chart slices
  volume_7d: number[];             // sparkline USD volume, oldest first
  icon_fallback: IconFallback | null;
  duration_ms: number;
}

Rate limits & SLA

  • Free / unauthenticated: 5 req/min per IP. Each scan is cached for 10 minutes, so polling repeatedly returns the cache instantly.
  • Pro (15 TON/mo): 60 req/min, private scan history.
  • Enterprise (200 TON/mo): 50,000 req/day, webhooks, custom red-flag rules, 99.5% SLA, white-label.
Need volume access or custom integration?

Trading bot, launchpad badge, wallet integration — let's talk.

Contact us