Retrieve a token
GET
https://fomodata.dev /v1 /tokens /{ref}Normalized token metadata plus thesis counters. For live keys an unknown symbol is looked up once through the authorized upstream's token search.
All counts are derived from theses FomoData ingested from its authorized upstream since first_seen_at (metrics_scope: "ingested") — not Fomo's all-time totals.
Live keys read real Fomo data FomoData ingested from its authorized upstream; test keys read clearly-labelled sandbox data (livemode: false, source: "sandbox"). Objects carry updated_at / source_updated_at. When cached data is served because the upstream could not be reached, the object has stale: true.
Example request
curl 'https://fomodata.dev/v1/tokens/$RUN?chain=robinhood' \
-H "Authorization: Bearer $FOMODATA_API_KEY"Parameters
Path parameters
refstringrequired- Token reference:
tk_…id, contract/mint address,chain:address,$RUNorRUN(case-insensitive). A symbol on several chains returns 409AMBIGUOUS_TOKEN— pass?chain=or the address.
Query parameters
chainstring- Narrow to one chain, e.g.
robinhood,solana,base. Test keys:sandbox.
Response
200 The token
application/jsonToken
objectenumrequired"token"idstringrequiredsymbolstringrequirednamestring | nullrequiredchainstringrequiredchain_idinteger | nullrequiredaddressstringrequiredlogo_urlstring (uri) | nullrequiredfomo_urlstring (uri) | nullrequiredthesis_countintegerrequiredTheses FomoData has ingested for this token (see metrics_scope).unique_thesis_authorsintegerrequiredrecent_thesis_countintegerrequiredTheses in the last 24 hours.first_seen_atstring (date-time)requiredlast_activity_atstring (date-time) | nullrequiredmetrics_scopeenumrequiredCounts cover theses FomoData has observed since first_seen_at — not Fomo's all-time totals."ingested"sourceenumrequiredWhere the data came from.sandbox= clearly-labelled test fixtures."fomo""sandbox"livemodebooleanrequiredupdated_atstring (date-time)requiredsource_updated_atstring (date-time) | nullrequiredstaleboolean
200 · exampleJSON
{
"object": "token",
"id": "string",
"symbol": "$RUN",
"name": "string",
"chain": "robinhood",
"chain_id": 4663,
"address": "string",
"logo_url": "https://example.com",
"fomo_url": "https://example.com",
"thesis_count": 0,
"unique_thesis_authors": 0,
"recent_thesis_count": 0,
"first_seen_at": "2026-10-07T10:04:12.000Z",
"last_activity_at": "2026-10-07T10:04:12.000Z",
"metrics_scope": "ingested",
"source": "fomo",
"livemode": true,
"updated_at": "2026-10-07T10:04:12.000Z",
"source_updated_at": "2026-10-07T10:04:12.000Z",
"stale": true
}Errors
| Status | When |
|---|---|
401 | Missing, invalid, revoked or expired API key |
403 | Insufficient scope, live access not approved, or history limit |
404 | Not found (or feature disabled) |
409 | Conflict (e.g. ambiguous token symbol) |
422 | Validation failed |
429 | Rate limit or quota exceeded |
503 | Upstream unavailable |
All errors use the standard envelope. See error codes for every code value.