Traxer API v1
Start here
Base URL https://api.167-233-227-39.sslip.io. Everything is JSON over HTTPS except the stream, which is a WebSocket. There is no SDK to install and nothing to configure: a key is a bearer token.
The data behind every route is one ingest — a dedicated subscription to fomo's on-chain marker jitodontfront1111111111111111111TradeonFomo, classified by the same code that fires the bot's alerts. Failed transactions are filtered server-side. The raw trade window is 7 days; the wallet rollups are kept indefinitely.
curl -s https://api.167-233-227-39.sslip.io/v1/status
Auth
Send your key as a bearer token. Keys look like trx_ plus 32 random bytes and are stored hashed — we cannot show you a key again after it is issued, only replace it.
Authorization: Bearer trx_…on every request exceptGET /v1/status.- Browsers cannot set headers on a WebSocket, so
/v1/streamalso accepts?key=trx_…. Treat that URL as a secret. - Keys are issued in the Telegram bot. A bot account's key is metered but not charged while free-for-bot-users is on.
Credits & headers
Credits are charged per response, on the way out, in the same database transaction that records the request — so a crash can neither lose a charge nor apply it twice. Reads that return nothing still cost their minimum.
| Header | On | Meaning |
|---|---|---|
| X-Credits-Remaining | every keyed response | Balance after this call. |
| X-Credits-Cost | every keyed response | What this call cost. |
| X-Request-Id | every response | Quote it at us when something looks wrong. |
| Idempotency-Key | request | Optional. Same key, same charge, once. |
| Retry-After | 429 | Seconds until the bucket refills. |
Errors
Errors are JSON, with a stable error slug and a human message. Nothing internal — no file paths, no key material — ever appears in an error body.
| Status | When |
|---|---|
| 400 | Bad chain, malformed signature or address, unparseable query. |
| 401 | Missing, malformed, revoked or unknown key. |
| 402 | Out of credits. The body carries a top-up link; the socket closes with 4402. |
| 404 | No such route. |
| 429 | Rate limited. Back off by Retry-After. |
| 503 | Ingest unavailable. GET /v1/status says why, honestly. |
Rate limits
A token bucket per key, independent of credits: 5 requests per second, burst 20, and up to 4 concurrent sockets per key. There is also a global ceiling, because the alert path for bot users always outranks the API — that is the promise that keeps the latency figure on the front page true.
Routes
GET /v1/fomo/check/{chain}/{sig} 1 credit
The oracle. We answer from our own classified ingest, not from a directory: if the transaction carries the fomo marker we saw it land. Absence is reported honestly — outside the 7-day raw window the row is pruned, and the response says so instead of returning a confident false.
| Parameter | Meaning |
|---|---|
| chain | sol or rh. |
| sig | Transaction signature (Solana) or hash (Robinhood Chain). |
SIG=3N1AkjrY7cWU5VK87AvpBAKPW8Lv8VBX6pZqWJcExcCbvX3YgWM2wWMc3tVBpNuoTHMbz21sp6njeR2FwpvsMYVu
curl -s https://api.167-233-227-39.sslip.io/v1/fomo/check/sol/$SIG \
-H "Authorization: Bearer $TRAXER_KEY"
{
"data": {
"chain": "sol",
"sig": "3N1Akjr…vsMYVu",
"fomo": true,
"trade": {
"wallet": "9BvPQTeipmg7UZvBtknQkadPdgZ5ekyWVPg1LrSbTYP8",
"side": "buy",
"mint": "7dinxiqEhbP3…",
"token_amount": "3121406509430",
"quote_amount": "100000000",
"quote_symbol": "USDC",
"venue": "fomo",
"slot": 371482996,
"ts": 1788358846,
"wallet_identity": {
"name": "EZMONEY",
"source": "onchain",
"verified": true
}
},
"window_days": 7,
"note": "This transaction carries the fomo marker and was classified by our own ingest."
}
}
GET /v1/fomo/trades 1 credit / 100 rows
The same rows the live socket delivers, kept for a rolling 7-day window and paged with an opaque cursor. Filter by chain, wallet, mint or side.
| Parameter | Meaning |
|---|---|
| chain | sol or rh. Optional; omit for both. |
| wallet | Only trades by this address. |
| mint | Only trades in this token. |
| side | buy or sell. |
| limit | Rows per page, up to 500. Default 100. |
| cursor | next_cursor from the previous page. |
curl -s "https://api.167-233-227-39.sslip.io/v1/fomo/trades?chain=sol&side=buy&limit=100" \
-H "Authorization: Bearer $TRAXER_KEY"
{
"data": [
{ "chain": "sol", "sig": "5iVykC7b…", "ts": 1788358851, "wallet": "51cWoZjP…",
"side": "sell", "mint": "6NwarBvDkXhB…", "quote_amount": "4208849",
"quote_symbol": "USDC", "venue": "fomo", "wallet_identity": null }
],
"next_cursor": "eyJ0cyI6MTc4ODM1ODg1MSwiaWQiOjkxMjMzfQ",
"window_days": 7
}
GET /v1/fomo/wallets 2 credits
A leaderboard nobody licensed to us. Realised PnL, volume, win rate and distinct tokens per wallet, rolled up inside the ingest transaction as the trades land. Wallets we can name are named; wallets we cannot are shown as addresses rather than guessed at.
| Parameter | Meaning |
|---|---|
| chain | sol or rh. |
| window | 24h, 7d, 30d or all. Default 7d. |
| sort | realized, volume or trades. Default realized. |
| limit | Rows per page, up to 500. Default 50. |
curl -s "https://api.167-233-227-39.sslip.io/v1/fomo/wallets?window=7d&sort=realized&limit=25" \
-H "Authorization: Bearer $TRAXER_KEY"
{
"data": [
{ "chain": "sol", "wallet": "5FGoPPj1…", "trades": 412, "volume_quote": "1840233.11",
"realized_quote": "214880.42", "wins": 233, "losses": 179, "distinct_mints": 96,
"identity": { "name": "EZMONEY", "source": "onchain", "verified": true } }
],
"window": "7d"
}
GET /v1/wallets/{chain}/{address} 2 credits
Everything we know about a single address, from our own trade history: open positions with average cost, realised and unrealised quote PnL, and the last trades. Works for any address we have seen, not only for wallets attached to a name.
| Parameter | Meaning |
|---|---|
| chain | sol or rh. |
| address | The wallet. |
| window | 24h, 7d, 30d or all. Default 30d. |
curl -s https://api.167-233-227-39.sslip.io/v1/wallets/sol/5FGoPPj1uThyzYbSKPRLnwYFHTvDsy4dEA4MjMPMScHu \
-H "Authorization: Bearer $TRAXER_KEY"
{
"data": {
"chain": "sol",
"wallet": "5FGoPPj1…",
"window": "30d",
"stats": { "trades": 1841, "volume_quote": "7412990.03",
"realized_quote": "512004.88", "wins": 902, "losses": 939 },
"positions": [
{ "mint": "7dinxiqEhbP3…", "token_amount": "3121406509430",
"avg_cost_quote": "0.0000318", "unrealized_quote": "1204.55" }
],
"trades": [ { "sig": "3N1Akjr…", "side": "buy", "ts": 1788358846 } ],
"identity": null
}
}
WSS /v1/stream 1 credit / 100 frames
One socket, one JSON frame per classified trade, same shape as a /v1/fomo/trades row. Subscribe to a chain, a wallet set or a mint set. Browsers cannot set headers on a WebSocket, so the key may ride as ?key=. A key that runs out is closed with code 4402 rather than left hanging.
| Parameter | Meaning |
|---|---|
| key | Your key, when a header is impossible (browsers). |
| chain | sol, rh, or omit for both. |
| wallet | Repeatable. Only these wallets. |
| mint | Repeatable. Only these tokens. |
websocat "wss://api.167-233-227-39.sslip.io/v1/stream?chain=sol&key=$TRAXER_KEY"
{"type":"trade","data":{"chain":"sol","sig":"5iVykC7b…","ts":1788358851,
"wallet":"51cWoZjP…","side":"buy","mint":"6NwarBvDkXhB…",
"quote_amount":"4208849","quote_symbol":"USDC","venue":"fomo"}}
GET /v1/status free
Public and free, because the freshness claim should be checkable by someone who has not paid us anything. Reports ingest health, trade counts and the rolling latency window that the headline figure above is read from.
curl -s https://api.167-233-227-39.sslip.io/v1/status
{
"status": "ok",
"version": { "service": "0.1.0", "api": "v1" },
"latency": { "samples": 2048, "p50_ms": 412, "p99_ms": 1180,
"max_ms": 2604, "window_s": 300,
"basis": "block time to socket delivery" },
"ingest": { "available": true, "last_trade_age_s": 0,
"trades_1m": 441, "trades_1h": 26480,
"stream_subscribers": 3 },
"notes": []
}
Identity policy
Every identity field carries source and verified. We return identity that we proved on chain ourselves or that you supplied. We never return identity sourced from a third-party fomo directory — that licence is theirs, not ours to resell — and an unverified link comes back as verified: false rather than being quietly upgraded.
On Robinhood Chain a fomo tag is proof when present and not proof of absence when missing: some routes emit no integrator tag at all. We attribute by wallet there, and say so in the response rather than overstating a venue.