API Documentation
Integrate token verification into your app, bot, or AI agent. Free to use. No API key required. CORS enabled.
Try It
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
/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
tickerstringrequiredExample Request
GET /api/v1/lookup/BONKResponse
{
"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"
}
}/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
addressstringrequiredExample Request
GET /api/v1/verify/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263Response
{
"success": true,
"data": {
"address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"ticker": "BONK",
"name": "Bonk",
"verified": true,
"status": "verified",
"verifiedAt": "2026-01-15T12:00:00.000Z",
"blockchain": "Solana"
}
}/api/v1/tokensList all verified tokens with pagination. Defaults to verified tokens only. Use the status parameter to filter.
Parameters
pageintegerlimitintegerstatusstringExample Request
GET /api/v1/tokens?page=1&limit=10Response
{
"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
}
}/api/v1/searchSearch verified tokens by name or ticker symbol. Returns up to 25 results.
Parameters
qstringrequiredExample Request
GET /api/v1/search?q=bonkResponse
{
"success": true,
"data": [
{
"ticker": "BONK",
"name": "Bonk",
"mint": "DezXAZ8z...",
"verified": true
}
],
"meta": {
"query": "bonk",
"count": 1
}
}/api/v1/statsGet registry statistics including total verified tokens, pending submissions, and rejections.
Example Request
GET /api/v1/statsResponse
{
"success": true,
"data": {
"totalSubmissions": 156,
"verified": 42,
"pending": 18,
"rejected": 96,
"uniqueVerifiedTickers": 42,
"registry": "Solana Token Authenticator",
"version": "v1"
}
}/api/v1/verify/batchBatch verify up to 100 contract addresses in a single request. Perfect for wallets that need to check multiple tokens at once.
Parameters
addressesstring[]requiredExample Request
GET POST /api/v1/verify/batchResponse
{
"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 }
}/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
tickerstringrequiredExample Request
GET /api/v1/duplicates/BONKResponse
{
"success": true,
"data": {
"ticker": "BONK",
"duplicateCount": 47,
"source": "helius+registry",
"message": "There are 47+ tokens using the ticker BONK on Solana"
}
}/api/v1/keysGenerate a free API key for higher rate limits. No key needed for basic use (30 req/min), but keys unlock 100+ req/min.
Parameters
namestringrequiredemailstringrequiredExample Request
GET POST /api/v1/keysResponse
{
"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 successful400Bad request. Missing or invalid parameters.404Token not found in registry429Rate 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.