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.

< 1 s latency
📦 Full token metadata
🤖 Bot-ready JSON
🌐 Pump.fun covered

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:

  1. Sign up for Flintr – Create an account and subscribe to a plan that suits your needs.
  2. Get your API key - Generate an API key from your dashboard. Keep this key secure as it will be used for all API requests.
  3. Connect to WebSocket - Establish a WebSocket connection to receive real-time signals as they occur.
  4. 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

timestring

Datetime of when the ping was sent out in UTC, in the YYYY-MM-DD HH:MM:SS format.

Example:2025-05-04 20:41:10
classstringParent: event

Type of event sent out. Ping!

Example:ping

UNIFIED 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.

General
timeSentinteger

Unix timestamp (ms) when Flintr emitted the signal.

Example:1748036482000
timeDetectedinteger

Unix timestamp (ms) when the event was first visible on-chain.

Example:1748036479000
blockchainDelayfloat

Seconds between the event happening and its visibility on the blockchain (RPC/indexer availability).

Example:1.102580
transactionTimefloat

Seconds Flintr took to process and publish the signal after detection.

Example:0.482359
signaturestring

Solana transaction signature associated with the event (mint or graduation).

Example:5ydu…Wj1G


Event
classstringParent: event

Class of event. For token events this is always 'token'.

Example:token
platformstringParent: event

Origin platform/launchpad (e.g., pump.fun, letsbonk.fun, bags.so, moonshot.fun, studio.jup.ag, moonit.fun, heaven.fun, raydium.io).

Example:pump.fun
typestringParent: event

Event type: 'mint' (new token created) or 'graduation' (moved to AMM/pool).

Example:mint


Data · metaData
namestringParent: data/metaData

Token name.

Example:Example token
symbolstringParent: data/metaData

Ticker symbol.

Example:EXT
descriptionstring
Can be null
Parent: data/metaData

Creator-provided description (if any).

Example:A new mint!
imagestring
Can be null
Parent: data/metaData

Token image URL (if any).

Example:https://example.com/example.png
twitterstring
Can be null
Parent: data/metaData

X/Twitter link (if any).

Example:https://x.com/example
telegramstring
Can be null
Parent: data/metaData

Telegram link (if any).

Example:https://t.me/example
websitestring
Can be null
Parent: data/metaData

Website/community link (if any).

Example:https://example.com
createdOnstring
Can be null
Parent: data/metaData

Reference URL for the platform where the token was created (if available).

Example:https://pump.fun


Data · tokenData
mintDatetimeintegerParent: data/tokenData

Unix timestamp (ms) when the token was first minted.

Example:1748036479000
updateAuthoritystring
Can be null
Parent: data/tokenData

Account allowed to update token metadata (often null/renounced).

Example:TSLv…eokM
creatorstringParent: data/tokenData

Original token creator address.

Example:8U6d…as6s
decimalsintegerParent: data/tokenData

Token decimals (commonly 6; sometimes 9 on Raydium).

Example:6
freezeAuthoritystring
Can be null
Parent: data/tokenData

Freeze authority (if any).

Example:null
mintAuthoritystring
Can be null
Parent: data/tokenData

Mint authority (if any).

Example:null
isBundledboolParent: data/tokenData

Whether a buy was bundled with the mint (platform-dependent).

Example:true
bundleAmountfloat
Can be null
Parent: data/tokenData

Amount of SOL bundled with the mint, if any.

Example:2.178217821
latestPricefloat
Can be null
Parent: data/tokenData

Latest observed price around mint time (if available).

Example:0.000000029989
migrateInstructionbool
Can be null
Parent: data/tokenData

Whether a migration/move to AMM instruction was present (graduation).

Example:true
lockedLPbool
Can be null
Parent: data/tokenData

Whether LP was locked/burned at graduation (if detectable).

Example:true
holderDistributionobject
Can be null
Parent: data/tokenData

Top holder map at graduation time (index → {address, amount}).

Example:{"0":{"address":"DXYZ…wzFbD","amount":212943394.916821},"1":{"address":"8S43…JwJw","amount":30905022.792736}}
totalSupplystring
Can be null
Parent: data/tokenData

Total supply (string to avoid float precision issues).

Example:999999999.000000
signerstring
Can be null
Parent: data/tokenData

Payer/signer for the AMM creation/graduation, if applicable.

Example:PayR…dAMM2
quoteAmountstring
Can be null
Parent: data/tokenData

Quote asset amount deposited to the pool at graduation (string for precision).

Example:14500
baseAmountstring
Can be null
Parent: data/tokenData

Base asset amount deposited to the pool at graduation (string for precision).

Example:600000000


Data · ammData (all variants)
bondingCurvestring
Can be null
Parent: data/ammData

Bonding curve account (Pump.fun, Moonit).

Example:F21P…oSvK
associatedBondingCurvestring
Can be null
Parent: data/ammData

Associated bonding curve token account.

Example:EBDk…X3p3
vaultCreatorATAstring
Can be null
Parent: data/ammData

Creator vault ATA (Pump.fun).

Example:GMVf…771s
vaultCreatorAuthoritystring
Can be null
Parent: data/ammData

Creator vault authority (Pump.fun).

Example:f2Z4…tVA9
backendAuthoritystring
Can be null
Parent: data/ammData

Backend authority (Moonit).

Example:BdA1…tYxR
poolStatestring
Can be null
Parent: data/ammData

AMM pool state account (Raydium/Meteora/Heaven).

Example:92bn…hF8k
poolBasestring
Can be null
Parent: data/ammData

Base token vault.

Example:C1vP…9nM8
poolQuotestring
Can be null
Parent: data/ammData

Quote token vault.

Example:E4zA…5LpR
quoteMintstring
Can be null
Parent: data/ammData

Quote mint (WSOL / USDC).

Example:So11111111111111111111111111111111111111112
ammConfigstring
Can be null
Parent: data/ammData

AMM configuration PDA.

Example:CfgH…9VqP
ammTypestring
Can be null
Parent: data/ammData

AMM type hint (e.g., 'amm', 'cpmm', 'dammv2', 'dammv1').

Example:cpmm
ammIdstring
Can be null
Parent: data/ammData

AMM identifier account (program-specific).

Example:AMM1…32sd
openOrdersstring
Can be null
Parent: data/ammData

Open orders account (AMM/orderbook variants).

Example:OOr1…KmLp
targetOrdersstring
Can be null
Parent: data/ammData

Target orders account (AMM/orderbook variants).

Example:TOr2…pXas
marketIdstring
Can be null
Parent: data/ammData

Market ID (AMM/orderbook variants).

Example:Mkt1…Zpq2
observationStatestring
Can be null
Parent: data/ammData

Observation/account state (CPMM/Meteora).

Example:ObsK…12sQ
vaultAuthoritystring
Can be null
Parent: data/ammData

Vault authority (AMM variants).

Example:VAu1…asQp
poolAuthoritystring
Can be null
Parent: data/ammData

Pool authority PDA (dAMMv2).

Example:3BgP…7YpM
eventAuthoritystring
Can be null
Parent: data/ammData

Event authority PDA (dAMMv2).

Example:Evt1…pP9L
ammProgramstring
Can be null
Parent: data/ammData

AMM program id (dAMMv2/dAMMv1).

Example:PrgB…mmV2
LpMintstring
Can be null
Parent: data/ammData

LP token mint (dAMMv1).

Example:LPMn…tLp1
quoteVaultAuthoritystring
Can be null
Parent: data/ammData

Quote vault authority (dAMMv1).

Example:QVau…tA99
baseVaultAuthoritystring
Can be null
Parent: data/ammData

Base vault authority (dAMMv1).

Example:BVau…bX72
quoteVaultLpMintstring
Can be null
Parent: data/ammData

Quote vault LP mint (dAMMv1).

Example:QVLP…11nX
baseVaultLpMintstring
Can be null
Parent: data/ammData

Base vault LP mint (dAMMv1).

Example:BVLP…22zY
quoteVaultLpstring
Can be null
Parent: data/ammData

Quote vault LP account (dAMMv1).

Example:QVLp…qXp1
baseVaultLpstring
Can be null
Parent: data/ammData

Base vault LP account (dAMMv1).

Example:BVLp…bXp2
quoteProtocolFeestring
Can be null
Parent: data/ammData

Protocol fee vault for quote (dAMMv1).

Example:QFee…1pZ9
baseProtocolFeestring
Can be null
Parent: data/ammData

Protocol fee vault for base (dAMMv1).

Example:BFee…2kW1


platformData
marketCapInSOLfloat
Can be null
Parent: platformData

Market cap in SOL at creation/graduation time (if available on the platform).

Example:212.5

Implementation 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")