API reference
27 endpoints, generated from the OpenAPI document this API publishes. A route added to the code appears here on the next deploy; one that never existed cannot appear at all.
Base and auth
Everything is under https://fletch.now/api/v1. Reads marked public need no key and are rate limited by address. The rest take a key from Settings as a bearer token, with only the scopes it was made with.
curl -H "Authorization: Bearer flk_…" https://fletch.now/api/v1/watchers
Status
Whether the registry is live and how old each figure is. Read this first when freshness matters.
- get/api/v1/chains/{chainId}/statusWhether the registry is live: the daemon's heartbeat, every job against its cadence, the scanners still reading history, and the age of every published figure
- get/api/v1/statusAlias of /chains/4663/status: whether the registry is live
Registry
Every verified asset on Robinhood Chain with its live state: addresses, multipliers, pauses, feeds, quotes, supply, holders, pools, history.
- get/api/v1/chains/{chainId}/assetsList (and optionally search) registry assets on a chain, each with its live on-chain state
- get/api/v1/chains/{chainId}/assets/{symbol}Get one registry asset by symbol, with its state, multiplier history, mints and burns, supply snapshots, corporate actions and control-plane events
- get/api/v1/chains/{chainId}/assets/{symbol}/holdersHolders largest first with share of supply and what each address is, holder count, the latest concentration reading with the shares that say where the supply sits, and whether the ledger has reached the chain head
- get/api/v1/chains/{chainId}/assets/{symbol}/activityTransfers as economics, one row per UTC day: transfers, volume, mints, burns, DvP against USDG, off-hours transfers
- get/api/v1/chains/{chainId}/assets/{symbol}/poolsPools trading the asset on every DEX the registry reads, deepest first, with venue, price, liquidity, fee, hooks, last-day swaps and volume, and the pool behind the asset's premium to the feed
- get/api/v1/chains/{chainId}/assets/{symbol}/historyOne row per UTC day of everything the registry publishes about an asset: multiplier, pause and halt flags, feed price and staleness, bid and ask, divergence, DEX price, premium and liquidity, supply, holders and lookalike count
- get/api/v1/chains/{chainId}/assets/{symbol}/feed/roundsThe Chainlink feed's round history for one asset, newest first: roundId, answer (price × multiplier, USD), startedAt, updatedAt
Changelog
Every change the daemon noticed, as JSON with a cursor and as a live stream.
- get/api/v1/chains/{chainId}/eventsThe registry changelog: every pause, block, upgrade, multiplier change, stale feed, supply residual, listing, corporate action and chain status change the daemon recorded
- get/api/v1/chains/{chainId}/events/streamThe same changelog as Server-Sent Events; each frame's id is the event's cursor (`${observedAt}|${id}`), so Last-Event-ID (or ?since=) resumes without gaps
Chain
The issuer's control plane, the token bridge, the issuer's paperwork, lookalike tokens, DEX venues and chain health.
- get/api/v1/chains/{chainId}/control-planeThe issuer's AccessControlsRegistry: paused, implementation, blocked-address count, and its latest events
- get/api/v1/chains/{chainId}/healthThe chain's latest vital signs: head, block time, base fee, L1 block, batch count, delayed messages, batch-poster balance, status page
- get/api/v1/chains/{chainId}/corporate-actionsCorporate actions in progress, as Robinhood publishes them, tied to the token each affects
- get/api/v1/chains/{chainId}/dexThe DEX venues the registry reads and what each contributes: pools trading a listed asset, how many carry a dollar price, the last day's swaps and volume, and how many assets take their premium from a pool there
- get/api/v1/chains/{chainId}/bridgeThe token bridge: each bridged asset's L1 escrow against its L2 supply, recent deposits and withdrawals seen on L2, and withdrawals past their seven-day window
- get/api/v1/chains/{chainId}/issuerThe issuer's paperwork: every PDF the legal hub lists with ETag, Last-Modified and the token it maps to, plus watched pages and when their text changed
- get/api/v1/chains/{chainId}/lookalikesEvery ERC-20 that borrows a listed ticker or exact name at another address, with holders and the beacon check that separates an impostor from an issuer-deployed token
Watch
Watchers that alert on transfers and authority events, delivered to Telegram or a signed webhook. Needs a key.
- get/api/v1/watcherskeyList this account's watchers
- get/api/v1/watchers/{id}keyGet one watcher
- get/api/v1/watchers/{id}/runskeyA watcher's delivery history
- get/api/v1/webhookskeyList this account's webhook endpoints
Build
Builds and projects. Needs a key.
- get/api/v1/projectskeyList this account's projects
- get/api/v1/builds/{id}keyGet one build's status, contracts, and toolchain report
Chains
The networks Fletch knows.
- get/api/v1/chainsList Robinhood Chain networks
- get/api/v1/tokens/{address}What a token at an address is: listed and confirmed, listed and unconfirmed, impersonating a listed asset, a community token nobody has vouched for, or unreadable
- get/api/v1/chains/{chainId}/dex/poolsEvery pool on every DEX the registry reads, listed and community alike, one page at a time: the pair, the priced side, price, depth, the last day's swaps and volume, and FDV for an unlisted token
Reading the answers
A null is a figure nobody has read, never a zero. Every response that carries figures also carries when each group of them was last read, so an agent can judge staleness without guessing.
Each 200 carries an ETag and a Cache-Control that follows the job writing the data. Send If-None-Match and an unchanged answer is a 304 with no body.