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 parameters404Token not found in registry429Rate limit exceeded — wait and retry500Server error — try again laterReady to integrate?
The API is live and free to use. No signup required. Start verifying tokens in your app today.