Finality & reorgs
Finality levels on Robinhood Chain (latest, safe, finalized), how the Crius API marks them, and how chain reorganizations are handled in REST and WebSocket.
Every event Crius returns (trades, transfers, liquidity changes) carries a finality:
| Level | When | Typical delay |
|---|---|---|
latest |
Included by the Robinhood Chain sequencer | under a second |
safe |
The batch containing it has been posted to Ethereum | minutes |
finalized |
Ethereum has finalized that batch | about 15–20 minutes more |
Every response’s meta reports the current safe_block and finalized_block, so you can tell the level of anything by its block.
Reorgs
Sequencer-ordered blocks are very rarely replaced, but it can happen. When it does:
- REST responses simply reflect the new chain: replaced events disappear and new ones appear.
- WebSocket clients receive a
reorgmessage (common_ancestor,removed_blocks,depth), then every affected event again with"removed": trueand the sameid, then the replacement events. Undo what you did for removed events byid.
If your application can’t handle reversals (accounting, payouts), only act on safe data: filter by finality=safe where an endpoint supports it, or subscribe to the stream with "finality": "safe", which holds each event until its block is safe.
Get your free Crius API key
Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.
- Robinhood Chain (4663) only, from our own archive nodes
- REST + WebSocket
- Pay on-chain or by card