Endpoints
1. Analyze Token
Endpoint: /analyze
Method: POST
Description: Analyzes a Solana token address to provide a comprehensive report, including holder distribution, financial metrics, and AI-based classifications. This is a full in-depth report and often takes some time to be assembled on the server side. We recommend other endpoints unless you need the full report. Analyze token will only return a valid response if the token has high enough volume for valid signal to noise and a marketcap/FDV under 100m.
Request
Headers:
Content-Type: application/json
Body:
{
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
Response
Success (200 OK):
{
"message": "Address: <code>E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE</code>\n\n<b>Name: Example Token (EXT)</b>\n<b>Socials:</b> <a href="https://t.me/example">Telegram</a> <a href="https://twitter.com/example">Twitter</a> <a href="https://example.com">Website</a>\n\nš¤<u>AI Degen (4 hour)</u>š¤\nš - Bullish: Could run\n\nš<u>Ratings</u>š\nName Originality: 8.5/10\nDescription Originality: 7.3/10\nMemeability: 9.2/10\n\nš¦<u>Financials</u>š¦\nLiquidity: $1.23M\nLatest Marketcap: $4.56M\n24 Hour Volume: $789K\n\nš°ļø<b><u>Last 30 Minutes</u></b>š°ļø\nBuys/Sells: 150/120\nPrice Change: +2.5%\n\nš<u>Security</u>š\nTotal Holders: 350\n<a href="https://rugcheck.xyz/tokens/E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE">Locked LP: $500K š</a>\nPercent Locked: 40.65%\nToken Age: 180 days - 5 hours\n\nš§āš¤āš§<u>Top 20 Holders</u>š§āš¤āš§\n45.0% - Individuals\n 1 - 5.0% \n 2 - 4.5% \n 3 - 4.0% \n{...}\n50 - š± New Wallets\n\nš³<u>Whale Map (Top 50 Holders)</u>š³\nLargest SOL Balance: 100 SOL (#1)\nSmallest SOL Balance: < 1 SOL\n\n<a href="https://solscan.io/account/holder_address">š¦ (0 - 10 SOL) 10\nš (10 - 100 SOL) 5\nš¬ (100 - 500 SOL) 3\nš¦ (500 - 1000 SOL) 2\nš³ (1000+) 0\nSeer v2.15 S \n<b>Powered by Dither AI</b>\n\n<b>Disclaimer:</b> Seer is an experimental research tool. Seer is not intended as financial advice and any actions taken after consuming seer content is of the sole volition of the action taker."
}
2. Get Token Details
Endpoint: /token-details
Method: POST
Description: Fetches detailed information about a Solana token, including symbol, name, description, authorities, and market cap.
Request
Headers:
Content-Type: application/json
Body:
{
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
Response
Success (200 OK):
{
"symbol": "EXT",
"name": "Example Token",
"description": "This is an example token for demonstration purposes.",
"mint_enabled": true,
"freeze_enabled": false,
"market_cap": 4560000.0
}
3. Get Memeability Score
Endpoint: /memeability
Method: POST
Description: Retrieves the memeability score of a token based on its image URL.
Request
Headers:
Content-Type: application/json
Body:
{
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
Response
Success (200 OK):
{
"memeability_score": 9.2
}
4. Get Originality Rankings
Endpoint: /originality
Method: POST
Description: Provides originality rankings for the token's name and description based on similarity scores. Note - We are aware of a current limitation on this endpoint. Older tokens may return an 1/10 score despite originality. We are aware and working on this issue.
Request
Headers:
Content-Type: application/json
Body:
{
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
Response
Success (200 OK):
{
"description_originality_rank": 7.3,
"name_originality_rank": 8.5
}
5. Get Classification
Endpoint: /classification
Method: POST
Description: Classifies the token address based on AI analysis, providing classification probabilities and the most likely class. Classifications are based on the next 4 hours and are a demonstration of Dither AI technology. They are not intended as financial advice. This endpoint will only work if the token has a requisite volume for proper signal to noise ratio.
Request
Headers:
Content-Type: application/json
Body:
{
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
Response
Success (200 OK):
{
"classification": "š» - Bearish: could hibernate 0.00%\nš¢ - Slow/limited total movement 0.00%\nš - Bullish: Could run 69.99%\nš¦ - Unicorn 30.01%",
"most_likely_class": 2
}
Classification Mapping
The classification results are based on the following categories:
Class Index |
Description |
0 |
š» - Bearish: could hibernate |
1 |
š¢ - Slow/limited total movement |
2 |
š - Bullish: Could run |
3 |
š¦ - Unicorn |
Example:
curl -X POST https://api.dith.ai/classification \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
{"classification":"š» - Bearish: could hibernate 0.00%\nš¢ - Slow/limited total movement 0.00%\nš - Bullish: Could run 69.99%\nš¦ - Unicorn 30.01%","most_likely_class":2}
6. Get Recent Tokens
Endpoint: /recent-tokens
Method: GET
Description: Retrieves the most recent token entries from the database, including comprehensive token data such as financial metrics, social links, and holder analysis.
Request
Query Parameters:
{
"limit": 10 // Optional. Number of tokens to retrieve (min: 1, max: 100)
}
Response
Success (200 OK):
{
"success": true,
"count": 10,
"tokens": [
{
"mint": "string",
"name": "string",
"symbol": "string",
"description": "string",
"usd_market_cap": number,
"twitter": "string",
"telegram": "string",
"website": "string",
"dexscreener_paid": boolean,
"meta_analysis": {
"meta_theme_1": "string - First major theme identified from recent tokens",
"meta_theme_2": "string - Second major theme identified from recent tokens",
"meta_theme_3": "string - Third major theme identified from recent tokens",
"meta_match": boolean,
"meta": "string - The specific theme of the new token"
},
"creator_address": "string",
"creator_tokens_bought": number,
"creator_tokens_sold": number,
"total_supply": number,
"burned_tokens": number,
"created_timestamp": "string",
"market_cap": number,
"reply_count": number,
"nsfw": boolean,
"is_currently_live": boolean,
"current_bonding_timestamp": "string",
"memeability": number,
"token_originality": number,
"image_duplicate": "string",
"supply_held_by_top_holders": number,
"new_wallets": number,
"hours": number,
"minutes": number,
"largest_sol_balance": number,
"smallest_sol_balance": number,
"shrimp_count": number,
"fish_count": number,
"dolphin_count": number,
"shark_count": number,
"whale_count": number,
"image_uri": "string",
"whale_map": "string",
"creator_transaction_count": number,
"creator_funding_signature": "string",
"creator_associated_tokens": "string",
"dexscreener_trending_bar_ads": boolean,
"dexscreener_general_ads": boolean,
"top_holders_formatted": "string",
"largest_holder_position": number,
"formatted_market_cap": "string",
"formatted_total_supply": "string",
"formatted_burned_tokens": "string",
"meta_match": boolean,
"meta_description": "string",
"whale_distribution": "string",
"baby_wallets": number
}
]
}
Example Usage
Below are examples demonstrating how to interact with the API using cURL and Python's requests library.
Using cURL
Example: Analyze Token
curl -X POST https://api.dith.ai/analyze \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
Response:
{
"message": "Address: <code>E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE</code>\n\n<b>Name: Example Token (EXT)</b>..."
}
Example: Get Token Details
curl -X POST https://api.dith.ai/token-details \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
Response:
{
"symbol": "EXT",
"name": "Example Token",
"description": "This is an example token for demonstration purposes.",
"mint_enabled": true,
"freeze_enabled": false,
"market_cap": 4560000.0
}
Example: Get Memeability Score
curl -X POST https://api.dith.ai/memeability \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
Response:
{
"memeability_score": 9.2
}
Example: Get Originality Rankings
curl -X POST https://api.dith.ai/originality \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
Response:
{
"description_originality_rank": 7.3,
"name_originality_rank": 8.5
}
Example: Get Classification
curl -X POST https://api.dith.ai/classification \
-H "Content-Type: application/json" \
-d '{"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"}'
Response:
{
"classification": "š» - Bearish: could hibernate 0.00%\nš¢ - Slow/limited total movement 0.00%\nš - Bullish: Could run 69.99%\nš¦ - Unicorn 30.01%",
"most_likely_class": 2
}
Using Python (Requests)
Example: Get Memeability Score
import requests
url = "https://api.dith.ai/memeability"
payload = {
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Memeability Score: {data['memeability_score']}")
else:
print(f"Error: {response.json()['error']}")
Output:
Memeability Score: 9.2
Example: Get Originality Rankings
import requests
url = "https://api.dith.ai/originality"
payload = {
"address": "E1kvzJNxShvvWTrudokpzuc789vRiDXfXG3duCuY6ooE"
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Name Originality Rank: {data['name_originality_rank']}/10")
print(f"Description Originality Rank: {data['description_originality_rank']}/10")
else:
print(f"Error: {response.json()['error']}")
Output:
Name Originality Rank: 8.5/10
Description Originality Rank: 7.3/10