> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Recibir lanzamientos y graduaciones de tokens Solana

> Suscríbete a nuevos tokens, hitos de curvas, graduaciones y cambios de metadatos con Datastream.

Usa `latest` para nuevos tokens y pools indexados, `graduating` para curvas próximas a completarse y `graduated` para migraciones.

<Info>
  **URL:** `wss://datastream.solanatracker.io/{apiKey}`\
  Disponible en los planes Premium, Business y Enterprise.
</Info>

## Nuevos tokens

Suscríbete a `latest` para recibir cada nuevo token y pool en el momento en que se crea en Solana.

```javascript theme={null}
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");

ws.onopen = () => {
  ws.send(JSON.stringify({ type: "join", room: "latest" }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type !== "message") return;

  const { token, pools } = msg.data;
  console.log(`New: ${token.name} (${token.symbol})`);
  console.log(`  Mint: ${token.mint}`);
  console.log(`  Created on: ${token.createdOn}`);
  console.log(`  Pool: ${pools[0]?.poolId}`);
  console.log(`  Deployer: ${pools[0]?.deployer}`);
};
```

**El payload incluye:**

* Metadatos del token (nombre, símbolo, mint, imagen, descripción, socials)
* Detalles del pool (DEX, liquidez, precio inicial, market cap)
* Información de creación (wallet del creador, tx de creación, timestamp)

## Tokens en graduación

Suscríbete a `graduating` para ver tokens que se aproximan a completar la bonding curve (85–100%). Una bonding curve es la trayectoria de precios que sigue un token de lanzamiento antes de pasar a un pool DEX normal.

```javascript theme={null}
ws.send(JSON.stringify({ type: "join", room: "graduating" }));

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type !== "message") return;

  const { token, pools } = msg.data;
  const curve = pools[0]?.curvePercentage;
  console.log(`Graduating: ${token.name} — ${curve}% curve`);
  console.log(`  MC: $${pools[0]?.marketCap?.usd?.toLocaleString()}`);
};
```

### Filtrar por mercado y umbral de SOL

Acota los tokens en graduación por mercado y SOL mínimo en la curva:

```javascript theme={null}
// Only pump.fun tokens with at least 50 SOL
ws.send(JSON.stringify({ type: "join", room: "graduating:pumpfun:50" }));

// Only launchpad tokens with at least 100 SOL
ws.send(JSON.stringify({ type: "join", room: "graduating:launchpad:100" }));
```

## Tokens graduados

Suscríbete a `graduated` para recibir una notificación en el momento en que un token completa su bonding curve y migra a un pool DEX.

```javascript theme={null}
ws.send(JSON.stringify({ type: "join", room: "graduated" }));

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type !== "message") return;

  const { token, pools } = msg.data;
  console.log(`Graduated: ${token.name}`);
  console.log(`  New pool: ${pools[0]?.poolId}`);
  console.log(`  Liquidity: $${pools[0]?.liquidity?.usd?.toLocaleString()}`);
};
```

## Alertas por porcentaje de curva

Suscríbete a `{market}:curve:{percentage}` para recibir una alerta cuando cualquier token en un mercado específico alcance un hito de bonding curve.

Mercados soportados: `pumpfun`, `launchpad`, `boop`, `meteora-curve`.

```javascript theme={null}
// Alert when pump.fun tokens hit 30% curve
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:30" }));

// Alert at 50%
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:50" }));

// Alert at 80%
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:80" }));
```

Estrategia de ejemplo: vigila al 30% para señales tempranas y avisa con más fuerza al 80% o más.

## Cambios de metadatos del token

Suscríbete a `metadata:{tokenAddress}` para recibir notificaciones cuando un token actualice sus metadatos (nombre, imagen, socials, etc.):

```javascript theme={null}
ws.send(JSON.stringify({ type: "join", room: `metadata:${token}` }));
```

## Ejemplo: escáner de nuevos tokens

Construye un feed en vivo que filtra nuevos tokens por criterios:

```javascript theme={null}
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");

ws.onopen = () => {
  ws.send(JSON.stringify({ type: "join", room: "latest" }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type !== "message") return;

  const { token, pools } = msg.data;
  const pool = pools[0];
  if (!pool) return;

  // Filter: only tokens with socials and decent liquidity
  const hasSocials = token.strictSocials?.twitter || token.strictSocials?.telegram;
  const hasLiquidity = pool.liquidity?.usd > 1000;

  if (hasSocials && hasLiquidity) {
    console.log(`✓ ${token.name} (${token.symbol})`);
    console.log(`  MC: $${pool.marketCap?.usd?.toLocaleString()}`);
    console.log(`  Liq: $${pool.liquidity?.usd?.toLocaleString()}`);
    console.log(`  Twitter: ${token.strictSocials?.twitter || "—"}`);
  }
};
```

## Ejemplo: pipeline de graduación

Sigue tokens a lo largo de todo su ciclo de vida:

```javascript theme={null}
const ws = new WebSocket("wss://datastream.solanatracker.io/YOUR_API_KEY");

ws.onopen = () => {
  // Watch the full pipeline
  ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:50" }));
  ws.send(JSON.stringify({ type: "join", room: "graduating" }));
  ws.send(JSON.stringify({ type: "join", room: "graduated" }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type !== "message") return;

  const room = msg.room;
  const name = msg.data?.token?.name || "Unknown";

  if (room?.includes("curve:")) {
    console.log(`[50% CURVE] ${name} — halfway through bonding curve`);
  } else if (room === "graduating") {
    console.log(`[GRADUATING] ${name} — approaching completion`);
  } else if (room === "graduated") {
    console.log(`[GRADUATED] ${name} — now on DEX`);
  }
};
```

## Referencia de salas

| Sala | Lo que obtienes |
| - | - |
| `latest` | Cada nuevo token/pool creado |
| `graduating` | Tokens que se aproximan a completar la curva |
| `graduating:{market}:{sol}` | Filtrado por mercado y umbral de SOL |
| `graduated` | Tokens que acaban de pasar a DEX |
| `{market}:curve:{pct}` | Tokens que alcanzan un hito de porcentaje de curva |
| `metadata:{token}` | Cambios de metadatos |

<CardGroup cols={2}>
  <Card title="Descubrir tokens" href="/es/guides/token-discovery">
    Endpoints REST para tendencias, líderes de volumen y mejores rendimientos.
  </Card>

  <Card title="Riesgo en vivo" href="/es/guides/datastream-safety">
    Sigue snipers, bundlers, insiders y cambios de holders en tiempo real.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.