Welcome to Flintr - Documentation
Flintr is your one-stop feed for real-time Solana token launches—delivering fresh market intel the moment a new coin goes live on Pump.fun, Pump Swap, and other emerging launchpads. Traders, quants, and builders all use Flintr to spot opportunities early and focus on innovation instead of hunting for data.
Behind the scenes, Flintr streams block-0 alerts over WebSocket with sub-second latency. Every JSON payload arrives ready for bots or dashboards and includes creator wallet, mint address, supply, and liquidity-pair details. Current coverage spans Pump.fun and Pump Swap. Moonit and Raydium LaunchLab are next on the roadmap, giving developers the widest real-time Solana signal layer for custom filters and trading logic.
Real-time Signals
Receive token creation signals in real-time via WebSocket
Strategic data
Access key insights on each token to fuel your trading strategy
Easy Integration
Simple API design with examples for JavaScript, Python, and more
Quick Start Guide
Follow these steps to quickly integrate with Flintr and start receiving real-time token signals:
- Sign up for Flintr – Create an account and subscribe to a plan that suits your needs.
- Get your API key - Generate an API key from your dashboard. Keep this key secure as it will be used for all API requests.
- Connect to WebSocket - Establish a WebSocket connection to receive real-time signals as they occur.
- Process signals - Implement logic to process and act on the signals you receive according to your trading strategy.
Note: For production applications, implement reconnection logic to handle potential disconnections.
Authentication
All API requests require authentication using your API key. You can generate an API key from your Flintr dashboard.
Important: Developer accounts only have a 7-Day Free Trial access to the websocket, which starts with the first API key generation and does not reset with subsequent key generations. Once the key has expired, you'll need to upgrade your account to a Sniper tier to continue using Flintr.
Important: Keep your API key secure and never expose it in client-side code. If you believe your API key has been compromised, regenerate it immediately from your dashboard.
Important: API Keys automatically expire when the account paid subscription status changes (Developer-to-Sniper or Sniper-to-Developer). Make sure to generate a new key before integrating with your application.
WebSocket API
The WebSocket API provides real-time token signals as they happen. This is the recommended way to receive signals if your strategy requires immediate action.
Connection
To establish a WebSocket connection, connect to the following endpoint:
wss://api-v1.flintr.io/?token=[YOUR_API_KEY]Signal Format
When a new signal is available, you'll receive a message in the following formats. Note that all platforms and event types are sent on the same websocket connection. It is thus necessary to filter based on platform and event classes/types to achieve your desired results.
Token launches:
{
"timeSent": 1748036482000,
"timeDetected": 1748036479000,
"blockchainDelay": 1.695957,
"transactionTime": 0.641921,
"signature": "3Ko2…NuHv",
"event": {
"class": "token",
"platform": "pump.fun",
"type": "mint"
},
"data": {
"mint": "9A76…pump",
"metaData": {
"name": "Example token",
"symbol": "EXT",
"description": "A new mint!",
"image": "https://example.com/example.png",
"twitter": "https://x.com/example",
"website": "https://x.com/i/communities/example",
"createdOn": "https://pump.fun"
},
"tokenData": {
"mintDatetime": 1748036479000,
"updateAuthority": "TSLv…eokM",
"creator": "8U6d…as6s",
"decimals": 6,
"isBundled": true,
"bundleAmount": 0.9903592,
"latestPrice": "0.000000029822"
},
"ammData": {
"bondingCurve": "F21P…oSvK",
"associatedBondingCurve": "EBDk…X3p3",
"vaultCreatorATA": "GMVf…771s",
"vaultCreatorAuthority": "f2Z4…tVA9"
}
}
}Token graduations:
{
"timeSent": 1746387580000,
"timeDetected": 1746387578000,
"blockchainDelay": 1.588838,
"transactionTime": 0.716285,
"signature": "498b…fhhS",
"event": {
"class": "token",
"platform": "pump.fun",
"type": "graduation"
},
"data": {
"mint": "Skb3…pump",
"metaData": {
"name": "Example token",
"symbol": "EXT",
"description": "A graduation meme token",
"image": "https://example.com/example.png",
"twitter": "https://x.com/example",
"website": "https://x.com/i/communities/example"
},
"tokenData": {
"mintDatetime": 1746386003463,
"migrateInstruction": true,
"lockedLP": true,
"freezeAuthority": null,
"mintAuthority": null,
"updateAuthority": "3zDg…VNaA",
"isNative": false,
"holderDistribution": {
"0": {"address": "DXYZ…wzFbD", "amount": 212943394.916821},
"1": {"address": "8S43…JwJw", "amount": 30905022.792736},
"2": {"address": "81Yf…fQf5", "amount": 30027308.835351},
"3": {"address": "FPjM…kHwu", "amount": 27029480.942816},
"4": {"address": "8UiW…qWCP", "amount": 17044849.192236},
"5": {"address": "Fc1j…hC4z", "amount": 15582914.502887},
"6": {"address": "Fa31…HtnW", "amount": 15295954.591196},
"7": {"address": "HTxG…dxPQ", "amount": 14566477.861491},
"8": {"address": "HWka…DMVi", "amount": 14509102.054108},
"9": {"address": "EHqP…ERAx", "amount": 14337490.68874}
},
"creator": "2xKD…pFFQ",
"signer": "39az…UJjg",
"quoteAmount": "84.990359973",
"baseAmount": "206900000",
"decimals": 6
},
"ammData": {
"ammId": "CbuM…yoE6",
"poolBase": "DXYZ…zFbD",
"poolQuote": "Ec7c…iexh",
"vaultCreatorATA": "9zmj…PWU1Z",
"vaultCreatorAuthority": "9BpU…opX9D"
},
"platformData": {
"marketCapInSOL": 400.320762125,
"pumpKOTHDatetime": 1746386505000,
"pumpTrades": 1939,
"pumpLikes": 17,
"pumpReplies": 13
}
}
}We also send pings every minute to confirm the Websocket connection is still alive.
{
"time": "2025-05-04 20:31:08",
"event": {
"class": "ping"
}
}Data Models
The Flintr WebSocket feed emits real-time trading signals with rich, structured payloads. To make integration smooth, we break down the structure of each Signal into intuitive groups: general metadata, event type, token details, AMM data, and platform-specific stats.
We send two event types: (1) PINGS to confirm the websocket is running; (2) TOKENS with signal data.
PINGS
timestringDatetime of when the ping was sent out in UTC, in the YYYY-MM-DD HH:MM:SS format.
2025-05-04 20:41:10classstringParent: eventType of event sent out. Ping!
pingUNIFIED TOKEN SIGNAL SCHEMA
Legend: Required /Optional (platform-specific or nullable)
This unified schema covers both mint and graduation events. The event.type field tells you which it is: mint or graduation.
timeSentintegerUnix timestamp (ms) when Flintr emitted the signal.
1748036482000timeDetectedintegerUnix timestamp (ms) when the event was first visible on-chain.
1748036479000blockchainDelayfloatSeconds between the event happening and its visibility on the blockchain (RPC/indexer availability).
1.102580transactionTimefloatSeconds Flintr took to process and publish the signal after detection.
0.482359signaturestringSolana transaction signature associated with the event (mint or graduation).
5ydu…Wj1GEvent
classstringParent: eventClass of event. For token events this is always 'token'.
tokenplatformstringParent: eventOrigin platform/launchpad (e.g., pump.fun, letsbonk.fun, bags.so, moonshot.fun, studio.jup.ag, moonit.fun, heaven.fun, raydium.io).
pump.funtypestringParent: eventEvent type: 'mint' (new token created) or 'graduation' (moved to AMM/pool).
mintData · metaData
namestringParent: data/metaDataToken name.
Example tokensymbolstringParent: data/metaDataTicker symbol.
EXTdescriptionstringParent: data/metaDataCreator-provided description (if any).
A new mint!imagestringParent: data/metaDataToken image URL (if any).
https://example.com/example.pngtwitterstringParent: data/metaDataX/Twitter link (if any).
https://x.com/exampletelegramstringParent: data/metaDataTelegram link (if any).
https://t.me/examplewebsitestringParent: data/metaDataWebsite/community link (if any).
https://example.comcreatedOnstringParent: data/metaDataReference URL for the platform where the token was created (if available).
https://pump.funData · tokenData
mintDatetimeintegerParent: data/tokenDataUnix timestamp (ms) when the token was first minted.
1748036479000updateAuthoritystringParent: data/tokenDataAccount allowed to update token metadata (often null/renounced).
TSLv…eokMcreatorstringParent: data/tokenDataOriginal token creator address.
8U6d…as6sdecimalsintegerParent: data/tokenDataToken decimals (commonly 6; sometimes 9 on Raydium).
6freezeAuthoritystringParent: data/tokenDataFreeze authority (if any).
nullmintAuthoritystringParent: data/tokenDataMint authority (if any).
nullisBundledboolParent: data/tokenDataWhether a buy was bundled with the mint (platform-dependent).
truebundleAmountfloatParent: data/tokenDataAmount of SOL bundled with the mint, if any.
2.178217821latestPricefloatParent: data/tokenDataLatest observed price around mint time (if available).
0.000000029989migrateInstructionboolParent: data/tokenDataWhether a migration/move to AMM instruction was present (graduation).
truelockedLPboolParent: data/tokenDataWhether LP was locked/burned at graduation (if detectable).
trueholderDistributionobjectParent: data/tokenDataTop holder map at graduation time (index → {address, amount}).
{"0":{"address":"DXYZ…wzFbD","amount":212943394.916821},"1":{"address":"8S43…JwJw","amount":30905022.792736}}totalSupplystringParent: data/tokenDataTotal supply (string to avoid float precision issues).
999999999.000000signerstringParent: data/tokenDataPayer/signer for the AMM creation/graduation, if applicable.
PayR…dAMM2quoteAmountstringParent: data/tokenDataQuote asset amount deposited to the pool at graduation (string for precision).
14500baseAmountstringParent: data/tokenDataBase asset amount deposited to the pool at graduation (string for precision).
600000000Data · ammData (all variants)
bondingCurvestringParent: data/ammDataBonding curve account (Pump.fun, Moonit).
F21P…oSvKassociatedBondingCurvestringParent: data/ammDataAssociated bonding curve token account.
EBDk…X3p3vaultCreatorATAstringParent: data/ammDataCreator vault ATA (Pump.fun).
GMVf…771svaultCreatorAuthoritystringParent: data/ammDataCreator vault authority (Pump.fun).
f2Z4…tVA9backendAuthoritystringParent: data/ammDataBackend authority (Moonit).
BdA1…tYxRpoolStatestringParent: data/ammDataAMM pool state account (Raydium/Meteora/Heaven).
92bn…hF8kpoolBasestringParent: data/ammDataBase token vault.
C1vP…9nM8poolQuotestringParent: data/ammDataQuote token vault.
E4zA…5LpRquoteMintstringParent: data/ammDataQuote mint (WSOL / USDC).
So11111111111111111111111111111111111111112ammConfigstringParent: data/ammDataAMM configuration PDA.
CfgH…9VqPammTypestringParent: data/ammDataAMM type hint (e.g., 'amm', 'cpmm', 'dammv2', 'dammv1').
cpmmammIdstringParent: data/ammDataAMM identifier account (program-specific).
AMM1…32sdopenOrdersstringParent: data/ammDataOpen orders account (AMM/orderbook variants).
OOr1…KmLptargetOrdersstringParent: data/ammDataTarget orders account (AMM/orderbook variants).
TOr2…pXasmarketIdstringParent: data/ammDataMarket ID (AMM/orderbook variants).
Mkt1…Zpq2observationStatestringParent: data/ammDataObservation/account state (CPMM/Meteora).
ObsK…12sQvaultAuthoritystringParent: data/ammDataVault authority (AMM variants).
VAu1…asQppoolAuthoritystringParent: data/ammDataPool authority PDA (dAMMv2).
3BgP…7YpMeventAuthoritystringParent: data/ammDataEvent authority PDA (dAMMv2).
Evt1…pP9LammProgramstringParent: data/ammDataAMM program id (dAMMv2/dAMMv1).
PrgB…mmV2LpMintstringParent: data/ammDataLP token mint (dAMMv1).
LPMn…tLp1quoteVaultAuthoritystringParent: data/ammDataQuote vault authority (dAMMv1).
QVau…tA99baseVaultAuthoritystringParent: data/ammDataBase vault authority (dAMMv1).
BVau…bX72quoteVaultLpMintstringParent: data/ammDataQuote vault LP mint (dAMMv1).
QVLP…11nXbaseVaultLpMintstringParent: data/ammDataBase vault LP mint (dAMMv1).
BVLP…22zYquoteVaultLpstringParent: data/ammDataQuote vault LP account (dAMMv1).
QVLp…qXp1baseVaultLpstringParent: data/ammDataBase vault LP account (dAMMv1).
BVLp…bXp2quoteProtocolFeestringParent: data/ammDataProtocol fee vault for quote (dAMMv1).
QFee…1pZ9baseProtocolFeestringParent: data/ammDataProtocol fee vault for base (dAMMv1).
BFee…2kW1platformData
marketCapInSOLfloatParent: platformDataMarket cap in SOL at creation/graduation time (if available on the platform).
212.5Implementation Examples
Here's how to connect to the Flintr WebSocket API in different programming languages:
Javascript
// API key from your Flintr dashboard
const API_KEY = 'YOUR_API_KEY';
const WS_URL = `wss://api-v1.flintr.io/sub?token=${API_KEY}`;
// Connect to Flintr WebSocket API
function connect() {
const ws = new WebSocket(WS_URL);
ws.onopen = () => console.log('✅ Connected');
ws.onmessage = e => {
try {
const sig = JSON.parse(e.data);
console.log('🔔 Signal:', sig);
// …your buy logic here…
} catch {
console.error('⚠️ Invalid JSON:', e.data);
}
};
ws.onerror = e => console.error('⚠️ Error', e);
ws.onclose = () => {
console.log('🔴 Disconnected — reconnecting in 5s');
setTimeout(connect, 5000);
};
}
// kick things off
connect();
Python
import json
import time
from websocket import WebSocketApp
# API key from your Flintr dashboard
API_KEY = "YOUR_API_KEY"
WS_URL = f"wss://api-v1.flintr.io/sub?token={API_KEY}"
def on_open(ws: WebSocketApp):
print("[Flintr] Connected → streaming signals…")
def on_message(ws: WebSocketApp, message: str):
try:
sig = json.loads(message)
except json.JSONDecodeError:
print("⚠️ Malformed JSON:", message)
return
# pretty-print the entire signal
print(json.dumps(sig, indent=2))
# …your buy logic here…
def on_error(ws: WebSocketApp, error):
print(f"Error: {error}")
def on_close(ws: WebSocketApp, close_status_code, close_msg):
print(f"Disconnected (code={close_status_code}): {close_msg}")
# auto-reconnect after a pause
time.sleep(5)
print("Reconnecting…")
start_ws()
def start_ws():
ws = WebSocketApp(
WS_URL,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
# run in blocking mode with ping keep-alive
ws.run_forever(ping_interval=30, ping_timeout=10)
if __name__ == '__main__':
try:
start_ws()
except KeyboardInterrupt:
print("\nStopped by user")