> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fomoscan.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Paging and deduplication

> Cursor paging on the feeds, and the keys to dedupe on.

The thesis and pump.fun feeds return newest first and page with a `before`
cursor.

* `before` is an item **`id`**, not a timestamp. It returns items older than
  that id. Omit it for the newest page. An unknown `before` returns `400`.
* Each page carries `hasMore` and `nextBefore`. `nextBefore` is the oldest
  item's `id`, and `null` on the last page.
* On the thesis feeds, `limit` sets rows per page, 1 to 100, default 20. The
  price is per started block of 20 requested rows. pump.fun callout pages hold
  25 and take no `limit`. `count` reports how many came back.
* A page can come back empty. Ask again on your normal interval.

```bash theme={null}
curl -s -H "Authorization: Bearer $KEY" \
  "https://api.fomoscan.sh/v2/thesis/token/So11111111111111111111111111111111111111112?limit=20&before=<nextBefore>"
```

## Dedupe keys

| Feed | Key |
| - | - |
| Trader theses | `thesisHash`, falling back to `id` when it is `null` |
| pump.fun callouts | `id` |

The same thesis can be issued again under a new `id` and a later post time.
`thesisHash` stays the same. It is built from the author, the trade, the token
and the thesis text, and is `null` when one of those is missing.

## Following a feed

Call without `before` on a timer and drop what you have seen, or hold a
[WebSocket](https://docs.fomoscan.sh/websockets/overview.md). Ask on a fixed interval of a few seconds or
more, not in a tight loop.

## Stable ids for people

Store a trader's `id`, the stable user id. Display `handle`. Handles get renamed.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.