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.

{
"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"
    }
  }
}

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

PUMP.FUN TOKENS

General properties
timeSentinteger

Unix timestamp in milliseconds of when the outgoing signal was generated by our servers.

Example:1748036482000
timeDetectedinteger

Unix timestamp in milliseconds of when the graduation event was available on the blockchain.

Example:1748036479000
blockchainDelayfloat

Time delta in seconds between the actual graduation event and its availability on the blockchain.

Example:1.695957
transactionTimestring

Time delta in seconds it took our servers to process and publish the signal once available on the blockchain.

Example:0.641921
signaturestring

Signature of the actual token graduation transaction (e.g., liquidity pool creation, migration from pump.fun, etc.)

Example:3Ko2…NuHv


Event
classstringParent: event

Type of event sent out.

Example:token
platformstringParent: event

Platform where the token was created.

Example:pump.fun
typestringParent: event

Type of token event on the platform. For new mints on pump.fun this is always 'mint'.

Example:mint


Data
mintstringParent: data

Base mint address of the token

Example:9A76…pump

Data > metaData
namestringParent: data/metaData

Name of the token.

Example:Example token
symbolstringParent: data/metaData

Short symbol/ticker of the token.

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

Metadata description of the token, if provided by the creator.

Example:A graduation meme token
imagestring
Can be null
Parent: data/metaData

Metadata image of the token, if provided by the creator.

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

Metadata X/Twitter link of the token, if provided by the creator.

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

Metadata website of the token, if provided by the creator.

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

Platform where the mint was created, if available.

Example:https://pump.fun

Data > tokenData
mintDatetimeintegerParent: data/tokenData

Unix timestamp in milliseconds of when the token was minted for the first time.

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

Account allowed to update a token's metadata.

Example:TSLv…eokM
creatorstringParent: data/tokenData

Address who originally created the token.

Example:8U6d…as6s
decimalsintegerParent: data/tokenData

Number of decimals used when calculating lamports.

Example:6
IsBundledboolParent: data/tokenData

Flag whether a Buy order was bundled with the Mint instruction. Useful for detecting potential scams.

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

Amount of SOL that has been bundled with the Mint instruction. Useful for detecting potential scams.

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

Latest price oberserved on the mint (could be block-0 bundles or subsequent fast transactions).

Example:0.000000029822

Data > ammData
bondingCurvestringParent: data/ammData

Bonding Curve associated to this mint. Part of the pool keys for passing buy/sell orders programmatically.

Example:F21P…oSvK
associatedBondingCurvestringParent: data/ammData

Token account of the Bonding Curve of the mint. Part of the pool keys for passing buy/sell orders programmatically.

Example:EBDk…X3p3
vaultCreatorATAstringParent: data/ammData

Creator vault Associated Token Account used by Pump.fun. Part of the pool keys for passing buy/sell orders programmatically.

Example:GMVf…771s
vaultCreatorAuthoritystringParent: data/ammData

Creator vault Authority used by Pump.fun. Part of the pool keys for passing buy/sell orders programmatically.

Example:f2Z4…tVA9

PUMP SWAP TOKENS

General properties
timeSentinteger

Unix timestamp in milliseconds of when the outgoing signal was generated by our servers.

Example:1746387580000
timeDetectedinteger

Unix timestamp in milliseconds of when the graduation event was available on the blockchain.

Example:1746387578000
blockchainDelayfloat

Time delta in seconds between the actual graduation event and its availability on the blockchain.

Example:1.588838
transactionTimestring

Time delta in seconds it took our servers to process and publish the signal once available on the blockchain.

Example:0.716285
signaturestring

Signature of the actual token graduation transaction (e.g., liquidity pool creation, migration from pump.fun, etc.)

Example:498b…fhhS


Event
classstringParent: event

Type of event sent out.

Example:token
platformstringParent: event

Platform where the token was created.

Example:pump.fun
typestringParent: event

Type of token event on the platform. For graduations to Pump Swap this is always 'graduation'.

Example:graduation


Data
mintstringParent: data

Base mint address of the token

Example:Skb3…pump

Data > metaData
namestringParent: data/metaData

Name of the token.

Example:Example token
symbolstringParent: data/metaData

Short symbol/ticker of the token.

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

Metadata description of the token, if provided by the creator.

Example:A graduation meme token
imagestring
Can be null
Parent: data/metaData

Metadata image of the token, if provided by the creator.

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

Metadata X/Twitter link of the token, if provided by the creator.

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

Metadata website of the token, if provided by the creator.

Example:https://x.com/i/communities/example

Data > tokenData
mintDatetimeintegerParent: data/tokenData

Unix timestamp in milliseconds of when the token was minted for the first time.

Example:1746386003463
migrateInstructionbooleanParent: data/tokenData

Flag whether the Migrate instruction was used during the token graduation. Useful for spotting scams/rugs.

Example:true
lockedLPbooleanParent: data/tokenData

Flag whether the Liquidity Pool tokens were burned. Useful for spotting scams/rugs.

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

Flag whether the Freeze Authority was released by the creator. Useful for spotting scams/rugs.

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

Flag whether the Mint Authority was released by the creator. Useful for spotting scams/rugs.

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

Account allowed to update a token's metadata.

Example:3zDg…VNaA
isNativebooleanParent: data/tokenData

Flag whether the official Pump.swap AMM was called as part of the migration event. Useful for spotting scams/rugs.

Example:true
holderDistributionJSONParent: data/tokenData

Top 10 token holders at time of graduation.

Example:{ "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} }
creatorstringParent: data/tokenData

Address who originally created the token.

Example:2xKD…pFFQ
signerstringParent: data/tokenData

Address who signed the token graduation event. Useful for spotting scams/rugs.

Example:39az…UJjg
quoteAmountfloatParent: data/tokenData

SOL amount locked as part of the liquidity pool on graduation.

Example:84.990359973
LPAmountfloatParent: data/tokenData

Tokens locked as part of the liquidity pool on graduation.

Example:206900000
decimalsintegerParent: data/tokenData

Number of decimals used when calculating lamports.

Example:6

Data > ammData
ammIdstringParent: data/ammData

AMM ID linked to the Token/SOL pair. Part of the pool keys for passing buy/sell orders programmatically.

Example:CbuM…yoE6
poolBasestringParent: data/ammData

Vault used by Pump.swap for Base tokens. Part of the pool keys for passing buy/sell orders programmatically.

Example:DXYZ…zFbD
poolQuotestringParent: data/ammData

Vault used by Pump.swap for SOL. Part of the pool keys for passing buy/sell orders programmatically.

Example:Ec7c…iexh
vaultCreatorATAstringParent: data/ammData

Creator vault Associated Token Account used by Pump.fun. Part of the pool keys for passing buy/sell orders programmatically.

Example:9zmj…PWU1Z
vaultCreatorAuthoritystringParent: data/ammData

Creator vault Authority used by Pump.fun. Part of the pool keys for passing buy/sell orders programmatically.

Example:9BpU…opX9D

Data > platformData
marketCapInSOLfloat
Can be null
Parent: data/platformData

Market cap achieved by the token (in SOL) at the time of graduation. Absence could be indicative of scams/rugs that bypassed Pump.fun.

Example:400.320762125
pumpKOTHDatetimeinteger
Can be null
Parent: data/platformData

Unix timestamp in milliseconds of when the token achieved King of the Hill on Pump.fun, if at all.

Example:1746386505000
pumpTradesinteger
Can be null
Parent: data/platformData

Number of trades passed on Pump.fun before the token graduated. Absence could be indicative of scams/rugs that bypassed Pump.fun.

Example:1939
pumpLikesinteger
Can be null
Parent: data/platformData

Number of likes on Pump.fun threads before the token graduated. Absence could be indicative of scams/rugs that bypassed Pump.fun.

Example:17
pumpRepliesinteger
Can be null
Parent: data/platformData

Number of replies on Pump.fun threads before the token graduated. Absence could be indicative of scams/rugs that bypassed Pump.fun.

Example:13

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