Public API v1

API Documentation

Integrate token verification into your app, bot, or AI agent. Free to use. No API key required. CORS enabled.

Base URL: /api/v1Rate Limit: 60 req/minCORS: EnabledCache: 5 min

Try It

/api/v1/lookup/

Quick Start

// Using the SDK (npm install solana-token-auth)
import { STA } from 'solana-token-auth';
const sta = new STA({ apiKey: 'sta_your_key' });

// Quick boolean check
const isReal = await sta.isVerified('DezXAZ8z7Pnr...');
// true

// Lookup by ticker
const bonk = await sta.lookup('BONK');
console.log(bonk.mint); // "DezXAZ8z7Pnr..."

// Batch verify (wallets)
const results = await sta.batchVerify([addr1, addr2]);

// Enriched response with market data
const enriched = await sta.verify(addr, {
  include: 'market,duplicates'
});
console.log(enriched.market?.price);
console.log(enriched.duplicates?.duplicateCount);

Endpoints

GET/api/v1/lookup/{ticker}

Look up a verified token by its ticker symbol. Returns the verified mint address and project info. This is the primary endpoint for AI agents and integrations.

Parameters

tickerstringrequired
Token ticker symbol (e.g. BONK, USDC, SOL)

Example Request

GET /api/v1/lookup/BONK

Response

{
  "success": true,
  "data": {
    "ticker": "BONK",
    "name": "Bonk",
    "mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
    "verified": true,
    "verifiedAt": "2026-01-15T12:00:00.000Z",
    "logo": "https://example.com/bonk.png",
    "website": "https://bonkcoin.com",
    "twitter": "https://x.com/bonk_inu",
    "blockchain": "Solana"
  }
}
GET/api/v1/verify/{address}

Check if a specific contract address is in our registry and whether it is verified. Use this to validate a mint address before interacting with it.

Parameters

addressstringrequired
Solana token mint address (base58)

Example Request

GET /api/v1/verify/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263

Response

{
  "success": true,
  "data": {
    "address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
    "ticker": "BONK",
    "name": "Bonk",
    "verified": true,
    "status": "verified",
    "verifiedAt": "2026-01-15T12:00:00.000Z",
    "blockchain": "Solana"
  }
}
GET/api/v1/tokens

List all verified tokens with pagination. Defaults to verified tokens only. Use the status parameter to filter.

Parameters

pageinteger
Page number (default: 1)
limitinteger
Results per page, max 100 (default: 25)
statusstring
Filter by status: verified, pending, rejected (default: verified)

Example Request

GET /api/v1/tokens?page=1&limit=10

Response

{
  "success": true,
  "data": [
    {
      "ticker": "BONK",
      "name": "Bonk",
      "mint": "DezXAZ8z...",
      "verified": true,
      "status": "verified",
      "verifiedAt": "2026-01-15T..."
    }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "totalPages": 5
  }
}
GET/api/v1/stats

Get registry statistics including total verified tokens, pending submissions, and rejections.

Example Request

GET /api/v1/stats

Response

{
  "success": true,
  "data": {
    "totalSubmissions": 156,
    "verified": 42,
    "pending": 18,
    "rejected": 96,
    "uniqueVerifiedTickers": 42,
    "registry": "Solana Token Authenticator",
    "version": "v1"
  }
}
POST/api/v1/verify/batch

Batch verify up to 100 contract addresses in a single request. Perfect for wallets that need to check multiple tokens at once.

Parameters

addressesstring[]required
Array of Solana mint addresses (max 100)

Example Request

GET POST /api/v1/verify/batch

Response

{
  "success": true,
  "data": [
    { "address": "EPjFWdd5...", "verified": true, "ticker": "USDC", "name": "USD Coin", "status": "verified" },
    { "address": "FakeAddr...", "verified": false, "ticker": null, "name": null, "status": "not_found" }
  ],
  "meta": { "total": 2, "verified": 1, "unverified": 1 }
}
GET/api/v1/duplicates/{ticker}

Get the number of tokens on Solana using the same ticker symbol. Uses Helius RPC for on-chain data with curated fallback estimates.

Parameters

tickerstringrequired
Token ticker symbol (e.g. BONK, USDC)

Example Request

GET /api/v1/duplicates/BONK

Response

{
  "success": true,
  "data": {
    "ticker": "BONK",
    "duplicateCount": 47,
    "source": "helius+registry",
    "message": "There are 47+ tokens using the ticker BONK on Solana"
  }
}
POST/api/v1/keys

Generate a free API key for higher rate limits. No key needed for basic use (30 req/min), but keys unlock 100+ req/min.

Parameters

namestringrequired
Your app or project name
emailstringrequired
Contact email (max 5 keys per email)

Example Request

GET POST /api/v1/keys

Response

{
  "success": true,
  "data": {
    "key": "sta_a1b2c3d4...",
    "name": "My Wallet App",
    "tier": "free",
    "rateLimit": 100,
    "message": "Store this key securely — pass via X-API-Key header"
  }
}

Error Handling

All endpoints return a consistent JSON response format. Check the success field to determine if the request was successful.

Success Response

{
  "success": true,
  "data": { ... },
  "meta": { ... }
}

Error Response

{
  "success": false,
  "error": "Description of what went wrong",
  "data": null
}

HTTP Status Codes

200Request successful
400Bad request — missing or invalid parameters
404Token not found in registry
429Rate limit exceeded — wait and retry
500Server error — try again later

Ready to integrate?

The API is live and free to use. No signup required. Start verifying tokens in your app today.