Token activity
GET
https://fomodata.dev /v1 /tokens /{ref} /activityRecent theses, unique posters and an hourly timeline for the last 24 hours.
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.
Example request
curl 'https://fomodata.dev/v1/tokens/$RUN/activity?chain=robinhood&recent=10' \
-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. recentinteger- How many recent theses to include (1–50, default 10).
Response
200 Token activity
application/jsonTokenActivity
objectenumrequired"token_activity"tokenobjectrequired+ 5 child attributesidstringrequiredsymbolstringrequirednamestring | nullrequiredchainstringrequiredaddressstringrequired
thesis_count_1hintegerrequiredthesis_count_24hintegerrequiredunique_authors_24hintegerrequiredlast_activity_atstring (date-time) | nullrequiredtimelinearray<object>requiredHourly buckets, newest last, last 24h.+ 3 child attributesbucket_startstring (date-time)requiredthesesintegerrequiredunique_authorsintegerrequired
recent_thesesarray<Thesis>required+ 12 child attributesobjectenumrequired"thesis"idstringrequiredprofileobjectrequired+ 4 child attributesidstringrequiredhandlestringrequireddisplay_namestring | nullrequiredavatar_urlstring (uri) | nullrequired
tokenobjectrequired+ 5 child attributesidstringrequiredsymbolstringrequirednamestring | nullrequiredchainstringrequiredaddressstringrequired
textstringrequiredpublic_urlstring (uri) | nullrequiredFomo exposes no public per-thesis permalink today, so this is null unless one becomes available.likesinteger | nullrequiredrepliesinteger | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)requiredsourceenumrequiredWhere the data came from.sandbox= clearly-labelled test fixtures."fomo""sandbox"livemodebooleanrequired
metrics_scopeenumrequired"ingested"livemodebooleanrequiredcomputed_atstring (date-time)required
200 · exampleJSON
{
"object": "token_activity",
"token": {
"id": "tk_9bF2kLmQ0sVx7RtY3nHc1A",
"symbol": "$RUN",
"name": "Run",
"chain": "robinhood",
"address": "0x5a4d1f3c0f6e2b8d9a7c4e1f0b3d6a9c2e5f8a1b"
},
"thesis_count_1h": 0,
"thesis_count_24h": 0,
"unique_authors_24h": 0,
"last_activity_at": "2026-10-07T10:04:12.000Z",
"timeline": [
{
"bucket_start": "2026-10-07T10:04:12.000Z",
"theses": 0,
"unique_authors": 0
}
],
"recent_theses": [
{
"object": "thesis",
"id": "th_7Hq2LmZx9RkT4bVn0sYc3D",
"profile": {
"id": "fp_4KZq8mXw2T0aN6rB1cYd9E",
"handle": "@milo",
"display_name": "Milo",
"avatar_url": "https://example.com"
},
"token": {
"id": "tk_9bF2kLmQ0sVx7RtY3nHc1A",
"symbol": "$RUN",
"name": "Run",
"chain": "robinhood",
"address": "0x5a4d1f3c0f6e2b8d9a7c4e1f0b3d6a9c2e5f8a1b"
},
"text": "Course looks fast today. Running it back.",
"public_url": "https://example.com",
"likes": 0,
"replies": 0,
"created_at": "2026-10-07T10:04:12.000Z",
"updated_at": "2026-10-07T10:04:12.000Z",
"source": "fomo",
"livemode": true
}
],
"metrics_scope": "ingested",
"livemode": true,
"computed_at": "2026-10-07T10:04:12.000Z"
}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 |
All errors use the standard envelope. See error codes for every code value.