Skip to content
Data

Tokens

Token metadata, activity and thesis velocity.

Tokens are normalized with stable ids (tk_…) across chains. Alongside metadata, FomoData derives activity metrics from the theses it has ingested: counts, unique authors, hourly timelines and thesis velocity.

Token references

Anywhere a token is accepted (path, filters, verification) you can pass any of these forms:

FormExampleNotes
FomoData idtk_9bF2kLmQ0sVx7RtY3nHc1AExact.
Symbol$RUNCase-insensitive; $ optional (RUN works). Sandbox tokens live on the chain sandbox.
Address0x5a4d…8a1bEVM addresses are case-insensitive; Solana mints are exact.
Chain + addressrobinhood:0x5a4d…8a1bUnambiguous across chains.

If a symbol matches tokens on more than one chain, the API returns 409 AMBIGUOUS_TOKEN with the candidates in error.details. Add ?chain=robinhood or use an id or address.

{
  "error": {
    "type": "conflict",
    "code": "AMBIGUOUS_TOKEN",
    "message": "More than one token matches that symbol. Pass a chain or use the token id/address.",
    "request_id": "req_6Yq1Hn0bVx3LmT8sRk2Wc4",
    "details": {
      "candidates": [
        {
          "id": "tk_9bF2kLmQ0sVx7RtY3nHc1A",
          "symbol": "$RUN",
          "chain": "robinhood"
        },
        {
          "id": "tk_1cD4eFgH5iJ6kL7mN8oP9Q",
          "symbol": "$RUN",
          "chain": "solana"
        }
      ]
    },
    "doc_url": "https://fomodata.dev/docs/errors#ambiguous_token"
  }
}

The token object

idstring
Stable id (tk_…).
symbolstring
With a leading $, e.g. $RUN.
namestring | null
Token name.
chain · chain_idstring · integer | null
e.g. robinhood · 4663.
addressstring
Contract address or mint.
logo_url · fomo_urlstring | null
Public logo and Fomo token page, when known.
thesis_countinteger
Theses FomoData has ingested for this token. See metrics_scope.
unique_thesis_authorsinteger
Distinct authors among ingested theses.
recent_thesis_countinteger
Theses in the last 24 hours.
first_seen_at · last_activity_attimestamp
First observation and latest thesis.
metrics_scope"ingested"
Counts cover theses FomoData has observed since first_seen_at, not Fomo's all-time totals.
source · livemode · updated_at · source_updated_at · stale
Provenance and freshness, as on every object.

Retrieve a token

GET/v1/tokens/{ref}
const token = await fomo.tokens.get("$RUN");

Token activity

Recent theses, unique authors and an hourly timeline for the last 24 hours. Pass ?recent= (1–50, default 10) to control how many recent theses are embedded.

GET/v1/tokens/{ref}/activity
const activity = await fomo.tokens.activity("$RUN");

Thesis velocity

How fast theses are arriving: last 5 minutes, last hour, the hour before, and the change. change_pct is null when the previous hour had no theses. Derived only from authorized thesis events.

GET/v1/tokens/{ref}/thesis-velocity
const v = await fomo.tokens.velocity("$RUN");
if (v.change_pct !== null && v.change_pct > 100) alert("$RUN is heating up");

Prefer events for realtime

Polling velocity is fine for dashboards. For alerts, subscribe to token.activity (at most once a minute per token) or token.thesis_velocity (every 5 minutes for active tokens, only when the value changed) over streams or webhooks.