The Token Creations API provides real-time WebSocket notifications for token deployment events across Solana, including SPL tokens, Token-2022 standard implementations, and NFT collection launches.
WebSocket Endpoint
wss://api.nolimitnodes.com/socket?apikey=YOUR_API_KEY
Subscribe
{
"method" : "dataSubscribe" ,
"params" : {
"referenceId" : "TOKEN_CREATIONS" ,
"streams" : [
{
"stream" : "tokenCreationsSubscribe" ,
"params" : {
"creation_type" : "mint" ,
"program_id" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" ,
"standard" : "spl-token-2022"
}
}
]
},
"id" : 1
}
Filter Parameters
Filter by specific token mint address.
Filter by creation type. Values include "mint" (shorthand for all mint operations) or the full event name such as "spl_token_initialize_mint2_inner".
Filter by program ID (e.g., "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA").
Filter by token decimal places.
All filter parameters are optional. Omit all to receive every token creation event.
Subscription Confirmation
{
"status" : "Subscribed to tokenCreations" ,
"subscription_id" : "77ea428b-8572-4efb-8d3d-492454631d32" ,
"stream" : "tokenCreationsSubscribe" ,
"reference_id" : "TOKEN_CREATIONS"
}
Token Creation Event
{
"method" : "tokenCreationsSubscribe" ,
"subscription_id" : "77ea428b-8572-4efb-8d3d-492454631d32" ,
"result" : {
"mint_address" : "Dwzu6sNdC2VafKMN9cPHUZWGfT5tfX1mkqvCSBDZpump" ,
"decimals" : 6 ,
"mint_authority" : "TSLvdd1pWpHVjahSpsvCXUbgwsL3JAcvokwaKt1eokM" ,
"freeze_authority" : null ,
"creation_type" : "spl_token_initialize_mint2_inner" ,
"program_id" : "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" ,
"block_num" : 366363984 ,
"block_time" : 1757694473 ,
"transaction_signature" : "2QdTKjKCLy8bTeXDNAAnFY7HWVeDYtagbZ16Fia1rh12ThtXL7ictXNiVjrfmJLzBhyjiL9oxk9J78asJNK5DHao"
}
}
Response Fields
Number of decimal places for the token.
Address authorized to mint new tokens (null if renounced).
Address authorized to freeze token accounts (null if renounced).
Type of token creation event (e.g., "spl_token_initialize_mint2_inner").
Program ID that created the token.
Block number where the token was created.
Unix timestamp of the block.
Solana transaction signature.
mint_address — The on-chain address of the newly created token.
decimals — The number of decimal places (e.g., 6 for USDC-like tokens, 9 for SOL-like tokens).
creation_type — Indicates how the token was initialized, useful for distinguishing between standard SPL and Token-2022 creations.
Authorities
mint_authority — The address that can mint new tokens. A null value means the authority has been renounced, which is generally considered safer for holders.
freeze_authority — The address that can freeze token accounts. A null value means no one can freeze accounts.
A null value for mint_authority or freeze_authority indicates the authority has been renounced, which is generally considered safer for token holders.
Transaction Details
program_id — The token program used (SPL Token or Token-2022).
block_num / block_time — Block number and timestamp for ordering events.
transaction_signature — Full transaction signature for on-chain verification.
Unsubscribe
Request
{
"method" : "dataUnsubscribe" ,
"params" : {
"subscriptionIds" : [ "77ea428b-8572-4efb-8d3d-492454631d32" ],
"referenceId" : "UNSUB_REF"
}
}
Response
{
"status" : "Unsubscribed" ,
"unsubscribed_ids" : [ "77ea428b-8572-4efb-8d3d-492454631d32" ],
"reference_id" : "UNSUB_REF"
}
Code Examples
const WebSocket = require ( "ws" );
class TokenCreationMonitor {
constructor ( apiKey ) {
this . apiKey = apiKey ;
this . ws = null ;
this . tokens = {};
this . creatorStats = {};
}
connect () {
this . ws = new WebSocket (
`wss://api.nolimitnodes.com/socket?apikey= ${ this . apiKey } `
);
this . setupHandlers ();
}
setupHandlers () {
this . ws . on ( "open" , () => {
console . log ( "Connected to Token Creations stream" );
this . subscribe ();
});
this . ws . on ( "message" , ( data ) => {
const message = JSON . parse ( data );
if ( message . method === "tokenCreationsSubscribe" ) {
this . processToken ( message . result );
} else {
console . log ( "Info:" , JSON . stringify ( message ));
}
});
this . ws . on ( "error" , ( error ) => {
console . error ( "WebSocket error:" , error . message );
});
this . ws . on ( "close" , () => {
console . log ( "Connection closed. Reconnecting in 5s..." );
setTimeout (() => this . connect (), 5000 );
});
}
subscribe ( filters = {}) {
this . ws . send (
JSON . stringify ({
method: "dataSubscribe" ,
params: {
referenceId: "TOKEN_CREATIONS" ,
streams: [
{
stream: "tokenCreationsSubscribe" ,
params: filters ,
},
],
},
id: 1 ,
})
);
}
processToken ( token ) {
// Store token data
this . tokens [ token . mint_address ] = token ;
// Track creator activity
const creator = token . mint_authority || "unknown" ;
if ( ! this . creatorStats [ creator ]) {
this . creatorStats [ creator ] = { count: 0 , tokens: [] };
}
this . creatorStats [ creator ]. count ++ ;
this . creatorStats [ creator ]. tokens . push ( token . mint_address );
// Risk assessment
const risks = [];
if ( token . mint_authority ) risks . push ( "mint_authority_active" );
if ( token . freeze_authority ) risks . push ( "freeze_authority_active" );
if ( this . creatorStats [ creator ]. count > 5 ) risks . push ( "prolific_creator" );
const riskLevel = risks . length === 0 ? "LOW" : risks . length === 1 ? "MEDIUM" : "HIGH" ;
console . log ( ` \n New Token Created [Risk: ${ riskLevel } ]` );
console . log ( ` Mint: ${ token . mint_address } ` );
console . log ( ` Decimals: ${ token . decimals } ` );
console . log ( ` Mint Authority: ${ token . mint_authority || "Renounced" } ` );
console . log ( ` Freeze Authority: ${ token . freeze_authority || "Renounced" } ` );
console . log ( ` Type: ${ token . creation_type } ` );
console . log ( ` Program: ${ token . program_id } ` );
console . log ( ` Block: ${ token . block_num } | Time: ${ token . block_time } ` );
if ( risks . length > 0 ) {
console . log ( ` Risks: ${ risks . join ( ", " ) } ` );
}
}
}
// Usage
const monitor = new TokenCreationMonitor ( "YOUR_API_KEY" );
monitor . connect ();
Best Practices
Authority & Security Analysis
Check mint_authority on every new token. Renounced (null) is safer for holders as no new tokens can be minted.
Check freeze_authority similarly. A non-null freeze authority means accounts can be frozen at any time.
Tokens with both authorities renounced are generally lower risk but not immune to other attack vectors.
Monitor for tokens where authorities are set to known program addresses vs. individual wallets.
Creator Due Diligence
Track creator addresses to build reputation profiles over time.
Flag creators who deploy many tokens in rapid succession, which may indicate automated or spam deployments.
Cross-reference creators against known deployer addresses from established projects.
Use the program_id to distinguish between standard SPL tokens and Token-2022 tokens, which may have additional extension capabilities.
Risk Management
Implement scoring systems that combine authority status, creator history, and token metadata.
Set alerts for high-risk patterns such as active mint + freeze authorities from unknown creators.
Monitor for Token-2022 tokens with transfer fee extensions or permanent delegate features.
Never interact with newly created tokens without verifying the creator and token configuration on-chain.