Skip to content
API reference · Theses

List theses

GEThttps://fomodata.dev/v1/theses
Scopes:theses:readRate class:standardFlag:THESES_API_ENABLED

Trade Theses from FomoData's index, newest first by default. Combine filters freely.

Queries are limited to your plan's history window: an explicit lower bound earlier than that returns 403 HISTORY_LIMIT; without one, results are implicitly limited to the window.

Live keys read real Fomo data FomoData ingested from its authorized upstream; test keys read clearly-labelled sandbox data (livemode: false, source: "sandbox").

Example request

curl 'https://fomodata.dev/v1/theses?handle=@milo&token=$RUN&chain=robinhood&since=1h&sort=created_at_desc' \
  -H "Authorization: Bearer $FOMODATA_API_KEY"

Parameters

Query parameters
profilestring
Profile reference: fp_…, @handle or Fomo user id.
handlestring
Author handle, with or without @.
tokenstring
Token reference: tk_…, address, chain:address, $RUN or RUN. A symbol matches every token with that symbol unless chain narrows it.
chainstring
Narrow to one chain, e.g. robinhood, solana, base. Test keys: sandbox.
created_afterstring
ISO-8601 lower bound (inclusive).
created_beforestring
ISO-8601 upper bound (inclusive).
sincestring
Relative lower bound: 90s, 30m, 1h, 7d. Combined with created_after, the later bound wins.
sortenum
Sort order (default created_at_desc).created_at_desccreated_at_asclikes_desc
limitinteger
Page size, 1–100 (default 25).
cursorstring
Opaque next_cursor from the previous page.

Response

200 A page of theses

application/jsonThesisList
  • objectenumrequired"list"
  • dataarray<Thesis>required+ 12 child attributes
    • objectenumrequired"thesis"
    • idstringrequired
    • profileobjectrequired+ 4 child attributes
      • idstringrequired
      • handlestringrequired
      • display_namestring | nullrequired
      • avatar_urlstring (uri) | nullrequired
    • tokenobjectrequired+ 5 child attributes
      • idstringrequired
      • symbolstringrequired
      • namestring | nullrequired
      • chainstringrequired
      • addressstringrequired
    • textstringrequired
    • public_urlstring (uri) | nullrequiredFomo exposes no public per-thesis permalink today, so this is null unless one becomes available.
    • likesinteger | nullrequired
    • repliesinteger | nullrequired
    • created_atstring (date-time)required
    • updated_atstring (date-time)required
    • sourceenumrequiredWhere the data came from. sandbox = clearly-labelled test fixtures."fomo""sandbox"
    • livemodebooleanrequired
  • next_cursorstring | nullrequired
  • has_morebooleanrequired
200 · example
{
  "object": "list",
  "data": [
    {
      "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
    }
  ],
  "next_cursor": "string",
  "has_more": true
}

Errors

StatusWhen
400Bad request
401Missing, invalid, revoked or expired API key
403Insufficient scope, live access not approved, or history limit
404Not found (or feature disabled)
422Validation failed
429Rate limit or quota exceeded

All errors use the standard envelope. See error codes for every code value.