Getting Started
Ship your first request in under three minutes. Grab a key, paste a snippet, and you're streaming live Solana data.
A Solana wallet is not required. You only need a Glowstack account and
a terminal with curl, Node.js 20+, or Python 3.10+.
1. Create a key
Head to the dashboard and click Create key. Free accounts get 5,000 REST requests per day and one WebSocket subscription — plenty to prototype with.
Export it into your shell so the rest of this guide works verbatim:
export ST_KEY="st_live_••••••••••••••••"
2. Make your first request
Fetch the latest snapshot for any token by mint address or symbol.
- cURL
- TypeScript
- Python
curl https://api.glowstack.dev/v1/tokens/BONK \
-H "Authorization: Bearer $ST_KEY" \
-H "Accept: application/json"
import { Glowstack } from "@glowstack/sdk";
const sol = new Glowstack({ apiKey: process.env.ST_KEY });
const token = await sol.tokens.get("BONK");
console.log(token.price, token.mcap, token.signal);
from glowstack import Glowstack
sol = Glowstack(api_key=os.environ["ST_KEY"])
token = sol.tokens.get("BONK")
print(token.price, token.mcap, token.signal)
A successful response looks like this:
{
"mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"symbol": "BONK",
"price": 0.0000182,
"mcap": 1284500,
"holders": 4127,
"signal": "accumulation",
"updated_at": "2026-04-21T14:02:11Z"
}
3. Subscribe to the live feed
Most Glowstack users don't poll — they stream. Open one WebSocket and subscribe to the events you care about.
- TypeScript
- Python
const stream = await sol.stream({
event: "token.created",
filter: { source: "pumpfun" },
});
for await (const t of stream) {
if (t.signal === "accumulation") console.log("⚡", t.symbol);
}
async for t in sol.stream(event="token.created", source="pumpfun"):
if t.signal == "accumulation":
print("⚡", t.symbol)
See the WebSocket reference for the full subscription grammar, filter columns, and event schemas.
4. Add AI signals
AI Signals is a separate product surface that runs our models against the
live feed. You can either read signals inline on token responses (as above)
or subscribe to the dedicated signal.emitted event:
const signals = await sol.stream({ event: "signal.emitted" });
for await (const s of signals) console.log(s.type, s.confidence, s.token);
Read the full taxonomy and tuning guide in AI Signals.
5. Ship to production
Before you go live, read the short sections on:
- Authentication — key rotation, scopes, org keys
- Rate limits — per-route budgets, burst policies
- SDKs — typed responses, retry behaviour
Need help? Ping us in Discord — most questions are answered in under an hour.