Robinhood Chain
Factories, curves and pools emit onchain logs on chain 4663.
Waiting for token launches...
Read indexed PONS launches, token projections and canonical events on Robinhood Chain.
Use REST for history and SSE for live updates.
Protocol support
V1 + V2
Delivery
REST · SSE
Schema types
19
Sherwood is an independent index of PONS activity on Robinhood Chain. It turns contract logs into a consistent event schema and token snapshots. For contract state and transaction verification, use the chain and PONS v2 protocol documentation. The PONS documentation home covers the earlier V1 contracts.
Factories, curves and pools emit onchain logs on chain 4663.
Canonical events are retained; failed logs stay available for diagnosis.
Consume them over public REST and SSE endpoints.
Canonical events have a stable schema version, status and onchain cursor fields. See the event catalog for the envelope and every event type.
Base URL: https://api.sherwood.stream. Every /v1/public route is available to guests without an API key. Use the API host directly from your browser or server. The examples below use its public URL; browser requests require an origin allowed by the API's CORS configuration.
const response = await fetch("https://api.sherwood.stream/v1/public/events?type=curve.buy&limit=2");
if (!response.ok) throw new Error(await response.text());
const { data, nextCursor } = await response.json();
console.log(data, nextCursor);const response = await fetch("https://api.sherwood.stream/v1/public/launches?limit=1");
if (!response.ok) throw new Error(await response.text());
const { streamCursor } = await response.json();
const url = new URL("https://api.sherwood.stream/v1/public/stream");
url.searchParams.set("type", "token.launched");
if (streamCursor) url.searchParams.set("after", streamCursor);
const source = new EventSource(url);
source.addEventListener("token.launched", (event) => {
console.log(JSON.parse(event.data));
});
source.onerror = (error) => console.error("Stream disconnected", error);
// Call source.close() when this subscription is no longer needed.EventSource reconnects automatically. The stream example starts after the newest launch so an old event backlog does not consume the connection's event quota. The streamCursor may be null when there are no launches yet.
All routes below use GET. Append each path to https://api.sherwood.stream. JSON routes return the listed fields. For parameter schemas and full response shapes, open interactive API docs or OpenAPI JSON.
| Path | Use | Response |
|---|---|---|
/v1/public/event-types | Schema event names; some are not ingested yet | data[] |
/v1/public/events | Confirmed history by default; filters and an event cursor | data[], nextCursor |
/v1/public/launches | Newest confirmed launches; recent snapshot | data[], streamCursor |
/v1/public/tokens | Token projections, newest first | data[], nextCursor |
/v1/public/tokens/search | Search name, symbol or address with q | data[] |
/v1/public/tokens/:token | One contract address; unknown address returns data: null | data |
/v1/public/token | Configured project token and pool spot price | data |
/v1/public/stats | Indexer and token counters | data |
/v1/public/analytics | Period series and all-time totals | data |
/v1/public/analytics/launch-success | All-time launch correlations | data, computedAt |
/v1/public/images/:cid | Signed IPFS logo URL from a token response | image bytes |
/v1/public/stream | Confirmed canonical events and service updates | text/event-stream |
/images/:cid expects the signed logoProxyUrl returned with a token; a bare CID URL is not a public unsigned image endpoint.
/events is oldest first. Filter with token or comma-separated tokens, type or types, and status (confirmed, provisional, orphaned). Pass nextCursor as after with the same filters. The limit defaults to 100; the maximum accepted value is 500.
A nonempty final page can still have a cursor. Stop when the next page's data is empty.
/tokens is newest first. Pass its nextCursor as cursor; the limit defaults to 100 and accepts up to 500. Continue until the cursor is null or the next page is empty.
/launches is a recent snapshot, with limit 8 by default and 50 maximum. Its streamCursor starts SSE after the newest launch; it does not page older launches. The legacy nextCursor alias has the same value and is deprecated.
Search uses /tokens/search?q=...: query length 2–64, result limit 10 by default and 20 maximum. /analytics?period=day also accepts week, month and all; day is the default. Treat all cursors as opaque strings and URL-encode them when building a request.
/stream sends confirmed canonical events as SSE. Use the same token and event-type filters as history. Each canonical message has event (its type), id (an opaque cursor) and JSON data. Start from an after cursor; on reconnect, Last-Event-ID takes precedence. Without a cursor, the stream replays available confirmed history from the beginning.
The stream also emits indexer.status, stats.updated and token.updated service messages. These are not canonical events. A : heartbeat comment arrives every 20 seconds. The stream accepts token(s), type(s) and after; it rejects status, limit and other query parameters.
Invalid filters, limits or cursors return 400 with an error code such as invalid_cursor. A signed image request can return 403 for an invalid signature, 404 when the image is unavailable, or 502 when image gateways fail.
PONS tokens can trade on curves or pools. The current indexer scans supported factory events and V2 bonding-curve events; it does not index pool swap logs. The event names returned by /v1/public/event-types describe the schema vocabulary, not a promise that every type is produced today. The staging and production configuration uses multistack coverage for the V1 factory and both supported V2 deployments. Backfill progress determines what history is available at a given moment.
Factory launches and curve buys, sells, refunds, completion, fee sweeps and buyback locks. Factory sweep and pool-graduation events mark the transition; creator-recipient changes are also collected. These appear in event history and SSE.
The factory's launch phase is periodically reconciled into the token projection. A separate worker reads token metadata when enabled; otherwise metadata remains pending.
Uniswap V4 pool swaps after graduation, plus hook, escrow and vault events. pool.swap is not currently emitted by this indexer. Post-graduation trade history and volume are therefore absent from this API.
The active V1 factory's TokenLaunched event. It records the token, deployer, paired asset and V3 pool address. Token metadata is enriched separately when the metadata worker is enabled.
The indexer periodically calls the factory's graduationStatus(token) and updates the token's phase and threshold. This does not create a canonical graduation event.
Uniswap V3 pool swaps, including the first trade and later buys and sells. V1 trade history, volume and pool fees cannot be reconstructed from this API.