Skip to content

Rug Check

Inspect token contract risk, holder and liquidity signals, and trending tokens.

GET/v1/rug-check/security

Get token security

Query parameters:

  • address: required token contract address.
  • chainId: required chain/network ID.
curl -G https://www.sharpe.ai/api/v1/rug-check/security \
  -H "Authorization: Bearer sk_live_your_key_here" \
  --data-urlencode "address=0x..." \
  --data-urlencode "chainId=1"

When the security provider (GoPlus) is temporarily unavailable, a token checked in the last 7 days answers from its last good record with stale: true and dataAsOf (when that record was fetched). Without one, a token on Ethereum, BNB Smart Chain or Base answers with a partial record from Honeypot.is, flagged partial: true: isHoneypot comes from its buy/sell simulation and every other security field is null (unknown). Live answers carry none of these fields. With nothing to answer from, the response is 503 service_unavailable with a Retry-After header; the provider throttling us is never a 429, which is only ever your own rate limit. An address the provider holds nothing for returns 404.

Every answer also carries the Rug Check score the Rug Check page shows, computed from these GoPlus fields, the token's DexScreener market figures (liquidity and 24h volume summed over its pairs on the chain, age from its oldest pair) and its GeckoTerminal holder data:

  • score.value: 0 to 100, higher is safer. Contract checks weigh 0.40, holders 0.35 and market health 0.25; hard signals cap the result (a honeypot or sell block sets 5).
  • score.verdict: safe (80 or more), caution (50 or more), risky (20 or more) or danger. score.verdict_label is the page's label for it: Looks Safe, Use Caution, Risky or Danger.
  • score.verdict_note: Trusted issuer, centralised controls when GoPlus trust-lists the token and its issuer can still mint, freeze, pause or upgrade it (those controls are listed as warnings but neither scored nor capped); otherwise null.
  • score.data_completeness: full, partial (a pillar had no data and scores a neutral 50) or none (no provider answered: value, verdict and verdict_label are null, never a default 50).
  • score.engine_version: the version of the scoring rules the value was computed under.
  • score.insights: the verdict's reasons, at most 6.
  • checks: the rows of the page's Contract Security and Token Health tables, each with pillar (contract or health), label, value, status (safe, warning, danger or neutral) and tooltip.

A market or holder figure the route could not read is unknown, never zero. A stale answer is scored from the last good record. A partial answer scores the contract checks as unknown (as when no provider answers), except that a detected honeypot scores 5 (danger).

GET/v1/rug-check/trending

The list is rebuilt every 15 minutes from GeckoTerminal by a scheduled job and is stale after 30 minutes (stale: true on the free route). With no list to serve the endpoint answers 503 (service_unavailable, Retry-After: 30).

Query parameters:

  • limit: 1 to 100. Default 50.
curl -G https://www.sharpe.ai/api/v1/rug-check/trending \
  -H "Authorization: Bearer sk_live_your_key_here" \
  --data-urlencode "limit=25"

Was this page helpful?