Messages
{
"type": "join",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}{
"type": "leave",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}{
"type": "message",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"data": {
"signature": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF",
"slot": 459159504,
"timestamp": 1792483949,
"commitment": "processed",
"swapTx": false,
"transfers": [
{
"id": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF:2:-1",
"signature": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF",
"slot": 459159504,
"timestamp": 1792483949,
"commitment": "processed",
"instruction": 2,
"inner": -1,
"type": "spl",
"program": "spl-token",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"decimals": 6,
"amount": "25000000",
"uiAmount": "25",
"from": {
"address": "C2RjaMN2NeYAErS6KiBjPQhHCt95J8mCmmLiQqZXPisR",
"owner": "BfG7WYmravgBhNdWpGoiFmF8L1duw2vdqdDHiZid2hoJ",
"postBalance": "71035743"
},
"to": {
"address": "D9CEogjHA6CpS12F8St9zpSco7pQKJB5uR1RqDsuzQZk",
"owner": "GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3",
"postBalance": "656987841913"
},
"swapTx": false
}
],
"balances": [
{
"owner": "BfG7WYmravgBhNdWpGoiFmF8L1duw2vdqdDHiZid2hoJ",
"account": "C2RjaMN2NeYAErS6KiBjPQhHCt95J8mCmmLiQqZXPisR",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"program": "spl-token",
"decimals": 6,
"pre": "96035743",
"post": "71035743",
"change": "-25000000",
"cause": "transfer"
},
{
"owner": "GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3",
"account": "D9CEogjHA6CpS12F8St9zpSco7pQKJB5uR1RqDsuzQZk",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"program": "spl-token",
"decimals": 6,
"pre": "656962841913",
"post": "656987841913",
"change": "25000000",
"cause": "transfer"
}
]
}
}Websockets
Token transfers
Todas las transferencias de un token SPL o Token-2022, entre cualquier wallet. Sala: transfer:{mint}. balances lista los cambios de saldo del token en la transacción. No disponible para SOL: usa una sala de wallet o transfer:So11111111111111111111111111111111111111112:{wallet}. Añade :enriched para obtener metadatos del token, valores en USD e identidades de wallets. Los eventos son provisionales con compromiso processed.
WSS
/
WebSocket example
const mint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC
const room = `transfer:${mint}`; // or `${...}:enriched` for token metadata, USD values and wallet identities
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");
ws.addEventListener("open", () => {
ws.send(JSON.stringify({ type: "join", room }));
});
ws.addEventListener("message", (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "ping") return ws.send(JSON.stringify({ type: "pong" }));
if (msg.type !== "message") return;
const { signature, transfers, balances } = msg.data;
for (const t of transfers) {
console.log(signature, t.direction ?? "", t.uiAmount, t.mint, t.from.owner, "->", t.to.owner);
}
});
uiAmount exacto. Una transferencia que forma parte de un swap ya emitido en las salas de trades no se vuelve a enviar; lo que queda de un swap (comisiones de plataforma, propinas, pagos) llega con swapTx: true. Consulta la guía de transferencias para combinar el historial con las actualizaciones en vivo.
SDK Example
import { Datastream } from '@solana-tracker/data-api';
const dataStream = new Datastream({
wsUrl: 'wss://datastream.solanatracker.io/YOUR_API_KEY',
});
dataStream.on('error', console.error);
await dataStream.connect();
const sub = dataStream.subscribe.transfers.token('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', { enriched: true }).on((data) => {
console.log(data);
});
// sub.unsubscribe();
Messages
{
"type": "join",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}{
"type": "leave",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}{
"type": "message",
"room": "transfer:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"data": {
"signature": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF",
"slot": 459159504,
"timestamp": 1792483949,
"commitment": "processed",
"swapTx": false,
"transfers": [
{
"id": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF:2:-1",
"signature": "2VxcHt8HKSt2T2EuUZLyWPsEKz4H4BPreWV28aZDEzoaHG4Fsu232oKKeQqpVqsSYaf3vv8KN7UoZ4MPJA8vw9EF",
"slot": 459159504,
"timestamp": 1792483949,
"commitment": "processed",
"instruction": 2,
"inner": -1,
"type": "spl",
"program": "spl-token",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"decimals": 6,
"amount": "25000000",
"uiAmount": "25",
"from": {
"address": "C2RjaMN2NeYAErS6KiBjPQhHCt95J8mCmmLiQqZXPisR",
"owner": "BfG7WYmravgBhNdWpGoiFmF8L1duw2vdqdDHiZid2hoJ",
"postBalance": "71035743"
},
"to": {
"address": "D9CEogjHA6CpS12F8St9zpSco7pQKJB5uR1RqDsuzQZk",
"owner": "GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3",
"postBalance": "656987841913"
},
"swapTx": false
}
],
"balances": [
{
"owner": "BfG7WYmravgBhNdWpGoiFmF8L1duw2vdqdDHiZid2hoJ",
"account": "C2RjaMN2NeYAErS6KiBjPQhHCt95J8mCmmLiQqZXPisR",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"program": "spl-token",
"decimals": 6,
"pre": "96035743",
"post": "71035743",
"change": "-25000000",
"cause": "transfer"
},
{
"owner": "GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3",
"account": "D9CEogjHA6CpS12F8St9zpSco7pQKJB5uR1RqDsuzQZk",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"program": "spl-token",
"decimals": 6,
"pre": "656962841913",
"post": "656987841913",
"change": "25000000",
"cause": "transfer"
}
]
}
}apiKey
type:httpApiKey
API key for authentication. Include your Datastream key in the connection URL: wss://datastream.solanatracker.io/{DATASTREAM_KEY}
Subscribe to token transfers
type:object
Unsubscribe from token transfers
type:object
Token transfers notification
type:object
¿Esta página le ayudó?