Check Token

Analyze a token for fraudulent activity patterns. The Fraud Engine examines on-chain behavior to identify scams, manipulation, and coordinated malicious activity across a token's liquidity pools.

Endpoint

GET https://enterprise.guardis.io/v1/fraud/check

Authentication

Include your API key in the X-API-Key header.

X-API-Key: your_api_key_here

Query Parameters

Parameter
Type
Required
Description

token_address

string

Yes

The mint address of the token to analyze


Example Request

curl -X GET "https://enterprise.guardis.io/v1/fraud/check?token_address=5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump" \
  -H "X-API-Key: your_api_key_here"

Response Format

Returns an array of fraud classifications detected for the token. Each classification represents a distinct fraud pattern identified.

{
  "token_address": "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump",
  "is_fraudulent": true,
  "risk_score": 87,
  "classification_count": 2,
  "classifications": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "token_address": "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump",
      "pair_address": "GRQB4P9MmorUwut8kb43RyHKJWo3Ce1EAvENPmNUbAhN",
      "fraud_type": "traditional_bundle",
      "confidence_score": 0.92,
      "confidence_level": "critical",
      "evidence": [
        {
          "id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
          "evidence_type": "bundled_transaction",
          "description": "5 wallets executed buy transactions in the same block within a single bundle",
          "weight": 0.85,
          "data": {
            "type": "transaction",
            "payload": {
              "signatures": [
                "5UfDuX...",
                "3KpLmN...",
                "9RtYwQ..."
              ],
              "slot": 284521789,
              "wallets": [
                "9WzDXwBbmPELPRCRjT7MjGJfvY8er2xJZxU7S4DF9mXz",
                "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
                "HkL9mNoPqRsTuVwXyZ1aBcDeFgHiJkLmNoPqRsTuVw"
              ],
              "total_value_sol": "45.892847291",
              "total_value_usd": "18023.235215",
              "is_bundled": true
            }
          },
          "collected_at": "2025-12-07T07:11:03.000Z"
        },
        {
          "id": "c3d4e5f6-a7b8-9012-cdef-ab3456789012",
          "evidence_type": "common_funding",
          "description": "All 5 buy wallets were funded by the same source wallet within 10 minutes of token creation",
          "weight": 0.78,
          "data": {
            "type": "wallet_relation",
            "payload": {
              "source_wallet": "FundingSource123abc...",
              "related_wallets": [
                "9WzDXwBbmPELPRCRjT7MjGJfvY8er2xJZxU7S4DF9mXz",
                "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
                "HkL9mNoPqRsTuVwXyZ1aBcDeFgHiJkLmNoPqRsTuVw"
              ],
              "relationship": "direct_funding",
              "strength": 0.95
            }
          },
          "collected_at": "2025-12-07T07:11:03.000Z"
        },
        {
          "id": "d4e5f6a7-b8c9-0123-def0-bc4567890123",
          "evidence_type": "supply_concentration",
          "description": "Bundle wallets acquired 47.3% of token supply at launch",
          "weight": 0.72,
          "data": {
            "type": "supply_distribution",
            "payload": {
              "token_address": "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump",
              "top_holders": [
                {
                  "wallet": "9WzDXwBbmPELPRCRjT7MjGJfvY8er2xJZxU7S4DF9mXz",
                  "percentage": "18.42",
                  "is_suspicious": true
                },
                {
                  "wallet": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
                  "percentage": "15.87",
                  "is_suspicious": true
                },
                {
                  "wallet": "HkL9mNoPqRsTuVwXyZ1aBcDeFgHiJkLmNoPqRsTuVw",
                  "percentage": "13.01",
                  "is_suspicious": true
                }
              ],
              "suspicious_percentage": "47.30",
              "gini_coefficient": 0.847
            }
          },
          "collected_at": "2025-12-07T07:11:03.000Z"
        }
      ],
      "involved_wallets": [
        {
          "address": "9WzDXwBbmPELPRCRjT7MjGJfvY8er2xJZxU7S4DF9mXz",
          "role": "attacker",
          "tokens_acquired": "184200000.000000",
          "sol_amount": "15.847291635",
          "first_seen_slot": 284521789,
          "labels": ["bundle_buyer", "high_concentration"]
        },
        {
          "address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
          "role": "bundler",
          "tokens_acquired": "158700000.000000",
          "sol_amount": "12.293847291",
          "first_seen_slot": 284521789,
          "labels": ["bundle_buyer"]
        },
        {
          "address": "FundingSource123abc...",
          "role": "funding_source",
          "tokens_acquired": "0.000000",
          "sol_amount": "50.000000000",
          "first_seen_slot": 284521750,
          "labels": ["funder", "known_scammer"]
        }
      ],
      "estimated_value_at_risk": "28472.91",
      "detection_slot": 284521790,
      "pattern_start_slot": 284521789,
      "created_at": "2025-12-07T07:11:03.000Z",
      "updated_at": "2025-12-07T07:11:03.000Z",
      "status": "active"
    },
    {
      "id": "b2c3d4e5-f6a7-8901-bcde-fg2345678901",
      "token_address": "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump",
      "pair_address": "GRQB4P9MmorUwut8kb43RyHKJWo3Ce1EAvENPmNUbAhN",
      "fraud_type": "wash_volume",
      "confidence_score": 0.74,
      "confidence_level": "high",
      "evidence": [
        {
          "id": "e5f6a7b8-c9d0-1234-efab-cd5678901234",
          "evidence_type": "circular_flow",
          "description": "Detected circular trading pattern: A→B→C→A with 12 cycles over 2 hours",
          "weight": 0.82,
          "data": {
            "type": "timing",
            "payload": {
              "timestamps": [
                "2025-12-07T08:15:00.000Z",
                "2025-12-07T08:22:00.000Z",
                "2025-12-07T08:29:00.000Z"
              ],
              "slots": [284522100, 284522200, 284522300],
              "time_deltas_ms": [420000, 420000, 420000],
              "pattern": "Regular 7-minute intervals between cycle completions"
            }
          },
          "collected_at": "2025-12-07T10:30:00.000Z"
        }
      ],
      "involved_wallets": [
        {
          "address": "CycleWallet1abc...",
          "role": "intermediary",
          "tokens_acquired": "50000000.000000",
          "sol_amount": "8.472918473",
          "first_seen_slot": 284522100,
          "labels": ["wash_trader", "circular_flow"]
        }
      ],
      "estimated_value_at_risk": "8472.91",
      "detection_slot": 284522500,
      "pattern_start_slot": 284522100,
      "created_at": "2025-12-07T10:30:00.000Z",
      "updated_at": "2025-12-07T10:30:00.000Z",
      "status": "active"
    }
  ]
}

Field Reference

Response Wrapper

Field
Type
Description

token_address

string

The analyzed token's mint address

is_fraudulent

boolean

Whether any fraud patterns were detected

risk_score

integer

Overall risk score (0-100) based on highest confidence classification

classification_count

integer

Number of distinct fraud patterns detected

classifications

array

Array of FraudClassification objects

FraudClassification

Field
Type
Description

id

string

Unique identifier (UUID) for this classification

token_address

string

The mint address of the token

pair_address

string

The on-chain address of the liquidity pool

fraud_type

string

Type of fraud pattern detected

confidence_score

number

Confidence score from 0.0 to 1.0

confidence_level

string

Human-readable confidence level

evidence

array

Evidence supporting this classification

involved_wallets

array

Wallets identified as part of the fraud

estimated_value_at_risk

string

Estimated USD value at risk

detection_slot

integer

Solana slot when fraud was first detected

pattern_start_slot

integer | null

Solana slot when the fraud pattern began

created_at

string

ISO 8601 timestamp when classification was created

updated_at

string

ISO 8601 timestamp when classification was last updated

status

string

Current status of the classification

Fraud Types

Value
Severity
Description

traditional_bundle

9/10

Attacker creates bonding curve and instantly buys significant supply using multiple wallets in a bundled transaction

late_bundle

8/10

Similar to traditional bundle but with delayed execution, allowing some organic trading before the attack

bundle_and_launder

10/10

Attacker sells tokens publicly, then secretly buys back via bundled transactions to different wallets, creating artificial volume

fake_dump

8/10

Insiders sell to create fear, then buy back through related wallets while maintaining or increasing net position

coordinated_exit

9/10

Multiple wallets from the same cluster exit in coordinated fashion, often combined with liquidity drain

wash_volume

7/10

Artificial volume generated through circular trading cycles and sell-buyback patterns with commonly funded wallets

Confidence Levels

Value
Score Range
Description

critical

0.9 - 1.0

Definitive fraud pattern with overwhelming evidence

high

0.7 - 0.9

Strong evidence of fraud

medium

0.5 - 0.7

Likely fraud pattern

low

0.0 - 0.5

Possible but uncertain

Classification Status

Value
Description

active

Newly detected, not yet reviewed

reviewed

Has been reviewed by analyst

confirmed

Confirmed as fraud

false_positive

Determined to be false positive

archived

Old classification, no longer active

Evidence

Field
Type
Description

id

string

Unique identifier (UUID) for this evidence

evidence_type

string

Type of evidence collected

description

string

Human-readable description of the evidence

weight

number

Weight/importance of this evidence (0.0-1.0)

data

object

Raw data supporting this evidence

collected_at

string

ISO 8601 timestamp when evidence was collected

Evidence Types

Value
Description

bundled_transaction

Bundled transaction detected in the same block

common_funding

Multiple wallets funded by the same source

similar_patterns

Wallets exhibiting similar transaction patterns

supply_concentration

High concentration of token supply in suspicious wallets

suspicious_timing

Suspicious timing correlation between transactions

circular_flow

Circular fund flow detected between wallets

same_block_trades

Multiple wallets trading in the same block

wallet_cluster

Identified cluster of related wallets

price_manipulation

Price manipulation pattern detected

volume_manipulation

Volume manipulation pattern detected

Evidence Data Types

Evidence data is returned as a tagged union with type and payload fields:

Transaction Evidence (type: "transaction")

Field
Type
Description

signatures

array

Transaction signatures involved

slot

integer

Block/slot number

wallets

array

Wallet addresses involved

total_value

string

Total SOL value transferred

is_bundled

boolean

Whether this was a bundled transaction

Wallet Relation Evidence (type: "wallet_relation")

Field
Type
Description

source_wallet

string

Source wallet address

related_wallets

array

Related wallet addresses

relationship

string

Type of relationship (direct_funding, indirect_funding, same_entity, coordinated_trading, common_program)

strength

number

Relationship strength (0.0-1.0)

Supply Distribution Evidence (type: "supply_distribution")

Field
Type
Description

token_address

string

Token mint address

top_holders

array

Top holders with wallet, percentage, and suspicious flag

suspicious_percentage

string

Total supply percentage held by suspicious wallets

gini_coefficient

number

Inequality measure (0.0-1.0, higher = more concentrated)

Timing Evidence (type: "timing")

Field
Type
Description

timestamps

array

ISO 8601 timestamps of suspicious events

slots

array

Solana slots involved

time_deltas_ms

array

Time differences between events in milliseconds

pattern

string

Description of the timing pattern

Involved Wallet

Field
Type
Description

address

string

Wallet address

role

string

Role in the fraud activity

tokens_acquired

string

Total tokens acquired by this wallet

sol_amount

string

SOL spent or received

first_seen_slot

integer

First transaction slot

labels

array

Labels/tags for this wallet

Wallet Roles

Value
Description

attacker

Primary attacker wallet orchestrating the fraud

bundler

Wallet that executes bundled transactions

intermediary

Intermediary wallet used to obscure fund flow

destination

Final destination wallet for tokens or funds

funding_source

Wallet that funded the attack wallets

unknown

Role could not be determined


Example Usage

JavaScript:

const tokenAddress = "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump";

const response = await fetch(
  `https://enterprise.guardis.io/v1/fraud/check?token_address=${tokenAddress}`,
  {
    headers: {
      "X-API-Key": "your_api_key_here"
    }
  }
);

const result = await response.json();

if (result.is_fraudulent) {
  console.log(`⚠️ FRAUD DETECTED - Risk Score: ${result.risk_score}/100`);
  console.log(`Found ${result.classification_count} fraud pattern(s)\n`);
  
  for (const classification of result.classifications) {
    console.log(`Fraud Type: ${classification.fraud_type}`);
    console.log(`Confidence: ${classification.confidence_level} (${(classification.confidence_score * 100).toFixed(1)}%)`);
    console.log(`Value at Risk: $${classification.estimated_value_at_risk}`);
    console.log(`Evidence: ${classification.evidence.length} pieces`);
    console.log(`Wallets Involved: ${classification.involved_wallets.length}`);
    
    // List attackers
    const attackers = classification.involved_wallets.filter(w => w.role === "attacker");
    if (attackers.length > 0) {
      console.log(`Attacker Wallets:`);
      for (const attacker of attackers) {
        console.log(`  - ${attacker.address}`);
      }
    }
    console.log("");
  }
} else {
  console.log("✅ No fraud patterns detected");
}

Python:

import requests

token_address = "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump"

response = requests.get(
    "https://enterprise.guardis.io/v1/fraud/check",
    params={"token_address": token_address},
    headers={"X-API-Key": "your_api_key_here"}
)

result = response.json()

if result["is_fraudulent"]:
    print(f"⚠️ FRAUD DETECTED - Risk Score: {result['risk_score']}/100")
    print(f"Found {result['classification_count']} fraud pattern(s)\n")
    
    for classification in result["classifications"]:
        print(f"Fraud Type: {classification['fraud_type']}")
        print(f"Confidence: {classification['confidence_level']} ({classification['confidence_score'] * 100:.1f}%)")
        print(f"Value at Risk: ${classification['estimated_value_at_risk']}")
        print(f"Evidence: {len(classification['evidence'])} pieces")
        print(f"Wallets Involved: {len(classification['involved_wallets'])}")
        
        # List attackers
        attackers = [w for w in classification["involved_wallets"] if w["role"] == "attacker"]
        if attackers:
            print("Attacker Wallets:")
            for attacker in attackers:
                print(f"  - {attacker['address']}")
        print()
else:
    print("✅ No fraud patterns detected")

Clean Response (No Fraud)

When no fraud is detected, the response will indicate a clean token:

{
  "token_address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
  "is_fraudulent": false,
  "risk_score": 0,
  "classification_count": 0,
  "classifications": []
}

Error Responses

Status Code
Description

400

Missing or invalid token_address parameter

401

Missing or invalid API key

404

Token not found in our system

422

Invalid Solana mint address format

500

Internal server error

{
  "code": 400,
  "message": "Missing required parameter: token_address"
}
{
  "code": 422,
  "message": "Invalid Solana mint address format"
}
{
  "code": 404,
  "message": "Token not found. The token may not have been indexed yet"
}

Last updated