TraxerAPI

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.

free, no key
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 except GET /v1/status.
  • Browsers cannot set headers on a WebSocket, so /v1/stream also 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.

HeaderOnMeaning
X-Credits-Remainingevery keyed responseBalance after this call.
X-Credits-Costevery keyed responseWhat this call cost.
X-Request-Idevery responseQuote it at us when something looks wrong.
Idempotency-KeyrequestOptional. Same key, same charge, once.
Retry-After429Seconds 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.

StatusWhen
400Bad chain, malformed signature or address, unparseable query.
401Missing, malformed, revoked or unknown key.
402Out of credits. The body carries a top-up link; the socket closes with 4402.
404No such route.
429Rate limited. Back off by Retry-After.
503Ingest 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.

ParameterMeaning
chainsol or rh.
sigTransaction signature (Solana) or hash (Robinhood Chain).
GET /v1/fomo/check/{chain}/{sig}
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.

ParameterMeaning
chainsol or rh. Optional; omit for both.
walletOnly trades by this address.
mintOnly trades in this token.
sidebuy or sell.
limitRows per page, up to 500. Default 100.
cursornext_cursor from the previous page.
GET /v1/fomo/trades
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.

ParameterMeaning
chainsol or rh.
window24h, 7d, 30d or all. Default 7d.
sortrealized, volume or trades. Default realized.
limitRows per page, up to 500. Default 50.
GET /v1/fomo/wallets
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.

ParameterMeaning
chainsol or rh.
addressThe wallet.
window24h, 7d, 30d or all. Default 30d.
GET /v1/wallets/{chain}/{address}
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.

ParameterMeaning
keyYour key, when a header is impossible (browsers).
chainsol, rh, or omit for both.
walletRepeatable. Only these wallets.
mintRepeatable. Only these tokens.
WSS /v1/stream
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.

GET /v1/status
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.